From e0cbabe452f2389738d65cc586858a5a9f1ec30f Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Thu, 24 Mar 2022 13:02:10 +0300
Subject: [PATCH] fix(gradle): Fix registry url parsing (#14783)

---
 lib/modules/manager/gradle/extract.ts     |  3 ++-
 lib/modules/manager/gradle/parser.spec.ts | 27 ++++++++++++-----------
 lib/modules/manager/gradle/parser.ts      | 24 ++++++++++++++++----
 3 files changed, 36 insertions(+), 18 deletions(-)

diff --git a/lib/modules/manager/gradle/extract.ts b/lib/modules/manager/gradle/extract.ts
index 7fd945f5ad..8e7bf0d24e 100644
--- a/lib/modules/manager/gradle/extract.ts
+++ b/lib/modules/manager/gradle/extract.ts
@@ -118,5 +118,6 @@ export async function extractAllPackageFiles(
     }
   });
 
-  return Object.values(packageFilesByName);
+  const result = Object.values(packageFilesByName);
+  return result;
 }
diff --git a/lib/modules/manager/gradle/parser.spec.ts b/lib/modules/manager/gradle/parser.spec.ts
index e0f70eee1a..ebea44eb7c 100644
--- a/lib/modules/manager/gradle/parser.spec.ts
+++ b/lib/modules/manager/gradle/parser.spec.ts
@@ -85,19 +85,20 @@ describe('modules/manager/gradle/parser', () => {
 
   describe('registryUrls', () => {
     test.each`
-      input                                           | url
-      ${'url ""'}                                     | ${null}
-      ${'url "#!@"'}                                  | ${null}
-      ${'url "https://example.com"'}                  | ${'https://example.com'}
-      ${'url("https://example.com")'}                 | ${'https://example.com'}
-      ${'mavenCentral()'}                             | ${MAVEN_REPO}
-      ${'jcenter()'}                                  | ${JCENTER_REPO}
-      ${'google()'}                                   | ${GOOGLE_REPO}
-      ${'google { content { includeGroup "foo" } }'}  | ${GOOGLE_REPO}
-      ${'gradlePluginPortal()'}                       | ${GRADLE_PLUGIN_PORTAL_REPO}
-      ${'maven("https://foo.bar/baz/qux")'}           | ${'https://foo.bar/baz/qux'}
-      ${'maven { url = uri("https://foo.bar/baz") }'} | ${'https://foo.bar/baz'}
-      ${"maven { url 'https://foo.bar/baz' }"}        | ${'https://foo.bar/baz'}
+      input                                          | url
+      ${'url ""'}                                    | ${null}
+      ${'url "#!@"'}                                 | ${null}
+      ${'url "https://example.com"'}                 | ${'https://example.com'}
+      ${'url("https://example.com")'}                | ${'https://example.com'}
+      ${'mavenCentral()'}                            | ${MAVEN_REPO}
+      ${'jcenter()'}                                 | ${JCENTER_REPO}
+      ${'google()'}                                  | ${GOOGLE_REPO}
+      ${'google { content { includeGroup "foo" } }'} | ${GOOGLE_REPO}
+      ${'gradlePluginPortal()'}                      | ${GRADLE_PLUGIN_PORTAL_REPO}
+      ${'maven("https://foo.bar/baz/qux")'}          | ${'https://foo.bar/baz/qux'}
+      ${'maven { url = uri("https://foo.bar/baz")'}  | ${'https://foo.bar/baz'}
+      ${"maven { url 'https://foo.bar/baz'"}         | ${'https://foo.bar/baz'}
+      ${"maven { url = 'https://foo.bar/baz'"}       | ${'https://foo.bar/baz'}
     `('$input', ({ input, url }) => {
       const expected = [url].filter(Boolean);
       const { urls } = parseGradle(input);
diff --git a/lib/modules/manager/gradle/parser.ts b/lib/modules/manager/gradle/parser.ts
index 08b7139c53..83cc596034 100644
--- a/lib/modules/manager/gradle/parser.ts
+++ b/lib/modules/manager/gradle/parser.ts
@@ -494,7 +494,25 @@ const matcherConfigs: SyntaxMatchConfig[] = [
     handler: processCustomRegistryUrl,
   },
   {
-    // maven { url = uri("https://maven.springframework.org/release") }
+    // maven { url = "https://maven.springframework.org/release"
+    matchers: [
+      {
+        matchType: TokenType.Word,
+        matchValue: 'maven',
+      },
+      { matchType: TokenType.LeftBrace },
+      {
+        matchType: TokenType.Word,
+        matchValue: 'url',
+      },
+      { matchType: TokenType.Assignment },
+      { matchType: TokenType.String, tokenMapKey: 'registryUrl' },
+      endOfInstruction,
+    ],
+    handler: processCustomRegistryUrl,
+  },
+  {
+    // maven { url = uri("https://maven.springframework.org/release")
     matchers: [
       {
         matchType: TokenType.Word,
@@ -513,13 +531,12 @@ const matcherConfigs: SyntaxMatchConfig[] = [
       { matchType: TokenType.LeftParen },
       { matchType: TokenType.String, tokenMapKey: 'registryUrl' },
       { matchType: TokenType.RightParen },
-      { matchType: TokenType.RightBrace },
       endOfInstruction,
     ],
     handler: processCustomRegistryUrl,
   },
   {
-    // maven { url "https://maven.springframework.org/release" }
+    // maven { url "https://maven.springframework.org/release"
     matchers: [
       {
         matchType: TokenType.Word,
@@ -531,7 +548,6 @@ const matcherConfigs: SyntaxMatchConfig[] = [
         matchValue: 'url',
       },
       { matchType: TokenType.String, tokenMapKey: 'registryUrl' },
-      { matchType: TokenType.RightBrace },
       endOfInstruction,
     ],
     handler: processCustomRegistryUrl,
-- 
GitLab