From 6da8fdc208b3390246cfd6e9b35699ba8319c1a3 Mon Sep 17 00:00:00 2001
From: Lakshmipriya Sivakumar <priya.sivakumar@target.com>
Date: Fri, 1 Mar 2024 11:14:44 -0500
Subject: [PATCH] fix(sbt): initialize registry urls for sbt version (#27667)

---
 lib/modules/manager/sbt/extract.spec.ts | 26 +++++++++++++++++++++++++
 lib/modules/manager/sbt/extract.ts      |  8 ++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/lib/modules/manager/sbt/extract.spec.ts b/lib/modules/manager/sbt/extract.spec.ts
index fe4a05bf14..0d6e51afd3 100644
--- a/lib/modules/manager/sbt/extract.spec.ts
+++ b/lib/modules/manager/sbt/extract.spec.ts
@@ -556,5 +556,31 @@ describe('modules/manager/sbt/extract', () => {
       const packages = await extractAllPackageFiles({}, ['build.sbt']);
       expect(packages).toBeEmpty();
     });
+
+    it('extracts build properties correctly', async () => {
+      const buildProps = codeBlock`
+      sbt.version=1.6.0
+    `;
+      fs.readLocalFile.mockResolvedValueOnce(buildProps);
+      const packages = await extractAllPackageFiles({}, [
+        'project/build.properties',
+      ]);
+      expect(packages).toMatchObject([
+        {
+          deps: [
+            {
+              datasource: 'github-releases',
+              packageName: 'sbt/sbt',
+              depName: 'sbt/sbt',
+              currentValue: '1.6.0',
+              replaceString: 'sbt.version=1.6.0',
+              versioning: 'semver',
+              extractVersion: '^v(?<version>\\S+)',
+              registryUrls: ['https://repo1.maven.org/maven2'],
+            },
+          ],
+        },
+      ]);
+    });
   });
 });
diff --git a/lib/modules/manager/sbt/extract.ts b/lib/modules/manager/sbt/extract.ts
index 4933298b48..79808a8675 100644
--- a/lib/modules/manager/sbt/extract.ts
+++ b/lib/modules/manager/sbt/extract.ts
@@ -334,6 +334,7 @@ export function extractPackageFile(
         currentValue: sbtVersion,
         replaceString: matchString,
         extractVersion: '^v(?<version>\\S+)',
+        registryUrls: [],
       };
 
       return {
@@ -394,13 +395,12 @@ export async function extractAllPackageFiles(
   }
   for (const pkg of packages) {
     for (const dep of pkg.deps) {
-      dep.registryUrls ??= [];
       if (proxyUrls.length > 0) {
-        dep.registryUrls.unshift(...proxyUrls);
+        dep.registryUrls!.unshift(...proxyUrls);
       } else if (dep.depType === 'plugin') {
-        dep.registryUrls.unshift(SBT_PLUGINS_REPO, SBT_MVN_REPO);
+        dep.registryUrls!.unshift(SBT_PLUGINS_REPO, SBT_MVN_REPO);
       } else {
-        dep.registryUrls.unshift(SBT_MVN_REPO);
+        dep.registryUrls!.unshift(SBT_MVN_REPO);
       }
     }
   }
-- 
GitLab