diff --git a/lib/manager/gradle-lite/extract.spec.ts b/lib/manager/gradle-lite/extract.spec.ts index dfe1d36831d82fb4b8a52e2589c88c85f5e69b85..babed339579c3b5dee6b2ad59947a8897b6b47bf 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 d5e5bccfc3a6e718f27b5c32093fb6dbae992038..80c5db748b9788e748eef4167b49a0d9b50bd9f9 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;