mirror of
https://github.com/actions/setup-java.git
synced 2026-06-18 01:07:52 +00:00
Fixes from review
This commit is contained in:
parent
b8110ecdf3
commit
4826c07bc1
@ -4,6 +4,7 @@ import {
|
|||||||
AdoptDistribution,
|
AdoptDistribution,
|
||||||
AdoptImplementation
|
AdoptImplementation
|
||||||
} from '../../src/distributions/adopt/installer';
|
} from '../../src/distributions/adopt/installer';
|
||||||
|
import {TemurinDistribution} from '../../src/distributions/temurin/installer';
|
||||||
import {JavaInstallerOptions} from '../../src/distributions/base-models';
|
import {JavaInstallerOptions} from '../../src/distributions/base-models';
|
||||||
|
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
@ -256,6 +257,38 @@ describe('getAvailableVersions', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('findPackageForDownload', () => {
|
describe('findPackageForDownload', () => {
|
||||||
|
it('returns Temurin result and does not query Adopt API when Temurin succeeds', async () => {
|
||||||
|
const temurinRelease = {
|
||||||
|
version: '11.0.31+11',
|
||||||
|
url: 'https://example.test/temurin-11.tar.gz'
|
||||||
|
};
|
||||||
|
const temurinFindPackageForDownload = jest
|
||||||
|
.fn()
|
||||||
|
.mockResolvedValue(temurinRelease);
|
||||||
|
const temurinDistribution = {
|
||||||
|
findPackageForDownload: temurinFindPackageForDownload
|
||||||
|
} as unknown as TemurinDistribution;
|
||||||
|
|
||||||
|
const distribution = new AdoptDistribution(
|
||||||
|
{
|
||||||
|
version: '11',
|
||||||
|
architecture: 'x64',
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
},
|
||||||
|
AdoptImplementation.Hotspot,
|
||||||
|
temurinDistribution
|
||||||
|
);
|
||||||
|
const adoptLookupSpy = jest.fn();
|
||||||
|
distribution['getAvailableVersions'] = adoptLookupSpy;
|
||||||
|
|
||||||
|
const resolvedVersion = await distribution['findPackageForDownload']('11');
|
||||||
|
|
||||||
|
expect(resolvedVersion).toEqual(temurinRelease);
|
||||||
|
expect(temurinFindPackageForDownload).toHaveBeenCalledWith('11');
|
||||||
|
expect(adoptLookupSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
['9', '9.0.7+10'],
|
['9', '9.0.7+10'],
|
||||||
['15', '15.0.2+7'],
|
['15', '15.0.2+7'],
|
||||||
@ -279,9 +312,10 @@ describe('findPackageForDownload', () => {
|
|||||||
AdoptImplementation.Hotspot
|
AdoptImplementation.Hotspot
|
||||||
);
|
);
|
||||||
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
||||||
distribution['temurinDistribution']!['findPackageForDownload'] = async () => {
|
distribution['temurinDistribution']!['findPackageForDownload'] =
|
||||||
throw new Error('No matching version found for SemVer');
|
async () => {
|
||||||
};
|
throw new Error('No matching version found for SemVer');
|
||||||
|
};
|
||||||
distribution['getAvailableVersions'] = async () => manifestData as any;
|
distribution['getAvailableVersions'] = async () => manifestData as any;
|
||||||
const resolvedVersion = await distribution['findPackageForDownload'](input);
|
const resolvedVersion = await distribution['findPackageForDownload'](input);
|
||||||
expect(resolvedVersion.version).toBe(expected);
|
expect(resolvedVersion.version).toBe(expected);
|
||||||
@ -298,9 +332,10 @@ describe('findPackageForDownload', () => {
|
|||||||
AdoptImplementation.Hotspot
|
AdoptImplementation.Hotspot
|
||||||
);
|
);
|
||||||
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
||||||
distribution['temurinDistribution']!['findPackageForDownload'] = async () => {
|
distribution['temurinDistribution']!['findPackageForDownload'] =
|
||||||
throw new Error('No matching version found for SemVer');
|
async () => {
|
||||||
};
|
throw new Error('No matching version found for SemVer');
|
||||||
|
};
|
||||||
distribution['getAvailableVersions'] = async () => manifestData as any;
|
distribution['getAvailableVersions'] = async () => manifestData as any;
|
||||||
await expect(
|
await expect(
|
||||||
distribution['findPackageForDownload']('9.0.8')
|
distribution['findPackageForDownload']('9.0.8')
|
||||||
@ -318,9 +353,10 @@ describe('findPackageForDownload', () => {
|
|||||||
AdoptImplementation.Hotspot
|
AdoptImplementation.Hotspot
|
||||||
);
|
);
|
||||||
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
||||||
distribution['temurinDistribution']!['findPackageForDownload'] = async () => {
|
distribution['temurinDistribution']!['findPackageForDownload'] =
|
||||||
throw new Error('No matching version found for SemVer');
|
async () => {
|
||||||
};
|
throw new Error('No matching version found for SemVer');
|
||||||
|
};
|
||||||
distribution['getAvailableVersions'] = async () => manifestData as any;
|
distribution['getAvailableVersions'] = async () => manifestData as any;
|
||||||
await expect(distribution['findPackageForDownload']('7.x')).rejects.toThrow(
|
await expect(distribution['findPackageForDownload']('7.x')).rejects.toThrow(
|
||||||
/No matching version found for SemVer */
|
/No matching version found for SemVer */
|
||||||
@ -338,9 +374,10 @@ describe('findPackageForDownload', () => {
|
|||||||
AdoptImplementation.Hotspot
|
AdoptImplementation.Hotspot
|
||||||
);
|
);
|
||||||
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
// Mock Temurin to fail so fallback to AdoptOpenJDK is tested
|
||||||
distribution['temurinDistribution']!['findPackageForDownload'] = async () => {
|
distribution['temurinDistribution']!['findPackageForDownload'] =
|
||||||
throw new Error('No matching version found for SemVer');
|
async () => {
|
||||||
};
|
throw new Error('No matching version found for SemVer');
|
||||||
|
};
|
||||||
distribution['getAvailableVersions'] = async () => [];
|
distribution['getAvailableVersions'] = async () => [];
|
||||||
await expect(distribution['findPackageForDownload']('11')).rejects.toThrow(
|
await expect(distribution['findPackageForDownload']('11')).rejects.toThrow(
|
||||||
/No matching version found for SemVer */
|
/No matching version found for SemVer */
|
||||||
|
|||||||
7
dist/setup/index.js
vendored
7
dist/setup/index.js
vendored
@ -77848,7 +77848,8 @@ class AdoptDistribution extends base_installer_1.JavaBase {
|
|||||||
catch (error) {
|
catch (error) {
|
||||||
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
|
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
|
||||||
const errorMessage = error instanceof Error ? error.message : String(error);
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||||
if (errorMessage.includes('No matching version found')) {
|
if (error instanceof Error &&
|
||||||
|
error.name === 'VersionNotFoundError') {
|
||||||
core.notice('The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
|
core.notice('The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
|
||||||
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.');
|
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.');
|
||||||
}
|
}
|
||||||
@ -78260,7 +78261,9 @@ class JavaBase {
|
|||||||
parts.push(`(showing first ${maxVersionsToShow} of ${availableVersions.length} versions, enable debug mode to see all)`);
|
parts.push(`(showing first ${maxVersionsToShow} of ${availableVersions.length} versions, enable debug mode to see all)`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new Error(parts.join('\n'));
|
const error = new Error(parts.join('\n'));
|
||||||
|
error.name = 'VersionNotFoundError';
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
setJavaDefault(version, toolPath) {
|
setJavaDefault(version, toolPath) {
|
||||||
const majorVersion = version.split('.')[0];
|
const majorVersion = version.split('.')[0];
|
||||||
|
|||||||
@ -73,8 +73,9 @@ export class AdoptDistribution extends JavaBase {
|
|||||||
return await this.temurinDistribution.findPackageForDownload(version);
|
return await this.temurinDistribution.findPackageForDownload(version);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
|
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
|
||||||
const errorMessage = error instanceof Error ? error.message : String(error);
|
const errorMessage =
|
||||||
if (errorMessage.includes('No matching version found')) {
|
error instanceof Error ? error.message : String(error);
|
||||||
|
if (error instanceof Error && error.name === 'VersionNotFoundError') {
|
||||||
core.notice(
|
core.notice(
|
||||||
'The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
|
'The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
|
||||||
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.'
|
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.'
|
||||||
|
|||||||
@ -292,7 +292,9 @@ export abstract class JavaBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Error(parts.join('\n'));
|
const error = new Error(parts.join('\n'));
|
||||||
|
error.name = 'VersionNotFoundError';
|
||||||
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setJavaDefault(version: string, toolPath: string) {
|
protected setJavaDefault(version: string, toolPath: string) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user