diff --git a/lib/manager/common.ts b/lib/manager/common.ts index fc93f0af233760ba21934ed66ad716a201f6ffb8..044a5085673da59f06c2cdb6a9c7709570f23a75 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -40,6 +40,7 @@ export interface UpdateArtifactsConfig extends ManagerConfig { compatibility?: Record<string, string>; cacheDir?: string; composerIgnorePlatformReqs?: boolean; + currentValue?: string; postUpdateOptions?: string[]; ignoreScripts?: boolean; diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts index bdd5b125262f616672b079d23b9bd6414a99d166..c6994b2843d54b9fd2a069115022fd0431a54cbc 100644 --- a/lib/manager/gradle-wrapper/artifacts.spec.ts +++ b/lib/manager/gradle-wrapper/artifacts.spec.ts @@ -39,8 +39,9 @@ function compareFile(file: string, path: string) { describe(getName(__filename), () => { ifSystemSupportsGradle(6).describe('real tests', () => { + jest.setTimeout(60 * 1000); + beforeEach(async () => { - jest.setTimeout(5 * 60 * 1000); jest.resetAllMocks(); await setUtilConfig(config); httpMock.setup(); @@ -48,7 +49,7 @@ describe(getName(__filename), () => { }); afterEach(async () => { - await Git(config.localDir)?.checkout(['--', '.']); + await Git(fixtures)?.checkout(['HEAD', '--', '.']); httpMock.reset(); }); @@ -63,7 +64,7 @@ describe(getName(__filename), () => { } as Git.StatusResult); const res = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], newPackageFileContent: await readString( `./expectedFiles/gradle/wrapper/gradle-wrapper.properties` @@ -105,7 +106,7 @@ describe(getName(__filename), () => { ); const result = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], newPackageFileContent: ``, config: { ...config, toVersion: '6.3' }, @@ -123,7 +124,7 @@ describe(getName(__filename), () => { } as Git.StatusResult); const res = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], newPackageFileContent: await readString( `./testFiles/gradle/wrapper/gradle-wrapper.properties` @@ -147,7 +148,7 @@ describe(getName(__filename), () => { }); const res = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], newPackageFileContent: await readString( `./testFiles/gradle/wrapper/gradle-wrapper.properties` @@ -156,7 +157,7 @@ describe(getName(__filename), () => { }); expect(res[0].artifactError.lockFile).toEqual( - 'gradle-wrapper.properties' + 'gradle/wrapper/gradle-wrapper.properties' ); expect(res[0].artifactError.stderr).toEqual('failed'); @@ -218,12 +219,20 @@ describe(getName(__filename), () => { modified: ['gradle/wrapper/gradle-wrapper.properties'], }) ); + const newContent = await readString(`./gradle-wrapper-sum.properties`); const result = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], - newPackageFileContent: `distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.3-bin.zip`, - config, + newPackageFileContent: newContent.replace( + '038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768', + '1f3067073041bc44554d0efe5d402a33bc3d3c93cc39ab684f308586d732a80d' + ), + config: { + ...config, + toVersion: '6.3', + currentValue: '5.6.4', + }, }); expect(result).toHaveLength(1); @@ -234,7 +243,7 @@ describe(getName(__filename), () => { config.localDir, `./gradle/wrapper/gradle-wrapper.properties` ) - ).toEqual(await readString(`./gradle-wrapper-sum.properties`)); + ).toEqual(newContent); expect(httpMock.getTrace()).toEqual([ { @@ -257,7 +266,7 @@ describe(getName(__filename), () => { .reply(404); const result = await dcUpdate.updateArtifacts({ - packageFileName: 'gradle-wrapper.properties', + packageFileName: 'gradle/wrapper/gradle-wrapper.properties', updatedDeps: [], newPackageFileContent: `distributionSha256Sum=336b6898b491f6334502d8074a6b8c2d73ed83b92123106bd4bf837f04111043\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-6.3-bin.zip`, config, @@ -266,7 +275,7 @@ describe(getName(__filename), () => { expect(result).toEqual([ { artifactError: { - lockFile: 'gradle-wrapper.properties', + lockFile: 'gradle/wrapper/gradle-wrapper.properties', stderr: 'Response code 404 (Not Found)', }, }, diff --git a/lib/manager/gradle-wrapper/artifacts.ts b/lib/manager/gradle-wrapper/artifacts.ts index df5aeedaa045869bcfb3e43cee969eea81784cff..f7d75d262b0bfca0cc51d7866d869e5cf63d03cc 100644 --- a/lib/manager/gradle-wrapper/artifacts.ts +++ b/lib/manager/gradle-wrapper/artifacts.ts @@ -5,7 +5,7 @@ import Git from 'simple-git/promise'; import { logger } from '../../logger'; import { platform } from '../../platform'; import { ExecOptions, exec } from '../../util/exec'; -import { readLocalFile } from '../../util/fs'; +import { readLocalFile, writeLocalFile } from '../../util/fs'; import { Http } from '../../util/http'; import { UpdateArtifact, UpdateArtifactsResult } from '../common'; import { gradleWrapperFileName, prepareGradleCommand } from '../gradle/index'; @@ -69,6 +69,11 @@ export async function updateArtifacts({ if (distributionUrl) { cmd += ` --gradle-distribution-url ${distributionUrl}`; if (newPackageFileContent.includes('distributionSha256Sum=')) { + // need to reset version, otherwise we have a checksum missmatch + await writeLocalFile( + packageFileName, + newPackageFileContent.replace(config.toVersion, config.currentValue) + ); const checksum = await getDistributionChecksum(distributionUrl); cmd += ` --gradle-distribution-sha256-sum ${checksum}`; } @@ -84,6 +89,7 @@ export async function updateArtifacts({ try { await exec(cmd, execOptions); } catch (err) { + // TODO: Is this an artifact error? logger.warn( { err }, 'Error executing gradle wrapper update command. It can be not a critical one though.'