From 1ff41bccb410ad507fdd7151f6664c5ade45621f Mon Sep 17 00:00:00 2001 From: Michael Kriese <michael.kriese@visualon.de> Date: Wed, 24 Mar 2021 08:10:29 +0100 Subject: [PATCH] fix(gradle-wrapper): parse prerelease and milestones (#9261) --- .../__fixtures__/gradle-wrapper-3.properties | 5 ++++ .../__fixtures__/gradle-wrapper-4.properties | 5 ++++ .../__snapshots__/extract.spec.ts.snap | 17 +++++++++++--- lib/manager/gradle-wrapper/extract.spec.ts | 23 ++++++++++++++++++- lib/manager/gradle-wrapper/extract.ts | 6 ++++- 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties create mode 100644 lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties new file mode 100644 index 0000000000..a78c7b6f53 --- /dev/null +++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-3.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-milestone-1-bin.zip diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties new file mode 100644 index 0000000000..d98eba7fbb --- /dev/null +++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-4.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7-rc-1-bin.zip diff --git a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap index 979ae7197a..b048851703 100644 --- a/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap +++ b/lib/manager/gradle-wrapper/__snapshots__/extract.spec.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`lib/manager/gradle-wrapper/extract extractPackageFile() extracts all version line 1`] = ` +exports[`manager/gradle-wrapper/extract extractPackageFile() extracts all version line 1`] = ` Array [ Object { "currentValue": "4.10.3", @@ -11,7 +11,7 @@ Array [ ] `; -exports[`lib/manager/gradle-wrapper/extract extractPackageFile() extracts bin version line 1`] = ` +exports[`manager/gradle-wrapper/extract extractPackageFile() extracts bin version line 1`] = ` Array [ Object { "currentValue": "4.8", @@ -22,7 +22,18 @@ Array [ ] `; -exports[`lib/manager/gradle-wrapper/extract extractPackageFile() handles whitespace 1`] = ` +exports[`manager/gradle-wrapper/extract extractPackageFile() extracts prerelease version line 1`] = ` +Array [ + Object { + "currentValue": "7.0-milestone-1", + "datasource": "gradle-version", + "depName": "gradle", + "versioning": "gradle", + }, +] +`; + +exports[`manager/gradle-wrapper/extract extractPackageFile() handles whitespace 1`] = ` Array [ Object { "currentValue": "4.10.3", diff --git a/lib/manager/gradle-wrapper/extract.spec.ts b/lib/manager/gradle-wrapper/extract.spec.ts index e6ec09b1e6..b3d3a149d1 100644 --- a/lib/manager/gradle-wrapper/extract.spec.ts +++ b/lib/manager/gradle-wrapper/extract.spec.ts @@ -1,5 +1,6 @@ import { readFileSync } from 'fs'; import { resolve } from 'upath'; +import { getName } from '../../../test/util'; import { extractPackageFile } from './extract'; const propertiesFile1 = readFileSync( @@ -10,12 +11,20 @@ const propertiesFile2 = readFileSync( resolve(__dirname, './__fixtures__/gradle-wrapper-2.properties'), 'utf8' ); +const propertiesFile3 = readFileSync( + resolve(__dirname, './__fixtures__/gradle-wrapper-3.properties'), + 'utf8' +); +const propertiesFile4 = readFileSync( + resolve(__dirname, './__fixtures__/gradle-wrapper-4.properties'), + 'utf8' +); const whitespacePropertiesFile = readFileSync( resolve(__dirname, './__fixtures__/gradle-wrapper-whitespace.properties'), 'utf8' ); -describe('lib/manager/gradle-wrapper/extract', () => { +describe(getName(__filename), () => { describe('extractPackageFile()', () => { it('returns null for empty', () => { expect(extractPackageFile('nothing here')).toBeNull(); @@ -30,6 +39,18 @@ describe('lib/manager/gradle-wrapper/extract', () => { const res = extractPackageFile(propertiesFile2); expect(res.deps).toMatchSnapshot(); }); + + it('extracts prerelease version line', () => { + const res = extractPackageFile(propertiesFile3); + expect(res.deps).toMatchSnapshot(); + expect(res.deps[0].currentValue).toBe('7.0-milestone-1'); + }); + + it('ignores invalid', () => { + const res = extractPackageFile(propertiesFile4); + expect(res).toBeNull(); + }); + it('handles whitespace', () => { const res = extractPackageFile(whitespacePropertiesFile); expect(res.deps).toMatchSnapshot(); diff --git a/lib/manager/gradle-wrapper/extract.ts b/lib/manager/gradle-wrapper/extract.ts index 426ea5b89a..6aedb9b0ae 100644 --- a/lib/manager/gradle-wrapper/extract.ts +++ b/lib/manager/gradle-wrapper/extract.ts @@ -1,9 +1,13 @@ import * as datasourceGradleVersion from '../../datasource/gradle-version'; import { logger } from '../../logger'; +import { regEx } from '../../util/regex'; import * as gradleVersioning from '../../versioning/gradle'; import type { PackageDependency, PackageFile } from '../types'; -const DISTRIBUTION_URL_REGEX = /^(?<assignment>distributionUrl\s*=\s*)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/; +// https://regex101.com/r/1GaQ2X/1 +const DISTRIBUTION_URL_REGEX = regEx( + '^(?:distributionUrl\\s*=\\s*)\\S*-(?<version>\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)-(?<type>bin|all)\\.zip\\s*$' +); export function extractPackageFile(fileContent: string): PackageFile | null { logger.debug('gradle-wrapper.extractPackageFile()'); -- GitLab