From 10b2f699792716b9d2c0fd5901aabbcd28553651 Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Mon, 8 Mar 2021 09:19:36 +0400
Subject: [PATCH] refactor(gradle-lite): Deduplicate registryUrls (#9023)

* refactor(gradle-lite): Deduplicate registryUrls

* Add unit test

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---
 lib/manager/gradle-lite/extract.spec.ts | 39 +++++++++++++++++++++++++
 lib/manager/gradle-lite/extract.ts      |  8 +++--
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/lib/manager/gradle-lite/extract.spec.ts b/lib/manager/gradle-lite/extract.spec.ts
index dfe1d36831..babed33957 100644
--- a/lib/manager/gradle-lite/extract.spec.ts
+++ b/lib/manager/gradle-lite/extract.spec.ts
@@ -99,4 +99,43 @@ describe('manager/gradle-lite/extract', () => {
       { packageFile: 'aaa/bbb/build.gradle', deps: [] },
     ]);
   });
+
+  it('deduplicates registry urls', async () => {
+    const fsMock = {
+      'build.gradle': [
+        'url "https://repo.maven.apache.org/maven2"',
+        'url "https://repo.maven.apache.org/maven2"',
+        'url "https://example.com"',
+        'url "https://example.com"',
+        'id "foo.bar" version "1.2.3"',
+        '"foo:bar:1.2.3"',
+      ].join(';\n'),
+    };
+
+    mockFs(fsMock);
+
+    const res = await extractAllPackageFiles({} as never, Object.keys(fsMock));
+
+    expect(res).toMatchObject([
+      {
+        packageFile: 'build.gradle',
+        deps: [
+          {
+            depType: 'plugin',
+            registryUrls: [
+              'https://repo.maven.apache.org/maven2',
+              'https://plugins.gradle.org/m2/',
+              'https://example.com',
+            ],
+          },
+          {
+            registryUrls: [
+              'https://repo.maven.apache.org/maven2',
+              'https://example.com',
+            ],
+          },
+        ],
+      },
+    ]);
+  });
 });
diff --git a/lib/manager/gradle-lite/extract.ts b/lib/manager/gradle-lite/extract.ts
index d5e5bccfc3..80c5db748b 100644
--- a/lib/manager/gradle-lite/extract.ts
+++ b/lib/manager/gradle-lite/extract.ts
@@ -91,9 +91,11 @@ export async function extractAllPackageFiles(
     deps.push({
       ...dep,
       registryUrls: [
-        ...defaultRegistryUrls,
-        ...(dep.registryUrls || []),
-        ...registryUrls,
+        ...new Set([
+          ...defaultRegistryUrls,
+          ...(dep.registryUrls || []),
+          ...registryUrls,
+        ]),
       ],
     });
     packageFilesByName[key] = pkgFile;
-- 
GitLab