Add outdated test for advisories mentioning the same package twice (#4182)
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart index df08310..084c8dc 100644 --- a/test/outdated/outdated_test.dart +++ b/test/outdated/outdated_test.dart
@@ -543,6 +543,42 @@ await ctx.runOutdatedTests(); }); + testWithGolden('show advisory - current, same package mentioned twice', + (ctx) async { + final builder = await servePackages(); + builder + ..serve('foo', '1.0.0', deps: {'transitive': '^1.0.0'}) + ..serve('transitive', '1.2.3'); + + await d.dir(appPath, [ + d.pubspec({ + 'name': 'app', + 'dependencies': { + 'foo': '^1.0.0', + }, + }), + ]).create(); + await pubGet(); + + builder.addAdvisory( + advisoryId: 'ABCD-1234-5678-9101', + displayUrl: 'https://github.com/advisories/ABCD-1234-5678-9101', + affectedPackages: [ + AffectedPackage( + name: 'foo', + versions: ['0.0.1'], + ), + AffectedPackage( + name: 'foo', + versions: ['1.0.0'], + ), + ], + ); + + builder.serve('foo', '1.2.0'); + await ctx.runOutdatedTests(); + }); + testWithGolden('show advisory - current also retracted', (ctx) async { final builder = await servePackages(); builder
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt new file mode 100644 index 0000000..b991160 --- /dev/null +++ b/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt
@@ -0,0 +1,188 @@ +# GENERATED BY: test/outdated/outdated_test.dart + +## Section 0 +$ pub outdated --json +{ + "packages": [ + { + "package": "foo", + "kind": "direct", + "isDiscontinued": false, + "isCurrentRetracted": false, + "isCurrentAffectedByAdvisory": true, + "current": { + "version": "1.0.0" + }, + "upgradable": { + "version": "1.2.0" + }, + "resolvable": { + "version": "1.2.0" + }, + "latest": { + "version": "1.2.0" + } + } + ] +} + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 1 +$ pub outdated --no-color +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 2 +$ pub outdated --no-color --no-transitive +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 3 +$ pub outdated --no-color --up-to-date +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 4 +$ pub outdated --no-color --prereleases +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 5 +$ pub outdated --no-color --no-dev-dependencies +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 6 +$ pub outdated --no-color --no-dependency-overrides +Showing outdated packages. +[*] indicates versions that are not the latest available. + +Package Name Current Upgradable Resolvable Latest + +direct dependencies: +foo *1.0.0 (advisory) 1.2.0 1.2.0 1.2.0 + +1 upgradable dependency is locked (in pubspec.lock) to an older version. +To update it, use `dart pub upgrade`. + +foo + Package foo is affected by a security advisory. See https://dart.dev//go/pub-security-advisories + + - "Example" + Affects: 1.0.0 + https://github.com/advisories/ABCD-1234-5678-9101 + +-------------------------------- END OF OUTPUT --------------------------------- + +## Section 7 +$ pub outdated --json --no-dev-dependencies +{ + "packages": [ + { + "package": "foo", + "kind": "direct", + "isDiscontinued": false, + "isCurrentRetracted": false, + "isCurrentAffectedByAdvisory": true, + "current": { + "version": "1.0.0" + }, + "upgradable": { + "version": "1.2.0" + }, + "resolvable": { + "version": "1.2.0" + }, + "latest": { + "version": "1.2.0" + } + } + ] +} +