mirror of
https://github.com/graalvm/setup-graalvm.git
synced 2025-01-19 03:43:02 +08:00
Improve error log for wrong mandrel version and javaVersion comb.
Add test to test similar to the GraalVM one for the expected error output.
This commit is contained in:
parent
2b3d0bde8f
commit
c2fd2d6d8e
56
__tests__/mandrel.test.ts
Normal file
56
__tests__/mandrel.test.ts
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
import * as path from 'path'
|
||||||
|
import * as mandrel from '../src/mandrel'
|
||||||
|
import {expect, test} from '@jest/globals'
|
||||||
|
import {getLatestRelease} from '../src/utils'
|
||||||
|
|
||||||
|
process.env['RUNNER_TOOL_CACHE'] = path.join(__dirname, 'TOOL_CACHE')
|
||||||
|
process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
|
||||||
|
|
||||||
|
test('request invalid version/javaVersion combination', async () => {
|
||||||
|
for (var combination of [
|
||||||
|
['mandrel-23.1.1.0-Final', '17'],
|
||||||
|
['mandrel-23.0.2.1-Final', '21'],
|
||||||
|
]) {
|
||||||
|
let error = new Error('unexpected')
|
||||||
|
try {
|
||||||
|
await mandrel.setUpMandrel(combination[0], combination[1])
|
||||||
|
} catch (err) {
|
||||||
|
if (!(err instanceof Error)) {
|
||||||
|
fail(`Unexpected non-Error: ${err}`)
|
||||||
|
}
|
||||||
|
error = err
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(error).not.toBeUndefined()
|
||||||
|
expect(error.message).toContain('Failed to download')
|
||||||
|
expect(error.message).toContain('Are you sure version')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
test('request invalid version', async () => {
|
||||||
|
for (var combination of [
|
||||||
|
['mandrel-23.1.1.0', '21'],
|
||||||
|
['mandrel-23.0.2.1', '17'],
|
||||||
|
]) {
|
||||||
|
let error = new Error('unexpected')
|
||||||
|
try {
|
||||||
|
await mandrel.setUpMandrel(combination[0], combination[1])
|
||||||
|
} catch (err) {
|
||||||
|
if (!(err instanceof Error)) {
|
||||||
|
fail(`Unexpected non-Error: ${err}`)
|
||||||
|
}
|
||||||
|
error = err
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(error).not.toBeUndefined()
|
||||||
|
expect(error.message).toContain('Failed to download')
|
||||||
|
expect(error.message).toContain('Are you sure version')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
test('find latest', async () => {
|
||||||
|
// Make sure the action can find the latest Mandrel release
|
||||||
|
const latestRelease = await getLatestRelease(mandrel.MANDREL_REPO)
|
||||||
|
const tag_name = latestRelease.tag_name
|
||||||
|
expect(tag_name).toContain(mandrel.MANDREL_TAG_PREFIX)
|
||||||
|
})
|
||||||
|
|
@ -1,9 +1,10 @@
|
|||||||
import * as c from './constants'
|
import * as c from './constants'
|
||||||
import {downloadExtractAndCacheJDK, getLatestRelease} from './utils'
|
import {downloadExtractAndCacheJDK, getLatestRelease} from './utils'
|
||||||
import {downloadTool} from '@actions/tool-cache'
|
import {downloadTool} from '@actions/tool-cache'
|
||||||
|
import {basename} from 'path'
|
||||||
|
|
||||||
const MANDREL_REPO = 'mandrel'
|
export const MANDREL_REPO = 'mandrel'
|
||||||
const MANDREL_TAG_PREFIX = c.MANDREL_NAMESPACE
|
export const MANDREL_TAG_PREFIX = c.MANDREL_NAMESPACE
|
||||||
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download'
|
const MANDREL_DL_BASE = 'https://github.com/graalvm/mandrel/releases/download'
|
||||||
|
|
||||||
export async function setUpMandrel(
|
export async function setUpMandrel(
|
||||||
@ -45,16 +46,37 @@ async function setUpMandrelRelease(
|
|||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const identifier = determineMandrelIdentifier(version, javaVersion)
|
|
||||||
const downloadUrl = `${MANDREL_DL_BASE}/${MANDREL_TAG_PREFIX}${version}/${identifier}${c.GRAALVM_FILE_EXTENSION}`
|
|
||||||
const toolName = determineToolName(javaVersion)
|
const toolName = determineToolName(javaVersion)
|
||||||
return downloadExtractAndCacheJDK(
|
return downloadExtractAndCacheJDK(
|
||||||
async () => downloadTool(downloadUrl),
|
async () => downloadMandrelJDK(version, javaVersion),
|
||||||
toolName,
|
toolName,
|
||||||
version
|
version
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function downloadMandrelJDK(
|
||||||
|
version: string,
|
||||||
|
javaVersion: string
|
||||||
|
): Promise<string> {
|
||||||
|
const identifier = determineMandrelIdentifier(version, javaVersion)
|
||||||
|
const downloadUrl = `${MANDREL_DL_BASE}/${MANDREL_TAG_PREFIX}${version}/${identifier}${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 ${basename(
|
||||||
|
downloadUrl
|
||||||
|
)}. Are you sure version: '${version}' and java-version: '${javaVersion}' are correct?`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
throw new Error(
|
||||||
|
`Failed to download ${basename(downloadUrl)} (error: ${error}).`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function determineMandrelIdentifier(
|
function determineMandrelIdentifier(
|
||||||
version: string,
|
version: string,
|
||||||
javaVersion: string
|
javaVersion: string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user