Migrate more tests from `litetest` to `package:test` (#55119)
Partial work towards https://github.com/flutter/flutter/issues/133569.
Commentary on removal of `assert`-conditionals here: https://github.com/flutter/flutter/issues/155054.
diff --git a/flutter_frontend_server/test/to_string_test.dart b/flutter_frontend_server/test/to_string_test.dart
index fc21f4c..770f586 100644
--- a/flutter_frontend_server/test/to_string_test.dart
+++ b/flutter_frontend_server/test/to_string_test.dart
@@ -10,10 +10,10 @@
void main() {
final engine = Engine.findWithin();
- final manualBuildDir = io.Platform.environment['ENGINE_BUILD_DIR'];
+ final manualBuildDir = io.Platform.environment['FLUTTER_BUILD_DIRECTORY'];
final buildDir = manualBuildDir ?? engine.latestOutput()?.path.path;
if (buildDir == null) {
- fail('No build directory found. Set ENGINE_BUILD_DIR');
+ fail('No build directory found. Set FLUTTER_BUILD_DIRECTORY');
}
final frontendServer = path.join(
buildDir,
diff --git a/testing/dart/canvas_test.dart b/testing/dart/canvas_test.dart
index 8bc207a..79dd777 100644
--- a/testing/dart/canvas_test.dart
+++ b/testing/dart/canvas_test.dart
@@ -8,8 +8,8 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
import 'package:vector_math/vector_math_64.dart';
import 'goldens.dart';
@@ -189,7 +189,10 @@
canvas.drawRawAtlas(image, Float32List(0), Float32List(0), Int32List(0), BlendMode.src, null, paint);
canvas.drawRawAtlas(image, Float32List(0), Float32List(0), null, null, rect, paint);
- expectAssertion(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect], <Color>[color], null, rect, paint));
+ expect(
+ () => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect], <Color>[color], null, rect, paint),
+ throwsA(isA<AssertionError>()),
+ );
});
test('Data lengths must match for drawAtlas methods', () async {
@@ -208,15 +211,15 @@
canvas.drawRawAtlas(image, Float32List(4), Float32List(4), Int32List(1), BlendMode.src, rect, paint);
canvas.drawRawAtlas(image, Float32List(4), Float32List(4), null, null, rect, paint);
- expectArgumentError(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[], <Color>[color], BlendMode.src, rect, paint));
- expectArgumentError(() => canvas.drawAtlas(image, <RSTransform>[], <Rect>[rect], <Color>[color], BlendMode.src, rect, paint));
- expectArgumentError(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect], <Color>[color, color], BlendMode.src, rect, paint));
- expectArgumentError(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect, rect], <Color>[color], BlendMode.src, rect, paint));
- expectArgumentError(() => canvas.drawAtlas(image, <RSTransform>[transform, transform], <Rect>[rect], <Color>[color], BlendMode.src, rect, paint));
- expectArgumentError(() => canvas.drawRawAtlas(image, Float32List(3), Float32List(3), null, null, rect, paint));
- expectArgumentError(() => canvas.drawRawAtlas(image, Float32List(4), Float32List(0), null, null, rect, paint));
- expectArgumentError(() => canvas.drawRawAtlas(image, Float32List(0), Float32List(4), null, null, rect, paint));
- expectArgumentError(() => canvas.drawRawAtlas(image, Float32List(4), Float32List(4), Int32List(2), BlendMode.src, rect, paint));
+ expect(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[], <Color>[color], BlendMode.src, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawAtlas(image, <RSTransform>[], <Rect>[rect], <Color>[color], BlendMode.src, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect], <Color>[color, color], BlendMode.src, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawAtlas(image, <RSTransform>[transform], <Rect>[rect, rect], <Color>[color], BlendMode.src, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawAtlas(image, <RSTransform>[transform, transform], <Rect>[rect], <Color>[color], BlendMode.src, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawRawAtlas(image, Float32List(3), Float32List(3), null, null, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawRawAtlas(image, Float32List(4), Float32List(0), null, null, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawRawAtlas(image, Float32List(0), Float32List(4), null, null, rect, paint), throwsArgumentError);
+ expect(() => canvas.drawRawAtlas(image, Float32List(4), Float32List(4), Int32List(2), BlendMode.src, rect, paint), throwsArgumentError);
});
test('Canvas preserves perspective data in Matrix4', () async {
@@ -489,7 +492,7 @@
final ByteData dataSync = await drawOnCanvas(toImageImage);
final ByteData data = await drawOnCanvas(toImageSyncImage);
- expect(data, listEquals(dataSync));
+ expect(data.buffer.asUint8List(), equals(dataSync.buffer.asUint8List()));
});
test('Canvas.drawParagraph throws when Paragraph.layout was not called', () async {
@@ -646,39 +649,6 @@
await comparer.addGoldenImage(image, 'render_unordered_rects.png');
});
- Matcher closeToTransform(Float64List expected) => (dynamic v) {
- Expect.type<Float64List>(v);
- final Float64List value = v as Float64List;
- expect(expected.length, equals(16));
- expect(value.length, equals(16));
- for (int r = 0; r < 4; r++) {
- for (int c = 0; c < 4; c++) {
- final double vActual = value[r*4 + c];
- final double vExpected = expected[r*4 + c];
- if ((vActual - vExpected).abs() > 1e-10) {
- Expect.fail('matrix mismatch at $r, $c, $vActual not close to $vExpected');
- }
- }
- }
- };
-
- Matcher notCloseToTransform(Float64List expected) => (dynamic v) {
- Expect.type<Float64List>(v);
- final Float64List value = v as Float64List;
- expect(expected.length, equals(16));
- expect(value.length, equals(16));
- for (int r = 0; r < 4; r++) {
- for (int c = 0; c < 4; c++) {
- final double vActual = value[r*4 + c];
- final double vExpected = expected[r*4 + c];
- if ((vActual - vExpected).abs() > 1e-10) {
- return;
- }
- }
- }
- Expect.fail('$value is too close to $expected');
- };
-
test('Canvas.translate affects canvas.getTransform', () async {
final PictureRecorder recorder = PictureRecorder();
final Canvas canvas = Canvas(recorder);
@@ -688,7 +658,7 @@
expect(curMatrix, closeToTransform(matrix));
canvas.translate(10, 10);
final Float64List newCurMatrix = canvas.getTransform();
- expect(newCurMatrix, notCloseToTransform(matrix));
+ expect(newCurMatrix, isNot(closeToTransform(matrix)));
expect(curMatrix, closeToTransform(matrix));
});
@@ -701,7 +671,7 @@
expect(curMatrix, closeToTransform(matrix));
canvas.scale(10, 10);
final Float64List newCurMatrix = canvas.getTransform();
- expect(newCurMatrix, notCloseToTransform(matrix));
+ expect(newCurMatrix, isNot(closeToTransform(matrix)));
expect(curMatrix, closeToTransform(matrix));
});
@@ -714,7 +684,7 @@
expect(curMatrix, closeToTransform(matrix));
canvas.rotate(pi / 2);
final Float64List newCurMatrix = canvas.getTransform();
- expect(newCurMatrix, notCloseToTransform(matrix));
+ expect(newCurMatrix, isNot(closeToTransform(matrix)));
expect(curMatrix, closeToTransform(matrix));
});
@@ -727,7 +697,7 @@
expect(curMatrix, closeToTransform(matrix));
canvas.skew(10, 10);
final Float64List newCurMatrix = canvas.getTransform();
- expect(newCurMatrix, notCloseToTransform(matrix));
+ expect(newCurMatrix, isNot(closeToTransform(matrix)));
expect(curMatrix, closeToTransform(matrix));
});
@@ -740,31 +710,10 @@
expect(curMatrix, closeToTransform(matrix));
canvas.translate(10, 10);
final Float64List newCurMatrix = canvas.getTransform();
- expect(newCurMatrix, notCloseToTransform(matrix));
+ expect(newCurMatrix, isNot(closeToTransform(matrix)));
expect(curMatrix, closeToTransform(matrix));
});
- Matcher closeToRect(Rect expected) => (dynamic v) {
- Expect.type<Rect>(v);
- final Rect value = v as Rect;
- expect(value.left, closeTo(expected.left, 1e-6));
- expect(value.top, closeTo(expected.top, 1e-6));
- expect(value.right, closeTo(expected.right, 1e-6));
- expect(value.bottom, closeTo(expected.bottom, 1e-6));
- };
-
- Matcher notCloseToRect(Rect expected) => (dynamic v) {
- Expect.type<Rect>(v);
- final Rect value = v as Rect;
- if ((value.left - expected.left).abs() > 1e-6 ||
- (value.top - expected.top).abs() > 1e-6 ||
- (value.right - expected.right).abs() > 1e-6 ||
- (value.bottom - expected.bottom).abs() > 1e-6) {
- return;
- }
- Expect.fail('$value is too close to $expected');
- };
-
test('Canvas.clipRect affects canvas.getClipBounds', () async {
void testRect(Rect clipRect, bool doAA) {
final PictureRecorder recorder = PictureRecorder();
@@ -798,8 +747,8 @@
canvas.save();
canvas.clipRect(const Rect.fromLTRB(0, 0, 15, 15));
// Both clip bounds have changed
- expect(canvas.getLocalClipBounds(), notCloseToRect(clipExpandedBounds));
- expect(canvas.getDestinationClipBounds(), notCloseToRect(clipExpandedBounds));
+ expect(canvas.getLocalClipBounds(), isNot(closeToRect(clipExpandedBounds)));
+ expect(canvas.getDestinationClipBounds(), isNot(closeToRect(clipExpandedBounds)));
// Previous return values have not changed
expect(initialLocalBounds, closeToRect(clipExpandedBounds));
expect(initialDestinationBounds, closeToRect(clipExpandedBounds));
@@ -881,8 +830,8 @@
canvas.save();
canvas.clipRect(const Rect.fromLTRB(0, 0, 15, 15));
// Both clip bounds have changed
- expect(canvas.getLocalClipBounds(), notCloseToRect(clipExpandedBounds));
- expect(canvas.getDestinationClipBounds(), notCloseToRect(clipExpandedBounds));
+ expect(canvas.getLocalClipBounds(), isNot(closeToRect(clipExpandedBounds)));
+ expect(canvas.getDestinationClipBounds(), isNot(closeToRect(clipExpandedBounds)));
// Previous return values have not changed
expect(initialLocalBounds, closeToRect(clipExpandedBounds));
expect(initialDestinationBounds, closeToRect(clipExpandedBounds));
@@ -921,8 +870,8 @@
canvas.save();
canvas.clipRect(const Rect.fromLTRB(0, 0, 15, 15), doAntiAlias: false);
// Both clip bounds have changed
- expect(canvas.getLocalClipBounds(), notCloseToRect(clipBounds));
- expect(canvas.getDestinationClipBounds(), notCloseToRect(clipBounds));
+ expect(canvas.getLocalClipBounds(), isNot(closeToRect(clipBounds)));
+ expect(canvas.getDestinationClipBounds(), isNot(closeToRect(clipBounds)));
// Previous return values have not changed
expect(initialLocalBounds, closeToRect(clipBounds));
expect(initialDestinationBounds, closeToRect(clipBounds));
@@ -985,8 +934,8 @@
canvas.save();
canvas.clipRect(const Rect.fromLTRB(0, 0, 15, 15));
// Both clip bounds have changed
- expect(canvas.getLocalClipBounds(), notCloseToRect(clipExpandedBounds));
- expect(canvas.getDestinationClipBounds(), notCloseToRect(clipExpandedBounds));
+ expect(canvas.getLocalClipBounds(), isNot(closeToRect(clipExpandedBounds)));
+ expect(canvas.getDestinationClipBounds(), isNot(closeToRect(clipExpandedBounds)));
// Previous return values have not changed
expect(initialLocalBounds, closeToRect(clipExpandedBounds));
expect(initialDestinationBounds, closeToRect(clipExpandedBounds));
@@ -1025,8 +974,8 @@
canvas.save();
canvas.clipRect(const Rect.fromLTRB(0, 0, 15, 15), doAntiAlias: false);
// Both clip bounds have changed
- expect(canvas.getLocalClipBounds(), notCloseToRect(clipBounds));
- expect(canvas.getDestinationClipBounds(), notCloseToRect(clipBounds));
+ expect(canvas.getLocalClipBounds(), isNot(closeToRect(clipBounds)));
+ expect(canvas.getDestinationClipBounds(), isNot(closeToRect(clipBounds)));
// Previous return values have not changed
expect(initialLocalBounds, closeToRect(clipBounds));
expect(initialDestinationBounds, closeToRect(clipBounds));
@@ -1300,7 +1249,6 @@
final ByteData? data = await resultImage.toByteData();
if (data == null) {
fail('Expected non-null byte data');
- return;
}
final int rgba = data.buffer.asUint32List()[0];
expect(rgba, 0xFF0000FF);
@@ -1315,11 +1263,51 @@
return picture.toImage(1, 1);
}
-Matcher listEquals(ByteData expected) => (dynamic v) {
- Expect.type<ByteData>(v);
- final ByteData value = v as ByteData;
- expect(value.lengthInBytes, expected.lengthInBytes);
- for (int i = 0; i < value.lengthInBytes; i++) {
- expect(value.getUint8(i), expected.getUint8(i));
+Matcher closeToRect(Rect rect) => _CloseToRectMatcher(rect);
+final class _CloseToRectMatcher extends Matcher {
+ const _CloseToRectMatcher(this._expectedRect);
+ final Rect _expectedRect;
+
+ @override
+ bool matches(Object? item, Map<Object?, Object?> matchState) {
+ if (item is! Rect) {
+ return false;
+ }
+ return (item.left - _expectedRect.left).abs() < 1e-6 &&
+ (item.top - _expectedRect.top).abs() < 1e-6 &&
+ (item.right - _expectedRect.right).abs() < 1e-6 &&
+ (item.bottom - _expectedRect.bottom).abs() < 1e-6;
}
-};
+
+ @override
+ Description describe(Description description) {
+ return description.add('Rect is close (within 1e-6) to $_expectedRect');
+ }
+}
+
+Matcher closeToTransform(Float64List expected) => _CloseToTransformMatcher(expected);
+final class _CloseToTransformMatcher extends Matcher {
+ _CloseToTransformMatcher(this._expected);
+ final Float64List _expected;
+
+ @override
+ bool matches(Object? item, Map<Object?, Object?> matchState) {
+ if (item is! Float64List) {
+ return false;
+ }
+ if (item.length != 16 || _expected.length != 16) {
+ return false;
+ }
+ for (int i = 0; i < 16; i++) {
+ if ((item[i] - _expected[i]).abs() > 1e-10) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @override
+ Description describe(Description description) {
+ return description.add('Transform is close (within 1e-10) to $_expected');
+ }
+}
diff --git a/testing/dart/color_test.dart b/testing/dart/color_test.dart
index f686bf4..dc9888c 100644
--- a/testing/dart/color_test.dart
+++ b/testing/dart/color_test.dart
@@ -4,7 +4,7 @@
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
/// Positive result when the Colors will map to the same argb8888 color.
Matcher colorMatches(dynamic o) => (v) {
@@ -23,10 +23,6 @@
const NotAColor(super.value);
}
-Matcher approxEquals(dynamic o) => (v) {
- Expect.approxEquals(o as num, v as num);
-};
-
void main() {
test('color accessors should work', () {
const Color foo = Color(0x12345678);
@@ -58,9 +54,9 @@
test('two colors are only == if they have the same runtime type', () {
expect(const Color(0x12345678), equals(const Color(0x12345678)));
expect(const Color(0x12345678), equals(Color(0x12345678))); // ignore: prefer_const_constructors
- expect(const Color(0x12345678), notEquals(const Color(0x87654321)));
- expect(const Color(0x12345678), notEquals(const NotAColor(0x12345678)));
- expect(const NotAColor(0x12345678), notEquals(const Color(0x12345678)));
+ expect(const Color(0x12345678), isNot(const Color(0x87654321)));
+ expect(const Color(0x12345678), isNot(const NotAColor(0x12345678)));
+ expect(const NotAColor(0x12345678), isNot(const Color(0x12345678)));
expect(const NotAColor(0x12345678), equals(const NotAColor(0x12345678)));
});
@@ -257,9 +253,9 @@
alpha: 1, red: 1, green: 0, blue: 0, colorSpace: ColorSpace.displayP3);
final Color srgb = p3.withValues(colorSpace: ColorSpace.extendedSRGB);
expect(srgb.a, equals(1.0));
- expect(srgb.r, approxEquals(1.0931));
- expect(srgb.g, approxEquals(-0.22684034705162098));
- expect(srgb.b, approxEquals(-0.15007957816123998));
+ expect(srgb.r, closeTo(1.0931, 1e-4));
+ expect(srgb.g, closeTo(-0.22684034705162098, 1e-4));
+ expect(srgb.b, closeTo(-0.15007957816123998, 1e-4));
expect(srgb.colorSpace, equals(ColorSpace.extendedSRGB));
});
@@ -268,9 +264,9 @@
alpha: 1, red: 1, green: 0, blue: 0, colorSpace: ColorSpace.displayP3);
final Color srgb = p3.withValues(colorSpace: ColorSpace.sRGB);
expect(srgb.a, equals(1.0));
- expect(srgb.r, approxEquals(1));
- expect(srgb.g, approxEquals(0));
- expect(srgb.b, approxEquals(0));
+ expect(srgb.r, closeTo(1, 1e-4));
+ expect(srgb.g, closeTo(0, 1e-4));
+ expect(srgb.b, closeTo(0, 1e-4));
expect(srgb.colorSpace, equals(ColorSpace.sRGB));
});
@@ -283,9 +279,9 @@
colorSpace: ColorSpace.extendedSRGB);
final Color p3 = srgb.withValues(colorSpace: ColorSpace.displayP3);
expect(p3.a, equals(1.0));
- expect(p3.r, approxEquals(1));
- expect(p3.g, approxEquals(0));
- expect(p3.b, approxEquals(0));
+ expect(p3.r, closeTo(1, 1e-4));
+ expect(p3.g, closeTo(0, 1e-4));
+ expect(p3.b, closeTo(0, 1e-4));
expect(p3.colorSpace, equals(ColorSpace.displayP3));
});
@@ -311,7 +307,7 @@
alpha: 1, red: 1, green: 0, blue: 0);
const Color p3 = Color.from(
alpha: 1, red: 1, green: 0, blue: 0, colorSpace: ColorSpace.displayP3);
- expect(srgb.hashCode, notEquals(p3.hashCode));
+ expect(srgb.hashCode, isNot(p3.hashCode));
});
test('equality considers colorspace', () {
@@ -319,7 +315,7 @@
alpha: 1, red: 1, green: 0, blue: 0);
const Color p3 = Color.from(
alpha: 1, red: 1, green: 0, blue: 0, colorSpace: ColorSpace.displayP3);
- expect(srgb, notEquals(p3));
+ expect(srgb, isNot(p3));
});
// Regression test for https://github.com/flutter/flutter/issues/41257
diff --git a/testing/dart/fragment_shader_test.dart b/testing/dart/fragment_shader_test.dart
index 4d33902..ca9050e 100644
--- a/testing/dart/fragment_shader_test.dart
+++ b/testing/dart/fragment_shader_test.dart
@@ -9,8 +9,8 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
import 'impeller_enabled.dart';
import 'shader_test_file_utils.dart';
@@ -402,7 +402,6 @@
path.join('supported_glsl_op_shaders', 'iplr'),
'.iplr',
);
- expect(iplrSupportedGLSLOpShaders.isNotEmpty, true);
_expectFragmentShadersRenderGreen(iplrSupportedGLSLOpShaders);
// Test all supported instructions. See lib/spirv/lib/src/constants.dart
@@ -410,7 +409,6 @@
path.join('supported_op_shaders', 'iplr'),
'.iplr',
);
- expect(iplrSupportedOpShaders.isNotEmpty, true);
_expectFragmentShadersRenderGreen(iplrSupportedOpShaders);
}
@@ -418,6 +416,9 @@
// Keeping the outer loop of the test synchronous allows for easy printing
// of the file name within the test case.
void _expectFragmentShadersRenderGreen(Map<String, FragmentProgram> programs) {
+ if (programs.isEmpty) {
+ fail('No shaders found.');
+ }
for (final String key in programs.keys) {
test('FragmentProgram $key renders green', () async {
final FragmentProgram program = programs[key]!;
diff --git a/testing/dart/image_filter_test.dart b/testing/dart/image_filter_test.dart
index d017ff2..dab2416 100644
--- a/testing/dart/image_filter_test.dart
+++ b/testing/dart/image_filter_test.dart
@@ -6,7 +6,7 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
import 'goldens.dart';
import 'impeller_enabled.dart';
@@ -133,9 +133,9 @@
expect(a[i].hashCode, equals(b[j].hashCode));
expect(a[i].toString(), equals(b[j].toString()));
} else {
- expect(a[i], notEquals(b[j]));
+ expect(a[i], isNot(b[j]));
// No expectations on hashCode if objects are not equal
- expect(a[i].toString(), notEquals(b[j].toString()));
+ expect(a[i].toString(), isNot(b[j].toString()));
}
}
}
@@ -301,7 +301,7 @@
});
// Tests that FilterQuality.<value> produces the expected golden file.
- group('ImageFilter|FilterQuality', () async {
+ group('ImageFilter|FilterQuality', () {
/// Draw a red-green checkerboard pattern with 1x1 squares (pixels).
Future<Image> drawCheckerboard({
int width = 100,
diff --git a/testing/dart/image_shader_test.dart b/testing/dart/image_shader_test.dart
index 6124e57..1394edf 100644
--- a/testing/dart/image_shader_test.dart
+++ b/testing/dart/image_shader_test.dart
@@ -5,16 +5,11 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
+
import 'canvas_test.dart' show createImage, testCanvas;
void main() {
- bool assertsEnabled = false;
- assert(() {
- assertsEnabled = true;
- return true;
- }());
-
test('Construct an ImageShader', () async {
final Image image = await createImage(50, 50);
final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16));
@@ -22,13 +17,9 @@
const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
- if (assertsEnabled) {
- expect(shader.debugDisposed, false);
- }
+ expect(shader.debugDisposed, false);
shader.dispose();
- if (assertsEnabled) {
- expect(shader.debugDisposed, true);
- }
+ expect(shader.debugDisposed, true);
image.dispose();
});
@@ -37,11 +28,10 @@
final Image image = await createImage(50, 50);
image.dispose();
- if (assertsEnabled) {
- expectAssertion(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)));
- } else {
- throwsException(() => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)));
- }
+ expect(
+ () => ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16)),
+ throwsA(isA<AssertionError>()),
+ );
});
test('Disposed image shader in a paint', () async {
@@ -49,15 +39,7 @@
final ImageShader shader = ImageShader(image, TileMode.clamp, TileMode.clamp, Float64List(16));
shader.dispose();
- if (assertsEnabled) {
- expectAssertion(() => Paint()..shader = shader);
- return;
- }
- final Paint paint = Paint()..shader = shader;
- const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
- testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
- image.dispose();
-
+ expect(() => Paint()..shader = shader, throwsA(isA<AssertionError>()));
});
test('Construct an ImageShader - GPU image', () async {
@@ -73,13 +55,9 @@
const Rect rect = Rect.fromLTRB(0, 0, 100, 100);
testCanvas((Canvas canvas) => canvas.drawRect(rect, paint));
- if (assertsEnabled) {
- expect(shader.debugDisposed, false);
- }
+ expect(shader.debugDisposed, false);
shader.dispose();
- if (assertsEnabled) {
- expect(shader.debugDisposed, true);
- }
+ expect(shader.debugDisposed, true);
image.dispose();
});
diff --git a/testing/dart/observatory/shader_reload_test.dart b/testing/dart/observatory/shader_reload_test.dart
index 734b36f..bcd7081 100644
--- a/testing/dart/observatory/shader_reload_test.dart
+++ b/testing/dart/observatory/shader_reload_test.dart
@@ -5,7 +5,7 @@
import 'dart:developer' as developer;
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' as vms;
import 'package:vm_service/vm_service_io.dart';
diff --git a/testing/dart/observatory/skp_test.dart b/testing/dart/observatory/skp_test.dart
index 6c2a146..b63d46e 100644
--- a/testing/dart/observatory/skp_test.dart
+++ b/testing/dart/observatory/skp_test.dart
@@ -8,7 +8,7 @@
import 'dart:typed_data';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' as vms;
import 'package:vm_service/vm_service_io.dart';
diff --git a/testing/dart/observatory/tracing_test.dart b/testing/dart/observatory/tracing_test.dart
index e62c0fc..4fe5751 100644
--- a/testing/dart/observatory/tracing_test.dart
+++ b/testing/dart/observatory/tracing_test.dart
@@ -7,13 +7,12 @@
import 'dart:developer' as developer;
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' as vms;
import 'package:vm_service/vm_service_io.dart';
import 'package:vm_service_protos/vm_service_protos.dart';
import '../impeller_enabled.dart';
-import '../serialized_test_suite.dart';
Future<void> _testChromeFormatTrace(vms.VmService vmService) async {
final vms.Timeline timeline = await vmService.getVMTimeline();
@@ -70,9 +69,7 @@
}
void main() {
- final SerializedTestSuite suite = SerializedTestSuite();
-
- suite.test('Canvas.saveLayer emits tracing', () async {
+ test('Canvas.saveLayer emits tracing', () async {
final developer.ServiceProtocolInfo info = await developer.Service.getInfo();
if (info.serverUri == null) {
@@ -116,7 +113,7 @@
await vmService.dispose();
});
- suite.test('Frame request pending begin/end pairs are matched', () async {
+ test('Frame request pending begin/end pairs are matched', () async {
final developer.ServiceProtocolInfo info = await developer.Service.getInfo();
if (info.serverUri == null) {
diff --git a/testing/dart/observatory/vmservice_methods_test.dart b/testing/dart/observatory/vmservice_methods_test.dart
index 14fd20d..34d2f3c 100644
--- a/testing/dart/observatory/vmservice_methods_test.dart
+++ b/testing/dart/observatory/vmservice_methods_test.dart
@@ -8,7 +8,7 @@
import 'dart:typed_data';
import 'dart:ui' as ui;
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' as vms;
import 'package:vm_service/vm_service_io.dart';
diff --git a/testing/dart/platform_isolate_test.dart b/testing/dart/platform_isolate_test.dart
index e6046be..8ffba9f 100644
--- a/testing/dart/platform_isolate_test.dart
+++ b/testing/dart/platform_isolate_test.dart
@@ -6,7 +6,7 @@
import 'dart:isolate';
import 'dart:ui';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
int counter = 0;
@@ -62,34 +62,47 @@
expect(await future3, 3);
});
- test('PlatformIsolate runOnPlatformThread, send and receive messages',
- () async {
- // Send numbers 1 to 10 to the platform isolate. The platform isolate
- // multiplies them by 100 and sends them back.
- int sum = 0;
- final RawReceivePort recvPort = RawReceivePort((Object message) {
- if (message is SendPort) {
- for (int i = 1; i <= 10; ++i) {
- message.send(i);
- }
- } else {
- sum += message as int;
+ test('PlatformIsolate runOnPlatformThread, send/receive messages', () async {
+ late SendPort toPlatformThread;
+ var sumOfReceivedMessages = 0;
+ var countofReceivedMessages = 0;
+ final recvPort = RawReceivePort((Object message) {
+ switch (message) {
+ case final SendPort sendPort:
+ toPlatformThread = sendPort;
+ for (int i = 1; i <= 10; i++) {
+ sendPort.send(i);
+ }
+ case final int value:
+ sumOfReceivedMessages += value;
+ countofReceivedMessages++;
+ if (countofReceivedMessages == 10) {
+ toPlatformThread.send(true);
+ }
+ default:
+ fail('Unexpected message: $message');
}
});
- final SendPort sendPort = recvPort.sendPort;
+
+ final sendPort = recvPort.sendPort;
await runOnPlatformThread(() async {
- final Completer<void> completer = Completer<void>();
- final RawReceivePort recvPort = RawReceivePort((Object message) {
- sendPort.send((message as int) * 100);
- if (message == 10) {
- completer.complete();
+ final completer = Completer<void>();
+ final recvPort = RawReceivePort((Object message) {
+ switch (message) {
+ case final int value:
+ sendPort.send(value * 100);
+ case true:
+ completer.complete();
+ default:
+ fail('Unexpected message: $message');
}
});
sendPort.send(recvPort.sendPort);
await completer.future;
recvPort.close();
});
- expect(sum, 5500); // sum(1 to 10) * 100
+
+ expect(sumOfReceivedMessages, 5500); // sum(1 to 10) * 100
recvPort.close();
});
@@ -122,9 +135,11 @@
test('PlatformIsolate runOnPlatformThread, disabled on helper isolates',
() async {
- await Isolate.run(() {
- expect(() => runOnPlatformThread(() => print('Unreachable')), throws);
- });
+ await expectLater(() async {
+ await Isolate.run(() {
+ return runOnPlatformThread(() => print('Unreachable'));
+ });
+ }, throws);
});
test('PlatformIsolate runOnPlatformThread, on platform isolate', () async {
@@ -134,7 +149,7 @@
});
test('PlatformIsolate runOnPlatformThread, exit disabled', () async {
- await runOnPlatformThread(() => expect(() => Isolate.exit(), throws));
+ await expectLater(runOnPlatformThread(() => Isolate.exit()), throws);
});
test('PlatformIsolate runOnPlatformThread, unsendable object', () async {
diff --git a/testing/dart/pubspec.yaml b/testing/dart/pubspec.yaml
index ab4fe96..00920cf 100644
--- a/testing/dart/pubspec.yaml
+++ b/testing/dart/pubspec.yaml
@@ -14,7 +14,6 @@
dependencies:
ffi: any
- litetest: any
path: any
skia_gold_client: any
sky_engine: any
diff --git a/testing/dart/serialized_test_suite.dart b/testing/dart/serialized_test_suite.dart
deleted file mode 100644
index 416f599..0000000
--- a/testing/dart/serialized_test_suite.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:litetest/litetest.dart' as litetest;
-
-// A group of tests that must be run without concurrency.
-// This is useful for tests that modify global state.
-class SerializedTestSuite {
- Completer<void>? _previousTestCompleter;
-
- void test(String name, Future<void> Function() body) {
- final Completer<void>? lastTestCompleter = _previousTestCompleter;
- final Completer<void> currentTestCompleter = Completer<void>();
- _previousTestCompleter = currentTestCompleter;
- Future<void> wrappedBody() async {
- if (lastTestCompleter != null) {
- await lastTestCompleter.future;
- }
- await body();
- currentTestCompleter.complete();
- }
- litetest.test(name, wrappedBody);
- }
-}
diff --git a/testing/dart/spawn_test.dart b/testing/dart/spawn_test.dart
index a3f87b2..548cfe6 100644
--- a/testing/dart/spawn_test.dart
+++ b/testing/dart/spawn_test.dart
@@ -7,7 +7,7 @@
import 'dart:ui';
import 'package:ffi/ffi.dart';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
// This import is used in a test, but not in a way that the analyzer can understand.
// ignore: unused_import
@@ -43,8 +43,7 @@
@pragma('vm:entry-point')
void testEntrypoint() {
- expect(PlatformDispatcher.instance.defaultRouteName, kTestEntrypointRouteName);
- IsolateNameServer.lookupPortByName(kTestEntrypointRouteName)!.send(null);
+ IsolateNameServer.lookupPortByName(kTestEntrypointRouteName)!.send(PlatformDispatcher.instance.defaultRouteName);
}
void main() {
@@ -54,7 +53,7 @@
test('Spawn a different entrypoint with a special route name', () async {
final ReceivePort port = ReceivePort();
spawn(port: port.sendPort, entrypoint: 'testEntrypoint', route: kTestEntrypointRouteName);
- expect(await port.first, isNull);
+ expect(await port.first, kTestEntrypointRouteName);
port.close();
});
diff --git a/testing/dart/task_order_test.dart b/testing/dart/task_order_test.dart
index 018c2be..b4fe2e0 100644
--- a/testing/dart/task_order_test.dart
+++ b/testing/dart/task_order_test.dart
@@ -4,7 +4,7 @@
import 'dart:async';
-import 'package:litetest/litetest.dart';
+import 'package:test/test.dart';
void main() {
test('Message loop flushes microtasks between iterations', () async {
diff --git a/testing/run_tests.py b/testing/run_tests.py
index c8d68bd..aae1fc1 100755
--- a/testing/run_tests.py
+++ b/testing/run_tests.py
@@ -978,7 +978,7 @@
def build_dart_host_test_list(build_dir):
dart_host_tests = [
(os.path.join('flutter', 'ci'), []),
- (os.path.join('flutter', 'flutter_frontend_server'), {'ENGINE_BUILD_DIR': build_dir}),
+ (os.path.join('flutter', 'flutter_frontend_server'), []),
(os.path.join('flutter', 'testing', 'litetest'), []),
(os.path.join('flutter', 'testing', 'skia_gold_client'), []),
(os.path.join('flutter', 'testing', 'scenario_app'), []),
diff --git a/tools/clangd_check/pubspec.yaml b/tools/clangd_check/pubspec.yaml
index 40d647a..54fe7e7 100644
--- a/tools/clangd_check/pubspec.yaml
+++ b/tools/clangd_check/pubspec.yaml
@@ -19,8 +19,5 @@
source_span: any
dev_dependencies:
- async_helper: any
- expect: any
- litetest: any
process_fakes: any
- smith: any
+