Add support for 'ignored_advisories' field (dart-lang/pubspec_parse#118)
diff --git a/pkgs/pubspec_parse/CHANGELOG.md b/pkgs/pubspec_parse/CHANGELOG.md index 7444f4f..87dd5ca 100644 --- a/pkgs/pubspec_parse/CHANGELOG.md +++ b/pkgs/pubspec_parse/CHANGELOG.md
@@ -1,6 +1,7 @@ ## 1.2.4-wip - Require Dart 3.0 +- Added support for `ignored_advisories` field. ## 1.2.3
diff --git a/pkgs/pubspec_parse/lib/src/pubspec.dart b/pkgs/pubspec_parse/lib/src/pubspec.dart index 3eb73cc..f6934ee 100644 --- a/pkgs/pubspec_parse/lib/src/pubspec.dart +++ b/pkgs/pubspec_parse/lib/src/pubspec.dart
@@ -47,6 +47,9 @@ /// Optional field to list the topics that this packages belongs to. final List<String>? topics; + /// Optional field to list advisories to be ignored by the client. + final List<String>? ignoredAdvisories; + /// Optional field for specifying included screenshot files. @JsonKey(fromJson: parseScreenshots) final List<Screenshot>? screenshots; @@ -110,6 +113,7 @@ this.issueTracker, this.funding, this.topics, + this.ignoredAdvisories, this.screenshots, this.documentation, this.description,
diff --git a/pkgs/pubspec_parse/lib/src/pubspec.g.dart b/pkgs/pubspec_parse/lib/src/pubspec.g.dart index 6229994..fc28571 100644 --- a/pkgs/pubspec_parse/lib/src/pubspec.g.dart +++ b/pkgs/pubspec_parse/lib/src/pubspec.g.dart
@@ -34,6 +34,8 @@ .toList()), topics: $checkedConvert('topics', (v) => (v as List<dynamic>?)?.map((e) => e as String).toList()), + ignoredAdvisories: $checkedConvert('ignored_advisories', + (v) => (v as List<dynamic>?)?.map((e) => e as String).toList()), screenshots: $checkedConvert( 'screenshots', (v) => parseScreenshots(v as List?)), documentation: $checkedConvert('documentation', (v) => v as String?), @@ -55,6 +57,7 @@ fieldKeyMap: const { 'publishTo': 'publish_to', 'issueTracker': 'issue_tracker', + 'ignoredAdvisories': 'ignored_advisories', 'devDependencies': 'dev_dependencies', 'dependencyOverrides': 'dependency_overrides' },
diff --git a/pkgs/pubspec_parse/test/parse_test.dart b/pkgs/pubspec_parse/test/parse_test.dart index 31042f1..6251f41 100644 --- a/pkgs/pubspec_parse/test/parse_test.dart +++ b/pkgs/pubspec_parse/test/parse_test.dart
@@ -52,6 +52,7 @@ 'https://patreon.com/example', ], 'topics': ['widget', 'button'], + 'ignored_advisories': ['111', '222'], 'screenshots': [ {'description': 'my screenshot', 'path': 'path/to/screenshot'}, ], @@ -79,6 +80,9 @@ expect(value.topics, hasLength(2)); expect(value.topics!.first, 'widget'); expect(value.topics!.last, 'button'); + expect(value.ignoredAdvisories, hasLength(2)); + expect(value.ignoredAdvisories!.first, '111'); + expect(value.ignoredAdvisories!.last, '222'); expect(value.screenshots, hasLength(1)); expect(value.screenshots!.first.description, 'my screenshot'); expect(value.screenshots!.first.path, 'path/to/screenshot'); @@ -425,6 +429,43 @@ }); }); + group('ignored_advisories', () { + test('not a list', () { + expectParseThrowsContaining( + { + ...defaultPubspec, + 'ignored_advisories': 1, + }, + "Unsupported value for \"ignored_advisories\". type 'int' is not a subtype of type 'List<dynamic>?'", + skipTryPub: true, + ); + }); + + test('not a string', () { + expectParseThrowsContaining( + { + ...defaultPubspec, + 'ignored_advisories': [1], + }, + "Unsupported value for \"ignored_advisories\". type 'int' is not a subtype of type 'String'", + skipTryPub: true, + ); + }); + + test('invalid data - lenient', () async { + final value = await parse( + { + ...defaultPubspec, + 'ignored_advisories': [1], + }, + skipTryPub: true, + lenient: true, + ); + expect(value.name, 'sample'); + expect(value.ignoredAdvisories, isNull); + }); + }); + group('screenshots', () { test('one screenshot', () async { final value = await parse({