From 1f3ff5ca429e6309810a4b79bc2bbf5b7e4f1fdb Mon Sep 17 00:00:00 2001 From: Alexandre Ardhuin Date: Thu, 21 Nov 2019 17:46:37 +0100 Subject: [PATCH] implicit-casts:false in flutter_goldens and flutter_goldens_client (#45249) * implicit-casts:false in flutter_goldens and flutter_goldens_client * fix type --- .../flutter_goldens/analysis_options.yaml | 9 +++++ .../flutter_goldens/lib/flutter_goldens.dart | 8 ++-- .../test/flutter_goldens_test.dart | 40 +++++++++---------- .../analysis_options.yaml | 9 +++++ .../lib/skia_client.dart | 30 +++++++------- 5 files changed, 57 insertions(+), 39 deletions(-) diff --git a/packages/flutter_goldens/analysis_options.yaml b/packages/flutter_goldens/analysis_options.yaml index b8591ca6dba..6c17382413a 100644 --- a/packages/flutter_goldens/analysis_options.yaml +++ b/packages/flutter_goldens/analysis_options.yaml @@ -2,3 +2,12 @@ # the ones from above, which include the `public_member_api_docs` rule). include: ../../analysis_options.yaml + +analyzer: + strong-mode: + implicit-casts: false + implicit-dynamic: false + +linter: + rules: + avoid_as: false # Disabled so we can gradually migrate to no implicit dynamic. diff --git a/packages/flutter_goldens/lib/flutter_goldens.dart b/packages/flutter_goldens/lib/flutter_goldens.dart index b83a3d6a2d7..494f2ea5ce0 100644 --- a/packages/flutter_goldens/lib/flutter_goldens.dart +++ b/packages/flutter_goldens/lib/flutter_goldens.dart @@ -210,7 +210,7 @@ class FlutterSkiaGoldFileComparator extends FlutterGoldenFileComparator { LocalFileComparator defaultComparator, }) async { - defaultComparator ??= goldenFileComparator; + defaultComparator ??= goldenFileComparator as LocalFileComparator; final Directory baseDirectory = FlutterGoldenFileComparator.getBaseDirectory( defaultComparator, platform, @@ -293,7 +293,7 @@ class FlutterPreSubmitFileComparator extends FlutterGoldenFileComparator { LocalFileComparator defaultComparator, }) async { - defaultComparator ??= goldenFileComparator; + defaultComparator ??= goldenFileComparator as LocalFileComparator; final Directory baseDirectory = FlutterGoldenFileComparator.getBaseDirectory( defaultComparator, platform, @@ -391,7 +391,7 @@ class FlutterSkippingGoldenFileComparator extends FlutterGoldenFileComparator { String reason, { LocalFileComparator defaultComparator, }) { - defaultComparator ??= goldenFileComparator; + defaultComparator ??= goldenFileComparator as LocalFileComparator; const FileSystem fs = LocalFileSystem(); final Uri basedir = defaultComparator.basedir; final SkiaGoldClient skiaClient = SkiaGoldClient(fs.directory(basedir)); @@ -472,7 +472,7 @@ class FlutterLocalFileComparator extends FlutterGoldenFileComparator with LocalC LocalFileComparator defaultComparator, Directory baseDirectory, }) async { - defaultComparator ??= goldenFileComparator; + defaultComparator ??= goldenFileComparator as LocalFileComparator; baseDirectory ??= FlutterGoldenFileComparator.getBaseDirectory( defaultComparator, platform, diff --git a/packages/flutter_goldens/test/flutter_goldens_test.dart b/packages/flutter_goldens/test/flutter_goldens_test.dart index e453f78a9ce..6b1335a798d 100644 --- a/packages/flutter_goldens/test/flutter_goldens_test.dart +++ b/packages/flutter_goldens/test/flutter_goldens_test.dart @@ -97,8 +97,8 @@ void main() { }); test('validates SkiaDigest', () { - final Map skiaJson = json.decode(digestResponseTemplate()); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + final Map skiaJson = json.decode(digestResponseTemplate()) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect( digest.isValid( platform, @@ -111,9 +111,9 @@ void main() { test('invalidates bad SkiaDigest - platform', () { final Map skiaJson = json.decode( - digestResponseTemplate(platform: 'linux') - ); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + digestResponseTemplate(platform: 'linux'), + ) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect( digest.isValid( platform, @@ -126,9 +126,9 @@ void main() { test('invalidates bad SkiaDigest - test name', () { final Map skiaJson = json.decode( - digestResponseTemplate(testName: 'flutter.golden_test.2') - ); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + digestResponseTemplate(testName: 'flutter.golden_test.2'), + ) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect( digest.isValid( platform, @@ -141,9 +141,9 @@ void main() { test('invalidates bad SkiaDigest - expectation', () { final Map skiaJson = json.decode( - digestResponseTemplate(expectation: '1deg543sf645erg44awqcc78') - ); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + digestResponseTemplate(expectation: '1deg543sf645erg44awqcc78'), + ) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect( digest.isValid( platform, @@ -156,9 +156,9 @@ void main() { test('invalidates bad SkiaDigest - status', () { final Map skiaJson = json.decode( - digestResponseTemplate(status: 'negative') - ); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + digestResponseTemplate(status: 'negative'), + ) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect( digest.isValid( platform, @@ -189,8 +189,8 @@ void main() { test('detects invalid digests SkiaDigest', () { const String testName = 'flutter.golden_test.2'; - final Map skiaJson = json.decode(digestResponseTemplate()); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + final Map skiaJson = json.decode(digestResponseTemplate()) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); expect(digest.isValid(platform, testName, expectation), isFalse); }); @@ -795,16 +795,16 @@ class MockHttpClientRequest extends Mock implements HttpClientRequest {} class MockHttpClientResponse extends Mock implements HttpClientResponse { MockHttpClientResponse(this.response); - final Uint8List response; + final List response; @override - StreamSubscription listen( - void onData(Uint8List event), { + StreamSubscription> listen( + void onData(List event), { Function onError, void onDone(), bool cancelOnError, }) { - return Stream.fromFuture(Future.value(response)) + return Stream>.fromFuture(Future>.value(response)) .listen(onData, onError: onError, onDone: onDone, cancelOnError: cancelOnError); } } diff --git a/packages/flutter_goldens_client/analysis_options.yaml b/packages/flutter_goldens_client/analysis_options.yaml index b8591ca6dba..6c17382413a 100644 --- a/packages/flutter_goldens_client/analysis_options.yaml +++ b/packages/flutter_goldens_client/analysis_options.yaml @@ -2,3 +2,12 @@ # the ones from above, which include the `public_member_api_docs` rule). include: ../../analysis_options.yaml + +analyzer: + strong-mode: + implicit-casts: false + implicit-dynamic: false + +linter: + rules: + avoid_as: false # Disabled so we can gradually migrate to no implicit dynamic. diff --git a/packages/flutter_goldens_client/lib/skia_client.dart b/packages/flutter_goldens_client/lib/skia_client.dart index 38ff6f79569..066ebe87984 100644 --- a/packages/flutter_goldens_client/lib/skia_client.dart +++ b/packages/flutter_goldens_client/lib/skia_client.dart @@ -205,10 +205,10 @@ class SkiaGoldClient { final io.HttpClientRequest request = await httpClient.getUrl(requestForExpectations); final io.HttpClientResponse response = await request.close(); rawResponse = await utf8.decodeStream(response); - final Map skiaJson = json.decode(rawResponse)['master']; + final Map skiaJson = json.decode(rawResponse)['master'] as Map; skiaJson.forEach((String key, dynamic value) { - final Map hashesMap = value; + final Map hashesMap = value as Map; _expectations[key] = hashesMap.keys.toList(); }); } on FormatException catch(_) { @@ -267,11 +267,11 @@ class SkiaGoldClient { final io.HttpClientRequest request = await httpClient.getUrl(requestForIgnores); final io.HttpClientResponse response = await request.close(); rawResponse = await utf8.decodeStream(response); - final List ignores = json.decode(rawResponse); - for(Map ignore in ignores) { - final List ignoredQueries = ignore['query'].split('&'); - final String ignoredPullRequest = ignore['note'].split('/').last; - final DateTime expiration = DateTime.parse(ignore['expires']); + final List ignores = json.decode(rawResponse) as List; + for(dynamic ignore in ignores) { + final List ignoredQueries = (ignore['query'] as String).split('&'); + final String ignoredPullRequest = (ignore['note'] as String).split('/').last; + final DateTime expiration = DateTime.parse(ignore['expires'] as String); // The currently failing test is in the process of modification. if (ignoredQueries.contains('name=$testName')) { if (expiration.isAfter(DateTime.now())) { @@ -326,8 +326,8 @@ class SkiaGoldClient { final io.HttpClientRequest request = await httpClient.getUrl(requestForDigest); final io.HttpClientResponse response = await request.close(); rawResponse = await utf8.decodeStream(response); - final Map skiaJson = json.decode(rawResponse); - final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest']); + final Map skiaJson = json.decode(rawResponse) as Map; + final SkiaGoldDigest digest = SkiaGoldDigest.fromJson(skiaJson['digest'] as Map); isValid = digest.isValid(platform, testName, expectation); } on FormatException catch(_) { @@ -358,7 +358,7 @@ class SkiaGoldClient { ['git', 'rev-parse', 'HEAD'], workingDirectory: _flutterRoot.path, ); - return revParse.exitCode == 0 ? revParse.stdout.trim() : null; + return revParse.exitCode == 0 ? (revParse.stdout as String).trim() : null; } } @@ -410,11 +410,11 @@ class SkiaGoldDigest { return null; return SkiaGoldDigest( - imageHash: json['digest'], - paramSet: Map.from(json['paramset'] ?? + imageHash: json['digest'] as String, + paramSet: Map.from(json['paramset'] as Map ?? {'Platform': 'none'}), - testName: json['test'], - status: json['status'], + testName: json['test'] as String, + status: json['status'] as String, ); } @@ -433,7 +433,7 @@ class SkiaGoldDigest { /// Validates a given digest against the current testing conditions. bool isValid(Platform platform, String name, String expectation) { return imageHash == expectation - && paramSet['Platform'].contains(platform.operatingSystem) + && (paramSet['Platform'] as List).contains(platform.operatingSystem) && testName == name && status == 'positive'; }