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"
+      }
+    }
+  ]
+}
+