diff --git a/dev/automated_tests/flutter_test/flutter_gold_expectation.txt b/dev/automated_tests/flutter_test/flutter_gold_expectation.txt index b3e2cce386e..7de9b5a2a55 100644 --- a/dev/automated_tests/flutter_test/flutter_gold_expectation.txt +++ b/dev/automated_tests/flutter_test/flutter_gold_expectation.txt @@ -1,7 +1,7 @@ [0-9]+:[0-9]+ [+]0: Local passes non-existent baseline for new test, null expectation * - *No expectations provided by Skia Gold for test: library.flutter.new_golden_test.1. This may be a new test. If this is an unexpected result, check https://flutter-gold.skia.org. + *No expectations provided by Skia Gold for test: library.flutter.new_golden_test.1.png. This may be a new test. If this is an unexpected result, check https://flutter-gold.skia.org. *Validate image output found at flutter/test/library/ [0-9]+:[0-9]+ [+]1: Local passes non-existent baseline for new test, empty expectation * - *No expectations provided by Skia Gold for test: library.flutter.new_golden_test.2. This may be a new test. If this is an unexpected result, check https://flutter-gold.skia.org. + *No expectations provided by Skia Gold for test: library.flutter.new_golden_test.2.png. This may be a new test. If this is an unexpected result, check https://flutter-gold.skia.org. *Validate image output found at flutter/test/library/ [0-9]+:[0-9]+ [+]2: All tests passed! * diff --git a/dev/automated_tests/flutter_test/flutter_gold_test.dart b/dev/automated_tests/flutter_test/flutter_gold_test.dart index 36831b6623c..fbd701b4737 100644 --- a/dev/automated_tests/flutter_test/flutter_gold_test.dart +++ b/dev/automated_tests/flutter_test/flutter_gold_test.dart @@ -38,7 +38,7 @@ void main() { expect( await comparator.compare( Uint8List.fromList(_kFailPngBytes), - Uri.parse('flutter.new_golden_test.1'), + Uri.parse('flutter.new_golden_test.1.png'), ), isTrue, ); @@ -48,7 +48,7 @@ void main() { expect( await comparator.compare( Uint8List.fromList(_kFailPngBytes), - Uri.parse('flutter.new_golden_test.2'), + Uri.parse('flutter.new_golden_test.2.png'), ), isTrue, ); diff --git a/packages/flutter_goldens/lib/flutter_goldens.dart b/packages/flutter_goldens/lib/flutter_goldens.dart index 66414148751..e0b5bdfcc22 100644 --- a/packages/flutter_goldens/lib/flutter_goldens.dart +++ b/packages/flutter_goldens/lib/flutter_goldens.dart @@ -167,6 +167,12 @@ abstract class FlutterGoldenFileComparator extends GoldenFileComparator { /// Prepends the golden URL with the library name that encloses the current /// test. Uri _addPrefix(Uri golden) { + // Ensure the Uri ends in .png as the SkiaClient expects + assert( + golden.toString().split('.').last == 'png', + 'Golden files in the Flutter framework must end with the file extension ' + '.png.' + ); final String prefix = basedir.pathSegments[basedir.pathSegments.length - 2]; return Uri.parse('$prefix.$golden'); } diff --git a/packages/flutter_goldens/test/flutter_goldens_test.dart b/packages/flutter_goldens/test/flutter_goldens_test.dart index c5d22cc5f72..494f582cfe0 100644 --- a/packages/flutter_goldens/test/flutter_goldens_test.dart +++ b/packages/flutter_goldens/test/flutter_goldens_test.dart @@ -481,6 +481,26 @@ void main() { ); }); + test('asserts .png format', () async { + await expectLater( + () async { + return comparator.compare( + Uint8List.fromList(_kTestPngBytes), + Uri.parse('flutter.golden_test.1'), + ); + }, + throwsA( + isA().having((AssertionError error) => error.toString(), + 'description', + contains( + 'Golden files in the Flutter framework must end with the file ' + 'extension .png.' + ), + ), + ), + ); + }); + test('calls init during compare', () { expect(fakeSkiaClient.initCalls, 0); comparator.compare( @@ -579,6 +599,26 @@ void main() { ); }); + test('asserts .png format', () async { + await expectLater( + () async { + return comparator.compare( + Uint8List.fromList(_kTestPngBytes), + Uri.parse('flutter.golden_test.1'), + ); + }, + throwsA( + isA().having((AssertionError error) => error.toString(), + 'description', + contains( + 'Golden files in the Flutter framework must end with the file ' + 'extension .png.' + ), + ), + ), + ); + }); + test('calls init during compare', () { expect(fakeSkiaClient.tryInitCalls, 0); comparator.compare( @@ -745,6 +785,26 @@ void main() { fakeSkiaClient.cleanTestNameValues['library.flutter.golden_test.1.png'] = 'flutter.golden_test.1'; }); + test('asserts .png format', () async { + await expectLater( + () async { + return comparator.compare( + Uint8List.fromList(_kTestPngBytes), + Uri.parse('flutter.golden_test.1'), + ); + }, + throwsA( + isA().having((AssertionError error) => error.toString(), + 'description', + contains( + 'Golden files in the Flutter framework must end with the file ' + 'extension .png.' + ), + ), + ), + ); + }); + test('passes when bytes match', () async { expect( await comparator.compare(