mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-31 09:41:46 +00:00
05e1271376
Enables the vitest/prefer-expect-resolves oxlint rule and applies its autofix across the spec suite.
174 lines
5.6 KiB
TypeScript
174 lines
5.6 KiB
TypeScript
import type { Stats } from 'node:fs';
|
|
import os from 'node:os';
|
|
import { codeBlock } from 'common-tags';
|
|
import { fs, partial } from '~test/util.ts';
|
|
import {
|
|
extractGradleVersion,
|
|
getJavaConstraint,
|
|
getJavaLanguageVersion,
|
|
getJvmConfiguration,
|
|
gradleWrapperFileName,
|
|
prepareGradleCommand,
|
|
} from './utils.ts';
|
|
|
|
const platform = vi.spyOn(os, 'platform');
|
|
vi.mock('../../../util/fs/index.ts');
|
|
|
|
describe('modules/manager/gradle-wrapper/util', () => {
|
|
describe('getJavaConstraint()', () => {
|
|
describe('returns Java constraint based on gradle support', () => {
|
|
it.each`
|
|
gradleVersion | javaConstraint
|
|
${''} | ${'^11.0.0'}
|
|
${'4'} | ${'^8.0.0'}
|
|
${'4.9'} | ${'^8.0.0'}
|
|
${'6.0'} | ${'^11.0.0'}
|
|
${'7.0.1'} | ${'^16.0.0'}
|
|
${'7.3.0'} | ${'^17.0.0'}
|
|
${'8.0.1'} | ${'^17.0.0'}
|
|
${'8.5.0'} | ${'^21.0.0'}
|
|
${'9.0.1'} | ${'^21.0.0'}
|
|
${'9.1.0'} | ${'^25.0.0'}
|
|
${'10.0.1'} | ${'^25.0.0'}
|
|
`(
|
|
'$gradleVersion | $javaConstraint',
|
|
async ({ gradleVersion, javaConstraint }) => {
|
|
await expect(getJavaConstraint(gradleVersion, '')).resolves.toBe(
|
|
javaConstraint,
|
|
);
|
|
},
|
|
);
|
|
});
|
|
|
|
it('returns toolChainVersion constraint if daemon JVM configured', async () => {
|
|
const daemonJvm = codeBlock`
|
|
#This file is generated by updateDaemonJvm
|
|
toolchainVersion=999
|
|
`;
|
|
fs.readLocalFile.mockResolvedValue(daemonJvm);
|
|
await expect(getJavaConstraint('8.8', './gradlew')).resolves.toBe(
|
|
'^999.0.0',
|
|
);
|
|
});
|
|
|
|
it('returns languageVersion constraint if found', async () => {
|
|
const buildGradle = codeBlock`
|
|
java { toolchain { languageVersion = JavaLanguageVersion.of(456) } }
|
|
`;
|
|
fs.localPathExists.mockResolvedValueOnce(true);
|
|
fs.readLocalFile.mockResolvedValue(buildGradle);
|
|
await expect(getJavaConstraint('6.7', './gradlew')).resolves.toBe(
|
|
'^456.0.0',
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('getJvmConfiguration', () => {
|
|
it('extracts toolChainVersion value', async () => {
|
|
const daemonJvm = codeBlock`
|
|
#This file is generated by updateDaemonJvm
|
|
toolchainVersion=21
|
|
`;
|
|
fs.readLocalFile.mockResolvedValue(daemonJvm);
|
|
await expect(getJvmConfiguration('')).resolves.toBe('21');
|
|
});
|
|
|
|
it('returns null if gradle-daemon-jvm.properties file not found', async () => {
|
|
fs.readLocalFile.mockResolvedValueOnce(null);
|
|
await expect(getJvmConfiguration('sub/gradlew')).resolves.toBeNull();
|
|
expect(fs.readLocalFile).toHaveBeenCalledExactlyOnceWith(
|
|
'sub/gradle/gradle-daemon-jvm.properties',
|
|
'utf8',
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('getJavaLanguageVersion', () => {
|
|
it('extract languageVersion value', async () => {
|
|
const buildGradle = codeBlock`
|
|
java { toolchain { languageVersion = JavaLanguageVersion.of(21) } }
|
|
`;
|
|
fs.localPathExists.mockResolvedValue(true);
|
|
fs.readLocalFile.mockResolvedValue(buildGradle);
|
|
await expect(getJavaLanguageVersion('')).resolves.toBe('21');
|
|
});
|
|
|
|
it('returns null if build.gradle or build.gradle.kts file not found', async () => {
|
|
fs.localPathExists.mockResolvedValue(false);
|
|
fs.readLocalFile.mockResolvedValue(null);
|
|
await expect(getJavaLanguageVersion('sub/gradlew')).resolves.toBeNull();
|
|
expect(fs.readLocalFile).toHaveBeenCalledExactlyOnceWith(
|
|
'sub/build.gradle.kts',
|
|
'utf8',
|
|
);
|
|
});
|
|
|
|
it('returns null if build.gradle does not include languageVersion', async () => {
|
|
const buildGradle = codeBlock`
|
|
dependencies { implementation "com.google.protobuf:protobuf-java:2.17.0" }
|
|
`;
|
|
fs.localPathExists.mockResolvedValue(true);
|
|
fs.readLocalFile.mockResolvedValue(buildGradle);
|
|
await expect(getJavaLanguageVersion('')).resolves.toBeNull();
|
|
});
|
|
});
|
|
|
|
describe('extractGradleVersion()', () => {
|
|
it('returns null', () => {
|
|
const properties = codeBlock`
|
|
distributionSha256Sum=038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768
|
|
zipStoreBase=GRADLE_USER_HOME
|
|
`;
|
|
expect(extractGradleVersion(properties)).toBeNull();
|
|
});
|
|
|
|
it('returns gradle version', () => {
|
|
const properties = codeBlock`
|
|
distributionSha256Sum=038794feef1f4745c6347107b6726279d1c824f3fc634b60f86ace1e9fbd1768
|
|
distributionUrl=https\\://services.gradle.org/distributions/gradle-6.3-bin.zip
|
|
zipStoreBase=GRADLE_USER_HOME
|
|
`;
|
|
expect(extractGradleVersion(properties)).toStrictEqual({
|
|
url: 'https\\://services.gradle.org/distributions/gradle-6.3-bin.zip',
|
|
version: '6.3',
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('gradleWrapperFileName()', () => {
|
|
it('works on windows', () => {
|
|
platform.mockReturnValueOnce('win32');
|
|
expect(gradleWrapperFileName()).toBe('gradlew.bat');
|
|
});
|
|
|
|
it('works on linux', () => {
|
|
platform.mockReturnValueOnce('linux');
|
|
expect(gradleWrapperFileName()).toBe('./gradlew');
|
|
});
|
|
});
|
|
|
|
describe('prepareGradleCommand', () => {
|
|
it('works', async () => {
|
|
platform.mockReturnValue('linux');
|
|
fs.statLocalFile.mockResolvedValue(
|
|
partial<Stats>({
|
|
isFile: () => true,
|
|
mode: 0o550,
|
|
}),
|
|
);
|
|
await expect(prepareGradleCommand('./gradlew')).resolves.toBe(
|
|
'./gradlew',
|
|
);
|
|
});
|
|
|
|
it('returns null', async () => {
|
|
fs.statLocalFile.mockResolvedValue(
|
|
partial<Stats>({
|
|
isFile: () => false,
|
|
}),
|
|
);
|
|
await expect(prepareGradleCommand('./gradlew')).resolves.toBeNull();
|
|
});
|
|
});
|
|
});
|