From 3bf949d6a8dc367b5720dc1a81e65c3aed9cac40 Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 28 May 2025 10:12:25 +1000 Subject: [PATCH 1/2] [coverage] Switch from package:pubspec_parse to package:yaml --- pkgs/coverage/lib/src/util.dart | 18 +++++++++++------- pkgs/coverage/pubspec.yaml | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/pkgs/coverage/lib/src/util.dart b/pkgs/coverage/lib/src/util.dart index 74a1697f2..8ae1a4b79 100644 --- a/pkgs/coverage/lib/src/util.dart +++ b/pkgs/coverage/lib/src/util.dart @@ -7,8 +7,8 @@ import 'dart:convert'; import 'dart:io'; import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; import 'package:vm_service/vm_service.dart'; +import 'package:yaml/yaml.dart'; // TODO(cbracken) make generic /// Retries the specified function with the specified interval and returns @@ -174,12 +174,16 @@ List getAllWorkspaceNames(String packageRoot) => _getAllWorkspaceNames(packageRoot, []); List _getAllWorkspaceNames(String packageRoot, List results) { - final pubspecPath = getPubspecPath(packageRoot); - final yaml = File(pubspecPath).readAsStringSync(); - final pubspec = Pubspec.parse(yaml, sourceUrl: Uri.file(pubspecPath)); - results.add(pubspec.name); - for (final workspace in pubspec.workspace ?? []) { - _getAllWorkspaceNames(path.join(packageRoot, workspace), results); + final pubspec = _loadPubspec(packageRoot); + results.add(pubspec['name'] as String); + for (final workspace in pubspec['workspace'] as YamlList? ?? []) { + _getAllWorkspaceNames(path.join(packageRoot, workspace as String), results); } return results; } + +YamlMap _loadPubspec(String packageRoot) { + final pubspecPath = getPubspecPath(packageRoot); + final yaml = File(pubspecPath).readAsStringSync(); + return loadYaml(yaml, sourceUrl: Uri.file(pubspecPath)) as YamlMap; +} diff --git a/pkgs/coverage/pubspec.yaml b/pkgs/coverage/pubspec.yaml index e4a229e7d..0c4f858d4 100644 --- a/pkgs/coverage/pubspec.yaml +++ b/pkgs/coverage/pubspec.yaml @@ -15,10 +15,10 @@ dependencies: meta: ^1.0.2 package_config: ^2.0.0 path: ^1.8.0 - pubspec_parse: ^1.5.0 source_maps: ^0.10.10 stack_trace: ^1.10.0 vm_service: '>=12.0.0 <16.0.0' + yaml: ^3.1.3 dev_dependencies: benchmark_harness: ^2.2.0 From ceeaee8848d8cf83d24dbf18cef759a57d272f34 Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Wed, 28 May 2025 10:19:00 +1000 Subject: [PATCH 2/2] changelog --- pkgs/coverage/CHANGELOG.md | 4 ++++ pkgs/coverage/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/coverage/CHANGELOG.md b/pkgs/coverage/CHANGELOG.md index 2a680adbe..98f88523f 100644 --- a/pkgs/coverage/CHANGELOG.md +++ b/pkgs/coverage/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.14.1-wip + +- Remove dependency on `package:pubspec_parse`. + ## 1.14.0 - Require Dart ^3.6.0 diff --git a/pkgs/coverage/pubspec.yaml b/pkgs/coverage/pubspec.yaml index 0c4f858d4..3228ab310 100644 --- a/pkgs/coverage/pubspec.yaml +++ b/pkgs/coverage/pubspec.yaml @@ -1,5 +1,5 @@ name: coverage -version: 1.14.0 +version: 1.14.1-wip description: Coverage data manipulation and formatting repository: https://github.com/dart-lang/tools/tree/main/pkgs/coverage issue_tracker: https://github.com/dart-lang/tools/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Acoverage