From aa50662d3daca92662cbd962c2032b373fe1a406 Mon Sep 17 00:00:00 2001
From: Johannes Feichtner <Churro@users.noreply.github.com>
Date: Sat, 2 Jul 2022 10:54:50 +0200
Subject: [PATCH] feat(gradle): add support for versions with underscores
 (#16365)

---
 lib/modules/manager/gradle/update.spec.ts | 12 ++++++------
 lib/modules/manager/gradle/utils.spec.ts  |  1 +
 lib/modules/manager/gradle/utils.ts       |  2 +-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/lib/modules/manager/gradle/update.spec.ts b/lib/modules/manager/gradle/update.spec.ts
index 3743330524..fa147b1b5c 100644
--- a/lib/modules/manager/gradle/update.spec.ts
+++ b/lib/modules/manager/gradle/update.spec.ts
@@ -4,7 +4,7 @@ describe('modules/manager/gradle/update', () => {
   it('replaces', () => {
     expect(
       updateDependency({
-        fileContent: '___1.2.3___',
+        fileContent: '###1.2.3###',
         upgrade: {
           currentValue: '1.2.3',
           newValue: '1.2.4',
@@ -13,13 +13,13 @@ describe('modules/manager/gradle/update', () => {
           },
         },
       })
-    ).toBe('___1.2.4___');
+    ).toBe('###1.2.4###');
   });
 
   it('groups', () => {
     expect(
       updateDependency({
-        fileContent: '___1.2.4___',
+        fileContent: '###1.2.4###',
         upgrade: {
           currentValue: '1.2.3',
           newValue: '1.2.5',
@@ -29,11 +29,11 @@ describe('modules/manager/gradle/update', () => {
           },
         },
       })
-    ).toBe('___1.2.5___');
+    ).toBe('###1.2.5###');
   });
 
   it('returns same content', () => {
-    const fileContent = '___1.2.4___';
+    const fileContent = '###1.2.4###';
     expect(
       updateDependency({
         fileContent,
@@ -51,7 +51,7 @@ describe('modules/manager/gradle/update', () => {
   it('returns null', () => {
     expect(
       updateDependency({
-        fileContent: '___1.3.0___',
+        fileContent: '###1.3.0###',
         upgrade: {
           currentValue: '1.2.3',
           newValue: '1.2.4',
diff --git a/lib/modules/manager/gradle/utils.spec.ts b/lib/modules/manager/gradle/utils.spec.ts
index fb67a13b48..b9dee3369c 100644
--- a/lib/modules/manager/gradle/utils.spec.ts
+++ b/lib/modules/manager/gradle/utils.spec.ts
@@ -19,6 +19,7 @@ describe('modules/manager/gradle/utils', () => {
       '(,2.0[',
       '2.1.1.RELEASE',
       '1.0.+',
+      '2022-05-10_55',
       'latest',
     ].forEach((input) => {
       expect(versionLikeSubstring(input)).toEqual(input);
diff --git a/lib/modules/manager/gradle/utils.ts b/lib/modules/manager/gradle/utils.ts
index bcaad4c15e..8e4ce240b6 100644
--- a/lib/modules/manager/gradle/utils.ts
+++ b/lib/modules/manager/gradle/utils.ts
@@ -13,7 +13,7 @@ const artifactRegex = regEx(
   '^[a-zA-Z][-_a-zA-Z0-9]*(?:\\.[a-zA-Z0-9][-_a-zA-Z0-9]*?)*$'
 );
 
-const versionLikeRegex = regEx('^(?<version>[-.\\[\\](),a-zA-Z0-9+]+)');
+const versionLikeRegex = regEx('^(?<version>[-_.\\[\\](),a-zA-Z0-9+]+)');
 
 // Extracts version-like and range-like strings
 // from the beginning of input
-- 
GitLab