From d320573e3d6e912fd6e5da82a221b528435f2fe3 Mon Sep 17 00:00:00 2001 From: Sergio Zharinov <zharinov@users.noreply.github.com> Date: Wed, 10 Jun 2020 12:30:20 +0400 Subject: [PATCH] fix(gradle): Additional matches for dependency versions (#6477) Co-authored-by: Michael Kriese <michael.kriese@visualon.de> --- .../gradle/__fixtures__/updatesReport.json | 10 ++ .../gradle/__snapshots__/index.spec.ts.snap | 100 ++++++++++++++++++ lib/manager/gradle/build-gradle.ts | 16 ++- lib/manager/gradle/index.spec.ts | 5 +- 4 files changed, 129 insertions(+), 2 deletions(-) diff --git a/lib/manager/gradle/__fixtures__/updatesReport.json b/lib/manager/gradle/__fixtures__/updatesReport.json index 28f4d15907..0fe80ecf55 100644 --- a/lib/manager/gradle/__fixtures__/updatesReport.json +++ b/lib/manager/gradle/__fixtures__/updatesReport.json @@ -30,6 +30,16 @@ "name": "scala-logging_%%", "group": "com.typesafe.scala-logging", "version": "3.9.0" + }, + { + "name": "foo", + "group": "foo", + "version": null + }, + { + "name": "bar", + "group": "bar", + "version": null } ] } diff --git a/lib/manager/gradle/__snapshots__/index.spec.ts.snap b/lib/manager/gradle/__snapshots__/index.spec.ts.snap index b9e1beaac7..e9758e7b91 100644 --- a/lib/manager/gradle/__snapshots__/index.spec.ts.snap +++ b/lib/manager/gradle/__snapshots__/index.spec.ts.snap @@ -211,6 +211,26 @@ Array [ "https://jitpack.io", ], }, + Object { + "currentValue": "1.2.3", + "depGroup": "foo", + "depName": "foo:foo", + "name": "foo", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, + Object { + "currentValue": "3.4.5", + "depGroup": "bar", + "depName": "bar:bar", + "name": "bar", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, ], "packageFile": "build.gradle", }, @@ -269,6 +289,26 @@ Array [ "https://jitpack.io", ], }, + Object { + "currentValue": "1.2.3", + "depGroup": "foo", + "depName": "foo:foo", + "name": "foo", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, + Object { + "currentValue": "3.4.5", + "depGroup": "bar", + "depName": "bar:bar", + "name": "bar", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, ], "packageFile": "subproject/build.gradle", }, @@ -354,6 +394,26 @@ Array [ "https://jitpack.io", ], }, + Object { + "currentValue": "1.2.3", + "depGroup": "foo", + "depName": "foo:foo", + "name": "foo", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, + Object { + "currentValue": "3.4.5", + "depGroup": "bar", + "depName": "bar:bar", + "name": "bar", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, ], "packageFile": "foo/build.gradle", }, @@ -439,6 +499,26 @@ Array [ "https://jitpack.io", ], }, + Object { + "currentValue": "1.2.3", + "depGroup": "foo", + "depName": "foo:foo", + "name": "foo", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, + Object { + "currentValue": "3.4.5", + "depGroup": "bar", + "depName": "bar:bar", + "name": "bar", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, ], "packageFile": "build.gradle.kts", }, @@ -497,6 +577,26 @@ Array [ "https://jitpack.io", ], }, + Object { + "currentValue": "1.2.3", + "depGroup": "foo", + "depName": "foo:foo", + "name": "foo", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, + Object { + "currentValue": "3.4.5", + "depGroup": "bar", + "depName": "bar:bar", + "name": "bar", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2/", + "https://jitpack.io", + ], + }, ], "packageFile": "subproject/build.gradle.kts", }, diff --git a/lib/manager/gradle/build-gradle.ts b/lib/manager/gradle/build-gradle.ts index a02aecb315..84ca91c2d4 100644 --- a/lib/manager/gradle/build-gradle.ts +++ b/lib/manager/gradle/build-gradle.ts @@ -137,6 +137,14 @@ function kotlinPluginVariableVersionFormatMatch( ); } +function dependencyStringVariableExpressionFormatMatch( + dependency: GradleDependency +): RegExp { + return regEx( + `\\s*dependency\\s+['"]${dependency.group}:${dependency.name}:([^'"]+)['"](?:\\s|;|})` + ); +} + function variableDefinitionFormatMatch(variable: string): RegExp { return regEx(`(${variable}\\s*=\\s*?["'])(.*)(["'])`); } @@ -162,16 +170,22 @@ export function collectVersionVariables( moduleStringVariableInterpolationVersionFormatMatch(dependency), groovyPluginVariableVersionFormatMatch(dependency), kotlinPluginVariableVersionFormatMatch(dependency), + dependencyStringVariableExpressionFormatMatch(dependency), ...moduleMapVariableVersionFormatMatch(dependency), ...moduleKotlinNamedArgumentVariableVersionFormatMatch(dependency), ]; + const depName = `${dependency.group}:${dependency.name}`; for (const regex of regexes) { const match = regex.exec(buildGradleContent); if (match) { - variables[`${dependency.group}:${dependency.name}`] = match[1]; + variables[depName] = match[1]; } } + + if (!dep.currentValue && variables[depName]) { + dep.currentValue = variables[depName]; + } } } diff --git a/lib/manager/gradle/index.spec.ts b/lib/manager/gradle/index.spec.ts index 53f13643de..5d9e863592 100644 --- a/lib/manager/gradle/index.spec.ts +++ b/lib/manager/gradle/index.spec.ts @@ -53,7 +53,10 @@ async function setupMocks() { const exec: jest.Mock<typeof _exec> = require('child_process').exec; const util: jest.Mocked<typeof _util> = require('../../util'); - utilfs.readLocalFile.mockResolvedValue('some content'); + utilfs.readLocalFile.mockResolvedValue(` + dependency 'foo:foo:1.2.3' + dependency "bar:bar:3.4.5" + `); env.getChildProcessEnv.mockReturnValue(envMock.basic); await util.setUtilConfig(baseConfig); -- GitLab