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 0000000000000000000000000000000000000000..a78c7b6f53f70510ff92aee962643faed7d9deb7 --- /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 0000000000000000000000000000000000000000..d98eba7fbb009ef80e1f4976d92553a742e64a65 --- /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 979ae7197a8f743e0b153537f38a45a10b3dc46e..b0488517032ba8b6efcf54be388cbb5907728874 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 e6ec09b1e61e363da604e987da6bc8781a11c11b..b3d3a149d131c74b870627d7f05d493ad19cee32 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 426ea5b89a010a87f3b8e37b8339780327b59e98..6aedb9b0ae6c3d38d65c0398073d6a8631c37e7b 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()');