diff --git a/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties new file mode 100644 index 0000000000000000000000000000000000000000..9953c8e10896085ab3c0e7f90f29d94a868ab1a9 --- /dev/null +++ b/lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +# @See https://gradle.org/releases/ +distributionUrl=https\://artifactory/gradle-wrapper-cache/distributions/gradle-4.8-bin.zip +distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043 diff --git a/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap b/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap index c79a1881cef7ddbee546f61bb06acd8a704da47c..576ae8c81a2794a35c43d39d2c60e1ca28d3aa1c 100644 --- a/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap +++ b/lib/manager/gradle-wrapper/__snapshots__/update.spec.ts.snap @@ -1,5 +1,16 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`manager/gradle-wrapper/update updateDependency replaces existing value (custom distributionUrl) 1`] = ` +"distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +# @See https://gradle.org/releases/ +distributionUrl=https\\\\://artifactory/gradle-wrapper-cache/distributions/gradle-5.0-bin.zip +distributionSha256Sum=17847c8e12b2bcfce26a79f425f082c31d4ded822f99a66127eee2d96bf18216 +" +`; + exports[`manager/gradle-wrapper/update updateDependency replaces existing value 1`] = ` "distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists diff --git a/lib/manager/gradle-wrapper/search.ts b/lib/manager/gradle-wrapper/search.ts index d046f3e2d1ab88b399b5793d03b10fd9f3716e6a..2470a71db76f65d124f3ef2ec0b8995816765606 100644 --- a/lib/manager/gradle-wrapper/search.ts +++ b/lib/manager/gradle-wrapper/search.ts @@ -1,2 +1,4 @@ export const DISTRIBUTION_URL_REGEX = /^(?<assignment>distributionUrl\s*=\s*)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/; export const DISTRIBUTION_CHECKSUM_REGEX = /^(?<assignment>distributionSha256Sum\s*=\s*)(?<checksum>(\w){64}).*$/; +export const DOWNLOAD_URL_REGEX = /^(?<http>http)\S*-(?<version>(\d|\.)+)-(?<type>bin|all)\.zip\s*$/; +export const VERSION_REGEX = /-(?<version>(\d|\.)+)-/; diff --git a/lib/manager/gradle-wrapper/update.spec.ts b/lib/manager/gradle-wrapper/update.spec.ts index bf13af66d6ce8696fe15487012fe18794e4e8136..9e18ac17adb212f836aef2124b5cf08d5677a4cb 100644 --- a/lib/manager/gradle-wrapper/update.spec.ts +++ b/lib/manager/gradle-wrapper/update.spec.ts @@ -11,6 +11,10 @@ const propertiesFile2 = fs.readFileSync( 'lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-2.properties', 'utf8' ); +const propertiesFileCustomDistUrl = fs.readFileSync( + 'lib/manager/gradle-wrapper/__fixtures__/gradle-wrapper-custom-distribution-url.properties', + 'utf8' +); const whitespacePropertiesFile = readFileSync( resolve(__dirname, './__fixtures__/gradle-wrapper-whitespace.properties'), 'utf8' @@ -75,6 +79,23 @@ describe('manager/gradle-wrapper/update', () => { expect(res).toMatch(testUpgrades[5].checksum); }); + it('replaces existing value (custom distributionUrl)', async () => { + got.mockReturnValueOnce({ + body: testUpgrades[5].checksum, + }); + const res = await dcUpdate.updateDependency({ + fileContent: propertiesFileCustomDistUrl, + upgrade: testUpgrades[5].data, + }); + expect(res).toMatchSnapshot(); + expect(res).not.toBeNull(); + expect(res).not.toEqual(propertiesFileCustomDistUrl); + expect(res).toMatch( + 'https\\://artifactory/gradle-wrapper-cache/distributions/gradle-5.0-bin.zip' + ); + expect(res).toMatch(testUpgrades[5].checksum); + }); + it('replaces in property files with whitespace', async () => { got.mockReturnValueOnce({ body: testUpgrades[5].checksum, diff --git a/lib/manager/gradle-wrapper/update.ts b/lib/manager/gradle-wrapper/update.ts index 4911d45d3779b41ea0ed8fdd95e0ceb0785497ca..fe9e77d6120b7438905114f93bca94a715967d57 100644 --- a/lib/manager/gradle-wrapper/update.ts +++ b/lib/manager/gradle-wrapper/update.ts @@ -1,7 +1,11 @@ import got from '../../util/got'; import { logger } from '../../logger'; import { UpdateDependencyConfig } from '../common'; -import { DISTRIBUTION_CHECKSUM_REGEX, DISTRIBUTION_URL_REGEX } from './search'; +import { + DISTRIBUTION_CHECKSUM_REGEX, + DOWNLOAD_URL_REGEX, + VERSION_REGEX, +} from './search'; function replaceType(url: string): string { return url.replace('bin', 'all'); @@ -41,7 +45,10 @@ export async function updateDependency({ lines[upgrade.managerData.lineNumber] = lines[ upgrade.managerData.lineNumber - ].replace(DISTRIBUTION_URL_REGEX, `$<assignment>${downloadUrl}`); + ].replace( + VERSION_REGEX, + `-${DOWNLOAD_URL_REGEX.exec(downloadUrl).groups.version}-` + ); if (upgrade.managerData.checksumLineNumber) { lines[upgrade.managerData.checksumLineNumber] = lines[