Add arch default tests to all distros
...and update temurin's to test 2 architectures instead of 1.
This commit is contained in:
parent
f83416a080
commit
c041f7cce2
@ -3,6 +3,8 @@ import { HttpClient } from '@actions/http-client';
|
|||||||
import { AdoptDistribution, AdoptImplementation } from '../../src/distributions/adopt/installer';
|
import { AdoptDistribution, AdoptImplementation } from '../../src/distributions/adopt/installer';
|
||||||
import { JavaInstallerOptions } from '../../src/distributions/base-models';
|
import { JavaInstallerOptions } from '../../src/distributions/base-models';
|
||||||
|
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
let manifestData = require('../data/adopt.json') as [];
|
let manifestData = require('../data/adopt.json') as [];
|
||||||
|
|
||||||
describe('getAvailableVersions', () => {
|
describe('getAvailableVersions', () => {
|
||||||
@ -128,6 +130,35 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(distribution.toolcacheFolderName).toBe(expected);
|
expect(distribution.toolcacheFolderName).toBe(expected);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['amd64', 'x64'],
|
||||||
|
['arm64', 'aarch64']
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: string) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(osArch);
|
||||||
|
|
||||||
|
const installerOptions: JavaInstallerOptions = {
|
||||||
|
version: '17',
|
||||||
|
architecture: '', // to get default value
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
};
|
||||||
|
|
||||||
|
const expectedParameters = `os=mac&architecture=${distroArch}&image_type=jdk&release_type=ga&jvm_impl=hotspot&page_size=20&page=0`;
|
||||||
|
|
||||||
|
const distribution = new AdoptDistribution(installerOptions, AdoptImplementation.Hotspot);
|
||||||
|
const baseUrl = 'https://api.adoptopenjdk.net/v3/assets/version/%5B1.0,100.0%5D';
|
||||||
|
const expectedUrl = `${baseUrl}?project=jdk&vendor=adoptopenjdk&heap_size=normal&sort_method=DEFAULT&sort_order=DESC&${expectedParameters}`;
|
||||||
|
distribution['getPlatformOption'] = () => 'mac';
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
||||||
|
expect(spyHttpClient.mock.calls[0][0]).toBe(expectedUrl);
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('findPackageForDownload', () => {
|
describe('findPackageForDownload', () => {
|
||||||
|
@ -3,6 +3,8 @@ import { JavaInstallerOptions } from '../../src/distributions/base-models';
|
|||||||
|
|
||||||
import { CorrettoDistribution } from '../../src/distributions/corretto/installer';
|
import { CorrettoDistribution } from '../../src/distributions/corretto/installer';
|
||||||
import * as util from '../../src/util';
|
import * as util from '../../src/util';
|
||||||
|
import os from 'os';
|
||||||
|
import { isGeneratorFunction } from 'util/types';
|
||||||
|
|
||||||
const manifestData = require('../data/corretto.json') as [];
|
const manifestData = require('../data/corretto.json') as [];
|
||||||
|
|
||||||
@ -142,6 +144,33 @@ describe('getAvailableVersions', () => {
|
|||||||
"Could not find satisfied version for SemVer '4'"
|
"Could not find satisfied version for SemVer '4'"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['arm64', 'aarch64'],
|
||||||
|
['amd64', 'x64']
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: string) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(osArch);
|
||||||
|
|
||||||
|
const version = '17';
|
||||||
|
const installerOptions: JavaInstallerOptions = {
|
||||||
|
version,
|
||||||
|
architecture: '', // to get default value
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
};
|
||||||
|
|
||||||
|
const distribution = new CorrettoDistribution(installerOptions);
|
||||||
|
mockPlatform(distribution, 'macos');
|
||||||
|
|
||||||
|
const expectedLink = `https://corretto.aws/downloads/resources/17.0.2.8.1/amazon-corretto-17.0.2.8.1-macosx-${distroArch}.tar.gz`;
|
||||||
|
|
||||||
|
const availableVersion = await distribution['findPackageForDownload'](version);
|
||||||
|
expect(availableVersion).not.toBeNull();
|
||||||
|
expect(availableVersion.url).toBe(expectedLink);
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
const mockPlatform = (distribution: CorrettoDistribution, platform: string) => {
|
const mockPlatform = (distribution: CorrettoDistribution, platform: string) => {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { LibericaDistributions } from '../../src/distributions/liberica/installer';
|
import { LibericaDistributions } from '../../src/distributions/liberica/installer';
|
||||||
import { ArchitectureOptions, LibericaVersion } from '../../src/distributions/liberica/models';
|
import { ArchitectureOptions, LibericaVersion } from '../../src/distributions/liberica/models';
|
||||||
import { HttpClient } from '@actions/http-client';
|
import { HttpClient } from '@actions/http-client';
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
const manifestData = require('../data/liberica.json') as LibericaVersion[];
|
const manifestData = require('../data/liberica.json') as LibericaVersion[];
|
||||||
|
|
||||||
@ -61,6 +62,39 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
type DistroArch = {
|
||||||
|
bitness: string;
|
||||||
|
arch: string;
|
||||||
|
};
|
||||||
|
it.each([
|
||||||
|
['amd64', { bitness: '64', arch: 'x86' }],
|
||||||
|
['arm64', { bitness: '64', arch: 'arm' }]
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: DistroArch) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(osArch);
|
||||||
|
|
||||||
|
const distribution = new LibericaDistributions({
|
||||||
|
version: '17',
|
||||||
|
architecture: '', // to get default value
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
const additionalParams =
|
||||||
|
'&installation-type=archive&fields=downloadUrl%2Cversion%2CfeatureVersion%2CinterimVersion%2C' +
|
||||||
|
'updateVersion%2CbuildVersion';
|
||||||
|
distribution['getPlatformOption'] = () => 'macos';
|
||||||
|
|
||||||
|
const buildUrl = `https://api.bell-sw.com/v1/liberica/releases?os=macos&bundle-type=jdk&bitness=${distroArch.bitness}&arch=${distroArch.arch}&build-type=all${additionalParams}`;
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
||||||
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
it('load available versions', async () => {
|
it('load available versions', async () => {
|
||||||
const distribution = new LibericaDistributions({
|
const distribution = new LibericaDistributions({
|
||||||
version: '11',
|
version: '11',
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { MicrosoftDistributions } from '../../src/distributions/microsoft/installer';
|
import { MicrosoftDistributions } from '../../src/distributions/microsoft/installer';
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
describe('findPackageForDownload', () => {
|
describe('findPackageForDownload', () => {
|
||||||
let distribution: MicrosoftDistributions;
|
let distribution: MicrosoftDistributions;
|
||||||
@ -61,6 +62,33 @@ describe('findPackageForDownload', () => {
|
|||||||
expect(result.url).toBe(url);
|
expect(result.url).toBe(url);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it.each([
|
||||||
|
['amd64', 'x64'],
|
||||||
|
['arm64', 'aarch64']
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: string) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(osArch);
|
||||||
|
|
||||||
|
const version = '17';
|
||||||
|
const distro = new MicrosoftDistributions({
|
||||||
|
version,
|
||||||
|
architecture: '', // to get default value
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
|
||||||
|
distribution['getPlatformOption'] = () => {
|
||||||
|
return { archive: 'tar.gz', os: 'macos' };
|
||||||
|
};
|
||||||
|
|
||||||
|
const result = await distro['findPackageForDownload'](version);
|
||||||
|
const expectedUrl = `https://aka.ms/download-jdk/microsoft-jdk-17.0.3-macos-${distroArch}.tar.gz`;
|
||||||
|
|
||||||
|
expect(result.url).toBe(expectedUrl);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
it('should throw an error', async () => {
|
it('should throw an error', async () => {
|
||||||
await expect(distribution['findPackageForDownload']('8')).rejects.toThrow(
|
await expect(distribution['findPackageForDownload']('8')).rejects.toThrow(
|
||||||
/Could not find satisfied version for SemVer */
|
/Could not find satisfied version for SemVer */
|
||||||
|
@ -110,8 +110,13 @@ describe('getAvailableVersions', () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
it('defaults to os.arch() mapped to temurin arch', async () => {
|
it.each([
|
||||||
jest.spyOn(os, 'arch').mockReturnValue('amd64');
|
['amd64', 'x64'],
|
||||||
|
['arm64', 'aarch64']
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: string) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(distroArch);
|
||||||
|
|
||||||
const installerOptions: JavaInstallerOptions = {
|
const installerOptions: JavaInstallerOptions = {
|
||||||
version: '17',
|
version: '17',
|
||||||
@ -120,8 +125,7 @@ describe('getAvailableVersions', () => {
|
|||||||
checkLatest: false
|
checkLatest: false
|
||||||
};
|
};
|
||||||
|
|
||||||
const expectedParameters =
|
const expectedParameters = `os=mac&architecture=${distroArch}&image_type=jdk&release_type=ga&jvm_impl=hotspot&page_size=20&page=0`;
|
||||||
'os=mac&architecture=x64&image_type=jdk&release_type=ga&jvm_impl=hotspot&page_size=20&page=0';
|
|
||||||
|
|
||||||
const distribution = new TemurinDistribution(installerOptions, TemurinImplementation.Hotspot);
|
const distribution = new TemurinDistribution(installerOptions, TemurinImplementation.Hotspot);
|
||||||
const baseUrl = 'https://api.adoptium.net/v3/assets/version/%5B1.0,100.0%5D';
|
const baseUrl = 'https://api.adoptium.net/v3/assets/version/%5B1.0,100.0%5D';
|
||||||
@ -132,7 +136,8 @@ describe('getAvailableVersions', () => {
|
|||||||
|
|
||||||
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(expectedUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(expectedUrl);
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('findPackageForDownload', () => {
|
describe('findPackageForDownload', () => {
|
||||||
|
@ -3,6 +3,7 @@ import * as semver from 'semver';
|
|||||||
import { ZuluDistribution } from '../../src/distributions/zulu/installer';
|
import { ZuluDistribution } from '../../src/distributions/zulu/installer';
|
||||||
import { IZuluVersions } from '../../src/distributions/zulu/models';
|
import { IZuluVersions } from '../../src/distributions/zulu/models';
|
||||||
import * as utils from '../../src/util';
|
import * as utils from '../../src/util';
|
||||||
|
import os from 'os';
|
||||||
|
|
||||||
const manifestData = require('../data/zulu-releases-default.json') as [];
|
const manifestData = require('../data/zulu-releases-default.json') as [];
|
||||||
|
|
||||||
@ -72,6 +73,34 @@ describe('getAvailableVersions', () => {
|
|||||||
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
type DistroArch = {
|
||||||
|
bitness: string;
|
||||||
|
arch: string;
|
||||||
|
};
|
||||||
|
it.each([
|
||||||
|
['amd64', { bitness: '64', arch: 'x86' }],
|
||||||
|
['arm64', { bitness: '64', arch: 'arm' }]
|
||||||
|
])(
|
||||||
|
'defaults to os.arch(): %s mapped to distro arch: %s',
|
||||||
|
async (osArch: string, distroArch: DistroArch) => {
|
||||||
|
jest.spyOn(os, 'arch').mockReturnValue(osArch);
|
||||||
|
|
||||||
|
const distribution = new ZuluDistribution({
|
||||||
|
version: '17',
|
||||||
|
architecture: '', // to get default value
|
||||||
|
packageType: 'jdk',
|
||||||
|
checkLatest: false
|
||||||
|
});
|
||||||
|
distribution['getPlatformOption'] = () => 'macos';
|
||||||
|
const buildUrl = `https://api.azul.com/zulu/download/community/v1.0/bundles/?os=macos&ext=tar.gz&bundle_type=jdk&javafx=false&arch=${distroArch.arch}&hw_bitness=${distroArch.bitness}&release_status=ga`;
|
||||||
|
|
||||||
|
await distribution['getAvailableVersions']();
|
||||||
|
|
||||||
|
expect(spyHttpClient.mock.calls).toHaveLength(1);
|
||||||
|
expect(spyHttpClient.mock.calls[0][0]).toBe(buildUrl);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
it('load available versions', async () => {
|
it('load available versions', async () => {
|
||||||
const distribution = new ZuluDistribution({
|
const distribution = new ZuluDistribution({
|
||||||
version: '11',
|
version: '11',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user