From 44ac7aa23657d9cb35cc7186bd63e3ec4172ee6f Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 20 Nov 2025 15:16:21 -0600 Subject: [PATCH 1/7] fix(test_core): fix `writeCoverage` to handle a `null` hit map --- pkgs/test_core/lib/src/runner/coverage.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/test_core/lib/src/runner/coverage.dart b/pkgs/test_core/lib/src/runner/coverage.dart index 0eeb64939..8f98d2b74 100644 --- a/pkgs/test_core/lib/src/runner/coverage.dart +++ b/pkgs/test_core/lib/src/runner/coverage.dart @@ -30,7 +30,9 @@ Future writeCoverage( await out.flush(); await out.close(); } - return HitMap.parseJson(coverage['coverage'] as List>); + final hitMapJson = coverage['coverage'] as List>?; + if (hitMapJson == null) return const {}; + return HitMap.parseJson(hitMapJson); } Future writeCoverageLcov( From c3b7c79a7c972e09e91f58364459fb5b24cb003c Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 20 Nov 2025 15:18:13 -0600 Subject: [PATCH 2/7] chore: rev version and update changelog --- pkgs/test_core/CHANGELOG.md | 4 ++++ pkgs/test_core/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/test_core/CHANGELOG.md b/pkgs/test_core/CHANGELOG.md index 9a5fba622..77e1c6673 100644 --- a/pkgs/test_core/CHANGELOG.md +++ b/pkgs/test_core/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.14 + +* fix type cast when parsing a null hit map + ## 0.6.13 * Require Dart 3.7 diff --git a/pkgs/test_core/pubspec.yaml b/pkgs/test_core/pubspec.yaml index 30587cd7f..65f9d41e6 100644 --- a/pkgs/test_core/pubspec.yaml +++ b/pkgs/test_core/pubspec.yaml @@ -1,5 +1,5 @@ name: test_core -version: 0.6.13 +version: 0.6.14 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 issue_tracker: https://github.com/dart-lang/test/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Atest From acbca4bfc49daf705ee5b16722aff62345c2cba1 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 20 Nov 2025 15:23:21 -0600 Subject: [PATCH 3/7] Apply suggestions from code review Co-authored-by: Kevin Moore --- pkgs/test_core/CHANGELOG.md | 2 +- pkgs/test_core/lib/src/runner/coverage.dart | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pkgs/test_core/CHANGELOG.md b/pkgs/test_core/CHANGELOG.md index 77e1c6673..6709f9704 100644 --- a/pkgs/test_core/CHANGELOG.md +++ b/pkgs/test_core/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.14 -* fix type cast when parsing a null hit map +* Fix type cast when parsing a `null` hit map. ## 0.6.13 diff --git a/pkgs/test_core/lib/src/runner/coverage.dart b/pkgs/test_core/lib/src/runner/coverage.dart index 8f98d2b74..884fd8638 100644 --- a/pkgs/test_core/lib/src/runner/coverage.dart +++ b/pkgs/test_core/lib/src/runner/coverage.dart @@ -31,8 +31,7 @@ Future writeCoverage( await out.close(); } final hitMapJson = coverage['coverage'] as List>?; - if (hitMapJson == null) return const {}; - return HitMap.parseJson(hitMapJson); + return hitMapJson == null ? const {} : HitMap.parseJson(hitMapJson); } Future writeCoverageLcov( From 7f81296f93879851722b9fd0373e69451853ca0b Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 20 Nov 2025 15:33:30 -0600 Subject: [PATCH 4/7] bump pkg:test --- pkgs/test/CHANGELOG.md | 1 + pkgs/test/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md index 33477a4a4..119d71b52 100644 --- a/pkgs/test/CHANGELOG.md +++ b/pkgs/test/CHANGELOG.md @@ -1,5 +1,6 @@ ## 1.27.1-wip +* Bump `test_core` to 1.6.14 * Removed unused `js` dependency ## 1.27.0 diff --git a/pkgs/test/pubspec.yaml b/pkgs/test/pubspec.yaml index 8b8080c4c..5e5cf6b04 100644 --- a/pkgs/test/pubspec.yaml +++ b/pkgs/test/pubspec.yaml @@ -36,7 +36,7 @@ dependencies: # Use an exact version until the test_api and test_core package are stable. test_api: 0.7.8 - test_core: 0.6.13 + test_core: 0.6.14 typed_data: ^1.3.0 web_socket_channel: '>=2.0.0 <4.0.0' From 2470d98a5c17c52cabda08d150b2369cd9b1d095 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 20 Nov 2025 15:34:05 -0600 Subject: [PATCH 5/7] fix: typo --- pkgs/test/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/test/CHANGELOG.md b/pkgs/test/CHANGELOG.md index 119d71b52..b5714b71b 100644 --- a/pkgs/test/CHANGELOG.md +++ b/pkgs/test/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.27.1-wip -* Bump `test_core` to 1.6.14 +* Bump `test_core` to 0.6.14 * Removed unused `js` dependency ## 1.27.0 From 434ce44ff694c0d73a4c805483a3e6e41a164ae5 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Thu, 20 Nov 2025 14:32:36 -0800 Subject: [PATCH 6/7] use switch --- pkgs/test_core/lib/src/runner/coverage.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/test_core/lib/src/runner/coverage.dart b/pkgs/test_core/lib/src/runner/coverage.dart index 884fd8638..63ef8189e 100644 --- a/pkgs/test_core/lib/src/runner/coverage.dart +++ b/pkgs/test_core/lib/src/runner/coverage.dart @@ -30,8 +30,13 @@ Future writeCoverage( await out.flush(); await out.close(); } - final hitMapJson = coverage['coverage'] as List>?; - return hitMapJson == null ? const {} : HitMap.parseJson(hitMapJson); + return switch (coverage['coverage']) { + List hitMapJson? => HitMap.parseJson( + hitMapJson.cast>(), + ), + null => const {}, + _ => throw StateError('Invalid coverage data'), + }; } Future writeCoverageLcov( From 51ec4e9190341688a8093132b7fb5cc9a1a18cb8 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Thu, 20 Nov 2025 14:43:20 -0800 Subject: [PATCH 7/7] helpful context --- pkgs/test_core/lib/src/runner/coverage.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/test_core/lib/src/runner/coverage.dart b/pkgs/test_core/lib/src/runner/coverage.dart index 63ef8189e..bb29e6cb0 100644 --- a/pkgs/test_core/lib/src/runner/coverage.dart +++ b/pkgs/test_core/lib/src/runner/coverage.dart @@ -31,7 +31,10 @@ Future writeCoverage( await out.close(); } return switch (coverage['coverage']) { - List hitMapJson? => HitMap.parseJson( + // Matching on `List` the runtime type of `List` in JSON is + // never `Map`. The `cast` below ensures the runtime type + // is correct for `HitMap.parseJson`. + List hitMapJson => HitMap.parseJson( hitMapJson.cast>(), ), null => const {},