diff --git a/__tests__/distributors/liberica-installer.test.ts b/__tests__/distributors/liberica-installer.test.ts index ab1b72b2..2005f534 100644 --- a/__tests__/distributors/liberica-installer.test.ts +++ b/__tests__/distributors/liberica-installer.test.ts @@ -253,6 +253,39 @@ describe('findPackageForDownload', () => { expect(result.version).toBe(expected); }); + describe('compound build versions', () => { + beforeEach(() => { + distribution['getAvailableVersions'] = async () => + ['1', '1.1', '1.2', '1.10'].map(build => ({ + featureVersion: 25, + interimVersion: 0, + updateVersion: 4, + buildVersion: 1, + version: `25.0.4+${build}`, + downloadUrl: `https://download.bell-sw.com/java/25.0.4+${build}/bellsoft-jdk25.0.4+${build}-macos-aarch64.tar.gz` + })); + }); + + it.each([ + ['25.0.4+1.1', '25.0.4+1.1'], + ['25.0.4+1', '25.0.4+1'], + ['25.0.4', '25.0.4+1.10'], + ['25', '25.0.4+1.10'] + ])('version is %s -> %s', async (input, expected) => { + const result = await distribution['findPackageForDownload'](input); + expect(result).toEqual({ + version: expected, + url: `https://download.bell-sw.com/java/${expected}/bellsoft-jdk${expected}-macos-aarch64.tar.gz` + }); + }); + + it('does not substitute a different compound build', async () => { + await expect( + distribution['findPackageForDownload']('25.0.4+1.3') + ).rejects.toThrow(/No matching version found for SemVer/); + }); + }); + it('should throw an error', async () => { await expect(distribution['findPackageForDownload']('17')).rejects.toThrow( /No matching version found for SemVer/ @@ -335,6 +368,36 @@ describe('convertVersionToSemver', () => { buildVersion: 13 }, '11.0.0+13' + ], + [ + { + version: '25.0.4+1.1', + featureVersion: 25, + interimVersion: 0, + updateVersion: 4, + buildVersion: 1 + }, + '25.0.4+1.1' + ], + [ + { + version: '25+36', + featureVersion: 25, + interimVersion: 0, + updateVersion: 0, + buildVersion: 36 + }, + '25.0.0+36' + ], + [ + { + version: '8u202', + featureVersion: 8, + interimVersion: 0, + updateVersion: 202, + buildVersion: 8 + }, + '8.0.202+8' ] ])('%s -> %s', (input, expected) => { const actual = distributions['convertVersionToSemver']({ diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts index 61143a59..97f932fb 100644 --- a/__tests__/util.test.ts +++ b/__tests__/util.test.ts @@ -276,6 +276,7 @@ describe('getVersionFromFileContent', () => { ['java=21.0.5-graal', '21.0.5', 'graalvm'], ['java=17.0.9-graalce', '17.0.9', 'graalvm'], ['java=11.0.25-librca', '11.0.25', 'liberica'], + ['java=25.0.4+1.1-librca', '25.0.4+1.1', 'liberica'], ['java=11.0.25-ms', '11.0.25', 'microsoft'], ['java=21.0.5-oracle', '21.0.5', 'oracle'], ['java=11.0.25-sapmchn', '11.0.25', 'sapmachine'], diff --git a/dist/setup/63.index.js b/dist/setup/63.index.js index b441e452..3b8ac975 100644 --- a/dist/setup/63.index.js +++ b/dist/setup/63.index.js @@ -128,7 +128,8 @@ class LibericaDistributions extends _base_installer_js__WEBPACK_IMPORTED_MODULE_ } } convertVersionToSemver(version) { - const { buildVersion, featureVersion, interimVersion, updateVersion } = version; + const { featureVersion, interimVersion, updateVersion } = version; + const buildVersion = version.version.split('+')[1] || version.buildVersion; const mainVersion = [featureVersion, interimVersion, updateVersion].join('.'); if (buildVersion != 0) { return `${mainVersion}+${buildVersion}`; diff --git a/src/distributions/liberica/installer.ts b/src/distributions/liberica/installer.ts index 27a09f3e..b4320d66 100644 --- a/src/distributions/liberica/installer.ts +++ b/src/distributions/liberica/installer.ts @@ -166,8 +166,8 @@ export class LibericaDistributions extends JavaBase { } private convertVersionToSemver(version: LibericaVersion): string { - const {buildVersion, featureVersion, interimVersion, updateVersion} = - version; + const {featureVersion, interimVersion, updateVersion} = version; + const buildVersion = version.version.split('+')[1] || version.buildVersion; const mainVersion = [featureVersion, interimVersion, updateVersion].join( '.' );