diff --git a/__tests__/graalvm.test.ts b/__tests__/graalvm.test.ts new file mode 100644 index 0000000..89b1388 --- /dev/null +++ b/__tests__/graalvm.test.ts @@ -0,0 +1,25 @@ +import * as path from 'path' +import * as graalvm from '../src/graalvm' +import {expect, test} from '@jest/globals' + +process.env['RUNNER_TOOL_CACHE'] = path.join(__dirname, 'TOOL_CACHE') +process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP') + +test('request invalid version/javaVersion', async () => { + for (var combination of [ + ['22.3.0', '7'], + ['22.3', '17'], + ['22.3', '7'] + ]) { + let error = new Error('unexpected') + try { + await graalvm.setUpGraalVMRelease('', combination[0], combination[1]) + } catch (err) { + error = err + } + + expect(error).not.toBeUndefined() + expect(error.message).toContain('Failed to download') + expect(error.message).toContain('Are you sure version') + } +}) diff --git a/dist/main/index.js b/dist/main/index.js index 4555e55..c7edb23 100644 --- a/dist/main/index.js +++ b/dist/main/index.js @@ -74747,15 +74747,13 @@ exports.setUpGraalVMDevBuild = setUpGraalVMDevBuild; function setUpGraalVMRelease(gdsToken, version, javaVersion) { return __awaiter(this, void 0, void 0, function* () { const isEE = gdsToken.length > 0; - const graalVMIdentifier = determineGraalVMIdentifier(isEE, version, javaVersion); const toolName = determineToolName(isEE, javaVersion); let downloader; if (isEE) { downloader = () => __awaiter(this, void 0, void 0, function* () { return gds_1.downloadGraalVMEE(gdsToken, version, javaVersion); }); } else { - const downloadUrl = `${GRAALVM_CE_DL_BASE}/${GRAALVM_TAG_PREFIX}${version}/${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}`; - downloader = () => __awaiter(this, void 0, void 0, function* () { return tool_cache_1.downloadTool(downloadUrl); }); + downloader = () => __awaiter(this, void 0, void 0, function* () { return downloadGraalVMCE(version, javaVersion); }); } return utils_1.downloadExtractAndCacheJDK(downloader, toolName, version); }); @@ -74767,6 +74765,22 @@ function determineGraalVMIdentifier(isEE, version, javaVersion) { function determineToolName(isEE, javaVersion) { return `graalvm-${isEE ? 'ee' : 'ce'}-java${javaVersion}-${c.GRAALVM_PLATFORM}`; } +function downloadGraalVMCE(version, javaVersion) { + return __awaiter(this, void 0, void 0, function* () { + const graalVMIdentifier = determineGraalVMIdentifier(false, version, javaVersion); + const downloadUrl = `${GRAALVM_CE_DL_BASE}/${GRAALVM_TAG_PREFIX}${version}/${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}`; + try { + return yield tool_cache_1.downloadTool(downloadUrl); + } + catch (error) { + if (error instanceof Error && error.message.includes('404')) { + // Not Found + throw new Error(`Failed to download ${graalVMIdentifier}. Are you sure version: '${version}' and javaVersion: '${javaVersion}' are correct?`); + } + throw new Error(`Failed to download ${graalVMIdentifier} (error: ${error}).`); + } + }); +} /***/ }), diff --git a/src/graalvm.ts b/src/graalvm.ts index 577e612..872f596 100644 --- a/src/graalvm.ts +++ b/src/graalvm.ts @@ -63,18 +63,12 @@ export async function setUpGraalVMRelease( javaVersion: string ): Promise { const isEE = gdsToken.length > 0 - const graalVMIdentifier = determineGraalVMIdentifier( - isEE, - version, - javaVersion - ) const toolName = determineToolName(isEE, javaVersion) let downloader: () => Promise if (isEE) { downloader = async () => downloadGraalVMEE(gdsToken, version, javaVersion) } else { - const downloadUrl = `${GRAALVM_CE_DL_BASE}/${GRAALVM_TAG_PREFIX}${version}/${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}` - downloader = async () => downloadTool(downloadUrl) + downloader = async () => downloadGraalVMCE(version, javaVersion) } return downloadExtractAndCacheJDK(downloader, toolName, version) } @@ -94,3 +88,28 @@ function determineToolName(isEE: boolean, javaVersion: string): string { c.GRAALVM_PLATFORM }` } + +async function downloadGraalVMCE( + version: string, + javaVersion: string +): Promise { + const graalVMIdentifier = determineGraalVMIdentifier( + false, + version, + javaVersion + ) + const downloadUrl = `${GRAALVM_CE_DL_BASE}/${GRAALVM_TAG_PREFIX}${version}/${graalVMIdentifier}${c.GRAALVM_FILE_EXTENSION}` + try { + return await downloadTool(downloadUrl) + } catch (error) { + if (error instanceof Error && error.message.includes('404')) { + // Not Found + throw new Error( + `Failed to download ${graalVMIdentifier}. Are you sure version: '${version}' and javaVersion: '${javaVersion}' are correct?` + ) + } + throw new Error( + `Failed to download ${graalVMIdentifier} (error: ${error}).` + ) + } +}