analysis_options: move to language - strict-casts:true (#1725)
Handle extra strictness around for loops.
- Add a cast to `List`.
- Extract some work to a helper method that can be called from two
branches so that inference from the `is` checks works better with
no reassignment.
Co-authored-by: Nate Bosch <nbosch@google.com>
diff --git a/analysis_options.yaml b/analysis_options.yaml
index b38ca9e..0f13fc8 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,7 +1,7 @@
include: package:lints/recommended.yaml
analyzer:
- strong-mode:
- implicit-casts: false
+ language:
+ strict-casts: true
errors:
# There are a number of deprecated members used through this package
deprecated_member_use_from_same_package: ignore
diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md
index 172f849..16db634 100644
--- a/pkgs/test/CHANGELOG.md
+++ b/pkgs/test/CHANGELOG.md
@@ -1,3 +1,5 @@
+## 1.21.4-dev
+
## 1.21.3
* Support the latest `package:test_api` and `package:test_core`.
diff --git a/pkgs/test/pubspec.yaml b/pkgs/test/pubspec.yaml
index d576955..506467f 100644
--- a/pkgs/test/pubspec.yaml
+++ b/pkgs/test/pubspec.yaml
@@ -1,5 +1,5 @@
name: test
-version: 1.21.3
+version: 1.21.4-dev
description: >-
A full featured library for writing and running Dart tests across platforms.
repository: https://github.com/dart-lang/test/tree/master/pkgs/test
@@ -32,7 +32,7 @@
webkit_inspection_protocol: ^1.0.0
yaml: ^3.0.0
# Use an exact version until the test_api and test_core package are stable.
- test_api: 0.4.11
+ test_api: 0.4.12
test_core: 0.4.15
dev_dependencies:
diff --git a/pkgs/test_api/CHANGELOG.md b/pkgs/test_api/CHANGELOG.md
index 2f07dc3..2b57eec 100644
--- a/pkgs/test_api/CHANGELOG.md
+++ b/pkgs/test_api/CHANGELOG.md
@@ -1,3 +1,5 @@
+## 0.4.12-dev
+
## 0.4.11
* Support the latest version of `package:matcher`.
diff --git a/pkgs/test_api/lib/src/backend/metadata.dart b/pkgs/test_api/lib/src/backend/metadata.dart
index 2f94322..75ff45e 100644
--- a/pkgs/test_api/lib/src/backend/metadata.dart
+++ b/pkgs/test_api/lib/src/backend/metadata.dart
@@ -79,43 +79,47 @@
var result = <PlatformSelector, Metadata>{};
onPlatform.forEach((platform, metadata) {
+ var selector = PlatformSelector.parse(platform);
if (metadata is Timeout || metadata is Skip) {
- metadata = [metadata];
- } else if (metadata is! List) {
+ result[selector] = _parsePlatformOptions(platform, [metadata]);
+ } else if (metadata is List) {
+ result[selector] = _parsePlatformOptions(platform, metadata);
+ } else {
throw ArgumentError('Metadata for platform "$platform" must be a '
'Timeout, Skip, or List of those; was "$metadata".');
}
-
- var selector = PlatformSelector.parse(platform);
-
- Timeout? timeout;
- dynamic skip;
- for (var metadatum in metadata) {
- if (metadatum is Timeout) {
- if (timeout != null) {
- throw ArgumentError('Only a single Timeout may be declared for '
- '"$platform".');
- }
-
- timeout = metadatum;
- } else if (metadatum is Skip) {
- if (skip != null) {
- throw ArgumentError('Only a single Skip may be declared for '
- '"$platform".');
- }
-
- skip = metadatum.reason ?? true;
- } else {
- throw ArgumentError('Metadata for platform "$platform" must be a '
- 'Timeout, Skip, or List of those; was "$metadata".');
- }
- }
-
- result[selector] = Metadata.parse(timeout: timeout, skip: skip);
});
return result;
}
+ static Metadata _parsePlatformOptions(
+ String platform, List<dynamic> metadata) {
+ Timeout? timeout;
+ dynamic skip;
+ for (var metadatum in metadata) {
+ if (metadatum is Timeout) {
+ if (timeout != null) {
+ throw ArgumentError('Only a single Timeout may be declared for '
+ '"$platform".');
+ }
+
+ timeout = metadatum;
+ } else if (metadatum is Skip) {
+ if (skip != null) {
+ throw ArgumentError('Only a single Skip may be declared for '
+ '"$platform".');
+ }
+
+ skip = metadatum.reason ?? true;
+ } else {
+ throw ArgumentError('Metadata for platform "$platform" must be a '
+ 'Timeout, Skip, or List of those; was "$metadata".');
+ }
+ }
+
+ return Metadata.parse(timeout: timeout, skip: skip);
+ }
+
/// Parses a user-provided [String] or [Iterable] into the value for [tags].
///
/// Throws an [ArgumentError] if [tags] is not a [String] or an [Iterable].
@@ -263,7 +267,7 @@
_retry = serialized['retry'] as int?,
tags = Set.from(serialized['tags'] as Iterable),
onPlatform = {
- for (var pair in serialized['onPlatform'])
+ for (var pair in serialized['onPlatform'] as List)
PlatformSelector.parse(pair.first as String):
Metadata.deserialize(pair.last)
},
diff --git a/pkgs/test_api/pubspec.yaml b/pkgs/test_api/pubspec.yaml
index b74bb64..7b9ae0a 100644
--- a/pkgs/test_api/pubspec.yaml
+++ b/pkgs/test_api/pubspec.yaml
@@ -1,5 +1,5 @@
name: test_api
-version: 0.4.11
+version: 0.4.12-dev
description: A library for writing Dart tests.
repository: https://github.com/dart-lang/test/tree/master/pkgs/test_api
diff --git a/pkgs/test_core/CHANGELOG.md b/pkgs/test_core/CHANGELOG.md
index 4fb0848..9e62d20 100644
--- a/pkgs/test_core/CHANGELOG.md
+++ b/pkgs/test_core/CHANGELOG.md
@@ -1,3 +1,5 @@
+## 0.4.16-dev
+
## 0.4.15
* Support the latest `package:test_api`.
diff --git a/pkgs/test_core/pubspec.yaml b/pkgs/test_core/pubspec.yaml
index c078255..2c94c66 100644
--- a/pkgs/test_core/pubspec.yaml
+++ b/pkgs/test_core/pubspec.yaml
@@ -1,5 +1,5 @@
name: test_core
-version: 0.4.15
+version: 0.4.16-dev
description: A basic library for writing tests and running them on the VM.
repository: https://github.com/dart-lang/test/tree/master/pkgs/test_core
@@ -30,7 +30,7 @@
# matcher is tightly constrained by test_api
matcher: any
# Use an exact version until the test_api package is stable.
- test_api: 0.4.11
+ test_api: 0.4.12
dev_dependencies:
lints: '>=1.0.0 <3.0.0'