From e3e6de9f1d3a667b60a6c1547c1a7a5dc6b099c8 Mon Sep 17 00:00:00 2001
From: cjtim <47479090+cjtim@users.noreply.github.com>
Date: Fri, 5 May 2023 02:19:00 +0700
Subject: [PATCH] fix(managers/gradle): allow dot annotation in version.ref
 (#21820)

Signed-off-by: Jinna C <jinnatim@gmail.com>
Co-authored-by: Johannes Feichtner <343448+Churro@users.noreply.github.com>
---
 .../gradle/__fixtures__/1/libs.versions.toml        |  2 +-
 .../gradle/__fixtures__/3/libs.versions.toml        |  2 +-
 lib/modules/manager/gradle/extract/catalog.ts       | 13 +++++++++----
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/lib/modules/manager/gradle/__fixtures__/1/libs.versions.toml b/lib/modules/manager/gradle/__fixtures__/1/libs.versions.toml
index fccce61156..8aac96c8ed 100644
--- a/lib/modules/manager/gradle/__fixtures__/1/libs.versions.toml
+++ b/lib/modules/manager/gradle/__fixtures__/1/libs.versions.toml
@@ -17,5 +17,5 @@ kotest = [ "kotest-runner-junit5", "kotest-assertions-core-jvm" ]
 
 [plugins]
 detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
-publish-on-central = { id = "org.danilopianini.publish-on-central", version.ref = "publish-on-central" }
+publish-on-central = { id = "org.danilopianini.publish-on-central", version.ref = "publish.on.central" }
 grgit = { id = "org.ajoberstar.grgit", version.unknown = "this will fail" }
diff --git a/lib/modules/manager/gradle/__fixtures__/3/libs.versions.toml b/lib/modules/manager/gradle/__fixtures__/3/libs.versions.toml
index bddeb5947d..7188d1a6c6 100644
--- a/lib/modules/manager/gradle/__fixtures__/3/libs.versions.toml
+++ b/lib/modules/manager/gradle/__fixtures__/3/libs.versions.toml
@@ -7,4 +7,4 @@ junit = "1.4.9"
 
 [libraries]
 junit-legacy = { module = "junit:junit", version.ref = "junit" }
-mocha-junit = { module = "mocha-junit:mocha-junit", version.ref = "mocha-junit-reporter" }
+mocha-junit = { module = "mocha-junit:mocha-junit", version.ref = "mocha.junit.reporter" }
diff --git a/lib/modules/manager/gradle/extract/catalog.ts b/lib/modules/manager/gradle/extract/catalog.ts
index 49b21cccee..16483dcb89 100644
--- a/lib/modules/manager/gradle/extract/catalog.ts
+++ b/lib/modules/manager/gradle/extract/catalog.ts
@@ -55,6 +55,10 @@ function isVersionPointer(
   return hasKey('ref', obj);
 }
 
+function normalizeVersionPointer(versionPointer: string): string {
+  return versionPointer.replace(regEx(/[._]/g), '-');
+}
+
 interface VersionExtract {
   currentValue?: string;
   fileReplacePosition?: number;
@@ -79,12 +83,13 @@ function extractVersion({
   versionSubContent: string;
 }): VersionExtract {
   if (isVersionPointer(version)) {
+    const parsedVersion = normalizeVersionPointer(version.ref);
     // everything else is ignored
     return extractLiteralVersion({
-      version: versions[version.ref],
+      version: versions[parsedVersion],
       depStartIndex: versionStartIndex,
       depSubContent: versionSubContent,
-      sectionKey: version.ref,
+      sectionKey: parsedVersion,
     });
   } else {
     return extractLiteralVersion({
@@ -205,7 +210,7 @@ function extractDependency({
     };
   }
   const versionRef = isVersionPointer(descriptor.version)
-    ? descriptor.version.ref
+    ? normalizeVersionPointer(descriptor.version.ref)
     : null;
   if (isArtifactDescriptor(descriptor)) {
     const { group, name } = descriptor;
@@ -284,7 +289,7 @@ export function parseCatalog(
       dependency.skipReason = skipReason;
     }
     if (isVersionPointer(version) && dependency.commitMessageTopic) {
-      dependency.groupName = version.ref;
+      dependency.groupName = normalizeVersionPointer(version.ref);
       delete dependency.commitMessageTopic;
     }
 
-- 
GitLab