Skip to content

Commit

Permalink
fix: do not coerce gradle version (#5991)
Browse files Browse the repository at this point in the history
  • Loading branch information
viceice committed Apr 17, 2020
1 parent 64edf30 commit da0181e
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 170 deletions.
294 changes: 147 additions & 147 deletions lib/datasource/gradle-version/__snapshots__/index.spec.ts.snap

Large diffs are not rendered by default.

3 changes: 1 addition & 2 deletions lib/datasource/gradle-version/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import is from '@sindresorhus/is';
import { coerce } from 'semver';
import { regEx } from '../../util/regex';
import { logger } from '../../logger';
import { Http } from '../../util/http';
Expand Down Expand Up @@ -59,7 +58,7 @@ export async function getReleases({
release.rcFor === '' && !release.version.includes('milestone')
)
.map((release) => ({
version: coerce(release.version).toString(),
version: release.version,
downloadUrl: release.downloadUrl,
checksumUrl: release.checksumUrl,
releaseTimestamp: formatBuildTime(release.buildTime),
Expand Down
7 changes: 5 additions & 2 deletions lib/manager/gradle-wrapper/artifacts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ import { resolve } from 'path';
import Git from 'simple-git/promise';
import * as dcUpdate from '.';
import { platform as _platform } from '../../platform';
import { mocked, getName } from '../../../test/util';
import { mocked, getName, bufferSerializer } from '../../../test/util';
import { ifSystemSupportsGradle } from '../gradle/__testutil__/gradle';
import { setUtilConfig } from '../../util';

const platform = mocked(_platform);
const config = {
localDir: resolve(__dirname, './__fixtures__/testFiles'),
toVersion: '5.6.4',
};

jest.mock('../../util/got');
Expand All @@ -24,6 +25,8 @@ async function resetTestFiles() {
});
}

expect.addSnapshotSerializer(bufferSerializer());

describe(getName(__filename), () => {
beforeEach(async () => {
jest.setTimeout(5 * 60 * 1000);
Expand Down Expand Up @@ -52,7 +55,7 @@ describe(getName(__filename), () => {
),
'utf8'
),
config,
config: { ...config, toVersion: '6.3' },
});

expect(res).toEqual(
Expand Down
5 changes: 1 addition & 4 deletions lib/manager/gradle-wrapper/artifacts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { UpdateArtifact, UpdateArtifactsResult } from '../common';
import { exec, ExecOptions } from '../../util/exec';
import { readLocalFile } from '../../util/fs';
import { platform } from '../../platform';
import { VERSION_REGEX } from './search';
import { gradleWrapperFileName, prepareGradleCommand } from '../gradle/index';

async function addIfUpdated(
Expand All @@ -28,20 +27,18 @@ async function addIfUpdated(
export async function updateArtifacts({
packageFileName,
updatedDeps,
newPackageFileContent,
config,
}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {
try {
const projectDir = config.localDir;
logger.debug({ updatedDeps }, 'gradle-wrapper.updateArtifacts()');
const version = VERSION_REGEX.exec(newPackageFileContent).groups.version;
const gradlew = gradleWrapperFileName(config);
const gradlewPath = resolve(projectDir, `./${gradlew}`);
const cmd = await prepareGradleCommand(
gradlew,
projectDir,
await fs.stat(gradlewPath).catch(() => null),
`wrapper --gradle-version ${version}`
`wrapper --gradle-version ${config.toVersion}`
);
logger.debug(`Updating gradle wrapper: "${cmd}"`);
const execOptions: ExecOptions = {
Expand Down
3 changes: 3 additions & 0 deletions lib/manager/gradle-wrapper/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { id as versioning } from '../../versioning/gradle';

export { extractPackageFile } from './extract';
export { updateArtifacts } from './artifacts';
export { updateDependency } from './update';

export const defaultConfig = {
fileMatch: ['(^|/)gradle/wrapper/gradle-wrapper.properties$'],
versioning,
};
1 change: 0 additions & 1 deletion lib/manager/gradle-wrapper/search.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
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|\.)+)-/;
4 changes: 2 additions & 2 deletions lib/manager/gradle-wrapper/update.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ const whitespacePropertiesFile = readFileSync(
const testUpgrades = {
5: {
data: {
toVersion: '5.0.0',
version: '5.0.0',
toVersion: '5.0',
version: '5.0',
managerData: {
gradleWrapperType: 'all',
lineNumber: 5,
Expand Down
15 changes: 3 additions & 12 deletions lib/manager/gradle-wrapper/update.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
import { Http } from '../../util/http';
import { logger } from '../../logger';
import { UpdateDependencyConfig } from '../common';
import {
DISTRIBUTION_CHECKSUM_REGEX,
DOWNLOAD_URL_REGEX,
VERSION_REGEX,
} from './search';
import { DISTRIBUTION_CHECKSUM_REGEX, VERSION_REGEX } from './search';

const http = new Http('gradle-wrapper');

Expand Down Expand Up @@ -35,22 +31,17 @@ export async function updateDependency({
try {
logger.trace({ config: upgrade }, 'gradle-wrapper.updateDependency()');
const lines = fileContent.split('\n');
let { downloadUrl, checksumUrl } = upgrade;
let { checksumUrl } = upgrade;

if (upgrade.managerData.gradleWrapperType === 'all') {
downloadUrl = replaceType(downloadUrl);
checksumUrl = replaceType(checksumUrl);
}

downloadUrl = downloadUrl.replace(':', '\\:');
const checksum = await getChecksum(checksumUrl);

lines[upgrade.managerData.lineNumber] = lines[
upgrade.managerData.lineNumber
].replace(
VERSION_REGEX,
`-${DOWNLOAD_URL_REGEX.exec(downloadUrl).groups.version}-`
);
].replace(VERSION_REGEX, `-${upgrade.toVersion}-`);

if (upgrade.managerData.checksumLineNumber) {
lines[upgrade.managerData.checksumLineNumber] = lines[
Expand Down
13 changes: 13 additions & 0 deletions test/util.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as upath from 'upath';
import crypto from 'crypto';
import { platform as _platform } from '../lib/platform';
import { getConfig } from '../lib/config/defaults';
import { RenovateConfig as _RenovateConfig } from '../lib/config';
Expand Down Expand Up @@ -71,3 +72,15 @@ export const replacingSerializer = (
return printer(replaced, config, indent, depth, refs);
},
});

function toHash(buf: Buffer): string {
return crypto.createHash('sha256').update(buf).digest('hex');
}

export const bufferSerializer = (): jest.SnapshotSerializerPlugin => ({
test: (value) => Buffer.isBuffer(value),
serialize: (val, config, indent, depth, refs, printer) => {
const replaced = toHash(val);
return printer(replaced, config, indent, depth, refs);
},
});

0 comments on commit da0181e

Please sign in to comment.