Adjust printWidth to 120.

This commit is contained in:
Fabio Niephaus
2025-02-10 09:16:33 +01:00
committed by Fabio Niephaus
parent 93a3b57d30
commit 9b77b7e1c6
33 changed files with 373 additions and 957 deletions

View File

@@ -24,10 +24,10 @@
* Forked from https://github.com/actions/setup-java/blob/5b36705a13905facb447b6812d613a06a07e371d/__tests__/cache.test.ts
*/
import {mkdtempSync} from 'fs'
import {tmpdir} from 'os'
import {join} from 'path'
import {restore, save} from '../src/features/cache'
import { mkdtempSync } from 'fs'
import { tmpdir } from 'os'
import { join } from 'path'
import { restore, save } from '../src/features/cache'
import * as fs from 'fs'
import * as os from 'os'
import * as core from '@actions/core'
@@ -86,24 +86,17 @@ describe('dependency cache', () => {
})
describe('restore', () => {
let spyCacheRestore: jest.SpyInstance<
ReturnType<typeof cache.restoreCache>,
Parameters<typeof cache.restoreCache>
>
let spyCacheRestore: jest.SpyInstance<ReturnType<typeof cache.restoreCache>, Parameters<typeof cache.restoreCache>>
beforeEach(() => {
spyCacheRestore = jest
.spyOn(cache, 'restoreCache')
.mockImplementation((_paths: string[], _primaryKey: string) =>
Promise.resolve(undefined)
)
.mockImplementation((_paths: string[], _primaryKey: string) => Promise.resolve(undefined))
spyWarning.mockImplementation(() => null)
})
it('throws error if unsupported package manager specified', () => {
return expect(restore('ant')).rejects.toThrow(
'unknown package manager specified: ant'
)
return expect(restore('ant')).rejects.toThrow('unknown package manager specified: ant')
})
describe('for maven', () => {
@@ -176,24 +169,17 @@ describe('dependency cache', () => {
})
})
describe('save', () => {
let spyCacheSave: jest.SpyInstance<
ReturnType<typeof cache.saveCache>,
Parameters<typeof cache.saveCache>
>
let spyCacheSave: jest.SpyInstance<ReturnType<typeof cache.saveCache>, Parameters<typeof cache.saveCache>>
beforeEach(() => {
spyCacheSave = jest
.spyOn(cache, 'saveCache')
.mockImplementation((_paths: string[], _key: string) =>
Promise.resolve(0)
)
.mockImplementation((_paths: string[], _key: string) => Promise.resolve(0))
spyWarning.mockImplementation(() => null)
})
it('throws error if unsupported package manager specified', () => {
return expect(save('ant')).rejects.toThrow(
'unknown package manager specified: ant'
)
return expect(save('ant')).rejects.toThrow('unknown package manager specified: ant')
})
it('save with -1 cacheId , should not fail workflow', async () => {
@@ -204,21 +190,15 @@ describe('dependency cache', () => {
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
it('saves with error from toolkit, should fail workflow', async () => {
spyCacheSave.mockImplementation(() =>
Promise.reject(new cache.ValidationError('Validation failed'))
)
spyCacheSave.mockImplementation(() => Promise.reject(new cache.ValidationError('Validation failed')))
createStateForMissingBuildFile()
expect.assertions(1)
await expect(save('maven')).rejects.toEqual(
new cache.ValidationError('Validation failed')
)
await expect(save('maven')).rejects.toEqual(new cache.ValidationError('Validation failed'))
})
describe('for maven', () => {
@@ -233,9 +213,7 @@ describe('dependency cache', () => {
await save('maven')
expect(spyCacheSave).not.toHaveBeenCalled()
expect(spyWarning).toHaveBeenCalledWith(
'Error retrieving key from state.'
)
expect(spyWarning).toHaveBeenCalledWith('Error retrieving key from state.')
})
it('uploads cache', async () => {
createFile(join(workspace, 'pom.xml'))
@@ -244,9 +222,7 @@ describe('dependency cache', () => {
await save('maven')
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
})
describe('for gradle', () => {
@@ -262,9 +238,7 @@ describe('dependency cache', () => {
await save('gradle')
expect(spyCacheSave).not.toHaveBeenCalled()
expect(spyWarning).toHaveBeenCalledWith(
'Error retrieving key from state.'
)
expect(spyWarning).toHaveBeenCalledWith('Error retrieving key from state.')
})
it('uploads cache based on build.gradle', async () => {
createFile(join(workspace, 'build.gradle'))
@@ -273,9 +247,7 @@ describe('dependency cache', () => {
await save('gradle')
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
it('uploads cache based on build.gradle.kts', async () => {
createFile(join(workspace, 'build.gradle.kts'))
@@ -284,9 +256,7 @@ describe('dependency cache', () => {
await save('gradle')
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
it('uploads cache based on buildSrc/Versions.kt', async () => {
createDirectory(join(workspace, 'buildSrc'))
@@ -296,9 +266,7 @@ describe('dependency cache', () => {
await save('gradle')
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
})
describe('for sbt', () => {
@@ -313,9 +281,7 @@ describe('dependency cache', () => {
await save('sbt')
expect(spyCacheSave).not.toHaveBeenCalled()
expect(spyWarning).toHaveBeenCalledWith(
'Error retrieving key from state.'
)
expect(spyWarning).toHaveBeenCalledWith('Error retrieving key from state.')
})
it('uploads cache', async () => {
createFile(join(workspace, 'build.sbt'))
@@ -324,9 +290,7 @@ describe('dependency cache', () => {
await save('sbt')
expect(spyCacheSave).toHaveBeenCalled()
expect(spyWarning).not.toHaveBeenCalled()
expect(spyInfo).toHaveBeenCalledWith(
expect.stringMatching(/^Cache saved with the key:.*/)
)
expect(spyInfo).toHaveBeenCalledWith(expect.stringMatching(/^Cache saved with the key:.*/))
})
})
})
@@ -340,7 +304,7 @@ function resetState() {
* Create states to emulate a restore process without build file.
*/
function createStateForMissingBuildFile() {
jest.spyOn(core, 'getState').mockImplementation(name => {
jest.spyOn(core, 'getState').mockImplementation((name) => {
switch (name) {
case 'cache-primary-key':
return 'setup-graalvm-cache-'
@@ -354,7 +318,7 @@ function createStateForMissingBuildFile() {
* Create states to emulate a successful restore process.
*/
function createStateForSuccessfulRestore() {
jest.spyOn(core, 'getState').mockImplementation(name => {
jest.spyOn(core, 'getState').mockImplementation((name) => {
switch (name) {
case 'cache-primary-key':
return 'setup-graalvm-cache-primary-key'

View File

@@ -24,17 +24,14 @@
* Forked from https://github.com/actions/setup-java/blob/5b36705a13905facb447b6812d613a06a07e371d/__tests__/cleanup-java.test.ts
*/
import {run as cleanup} from '../src/cleanup'
import { run as cleanup } from '../src/cleanup'
import * as core from '@actions/core'
import * as cache from '@actions/cache'
describe('cleanup', () => {
let spyWarning: jest.SpyInstance<void, Parameters<typeof core.warning>>
let spyInfo: jest.SpyInstance<void, Parameters<typeof core.info>>
let spyCacheSave: jest.SpyInstance<
ReturnType<typeof cache.saveCache>,
Parameters<typeof cache.saveCache>
>
let spyCacheSave: jest.SpyInstance<ReturnType<typeof cache.saveCache>, Parameters<typeof cache.saveCache>>
beforeEach(() => {
spyWarning = jest.spyOn(core, 'warning')
@@ -51,9 +48,7 @@ describe('cleanup', () => {
it('does not fail nor warn even when the save process throws a ReserveCacheError', async () => {
spyCacheSave.mockImplementation((_paths: string[], _key: string) =>
Promise.reject(
new cache.ReserveCacheError(
'Unable to reserve cache with key, another job may be creating this cache.'
)
new cache.ReserveCacheError('Unable to reserve cache with key, another job may be creating this cache.')
)
)
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
@@ -65,9 +60,7 @@ describe('cleanup', () => {
})
it('does not fail even though the save process throws error', async () => {
spyCacheSave.mockImplementation((_paths: string[], _key: string) =>
Promise.reject(new Error('Unexpected error'))
)
spyCacheSave.mockImplementation((_paths: string[], _key: string) => Promise.reject(new Error('Unexpected error')))
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
return name === 'cache' ? 'gradle' : ''
})
@@ -84,7 +77,7 @@ function resetState() {
* Create states to emulate a successful restore process.
*/
function createStateForSuccessfulRestore() {
jest.spyOn(core, 'getState').mockImplementation(name => {
jest.spyOn(core, 'getState').mockImplementation((name) => {
switch (name) {
case 'cache-primary-key':
return 'setup-java-cache-primary-key'

View File

@@ -1,11 +1,6 @@
import * as path from 'path'
import {
downloadGraalVM,
downloadGraalVMEELegacy,
fetchArtifact,
fetchArtifactEE
} from '../src/gds'
import {expect, test} from '@jest/globals'
import { downloadGraalVM, downloadGraalVMEELegacy, fetchArtifact, fetchArtifactEE } from '../src/gds'
import { expect, test } from '@jest/globals'
const TEST_USER_AGENT = 'GraalVMGitHubActionTest/1.0.4'
@@ -14,64 +9,42 @@ process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
test('fetch artifacts', async () => {
let artifact = await fetchArtifact(TEST_USER_AGENT, 'isBase:True', '17.0.12')
expect(artifact.id).toBe('1C351E8F41BB8E9EE0631518000AE5F2')
expect(artifact.checksum).toBe(
'b6f3dace24cf1960ec790216f4c86f00d4f43df64e4e8b548f6382f04894713f'
)
expect(artifact.checksum).toBe('b6f3dace24cf1960ec790216f4c86f00d4f43df64e4e8b548f6382f04894713f')
artifact = await fetchArtifact(TEST_USER_AGENT, 'isBase:True', '17')
expect(artifact.checksum).toHaveLength(
'b6f3dace24cf1960ec790216f4c86f00d4f43df64e4e8b548f6382f04894713f'.length
)
expect(artifact.checksum).toHaveLength('b6f3dace24cf1960ec790216f4c86f00d4f43df64e4e8b548f6382f04894713f'.length)
})
test('errors when downloading artifacts', async () => {
await expect(downloadGraalVM('invalid', '17')).rejects.toThrow(
'The provided "gds-token" was rejected (reason: "Invalid download token", opc-request-id: '
)
await expect(downloadGraalVM('invalid', '1')).rejects.toThrow(
'Unable to find GraalVM for JDK 1'
)
await expect(downloadGraalVM('invalid', '1')).rejects.toThrow('Unable to find GraalVM for JDK 1')
})
test('fetch legacy artifacts', async () => {
let artifact = await fetchArtifactEE(
TEST_USER_AGENT,
'isBase:True',
'22.1.0',
'11'
)
let artifact = await fetchArtifactEE(TEST_USER_AGENT, 'isBase:True', '22.1.0', '11')
expect(artifact.id).toBe('DCECD1C1B0B5B8DBE0536E16000A5C74')
expect(artifact.checksum).toBe(
'4280782f6c7fcabe0ba707e8389cbfaf7bbe6b0cf634d309e6efcd1b172e3ce6'
)
artifact = await fetchArtifactEE(
TEST_USER_AGENT,
'isBase:True',
'22.1.0',
'17'
)
expect(artifact.checksum).toBe('4280782f6c7fcabe0ba707e8389cbfaf7bbe6b0cf634d309e6efcd1b172e3ce6')
artifact = await fetchArtifactEE(TEST_USER_AGENT, 'isBase:True', '22.1.0', '17')
expect(artifact.id).toBe('DCECD2068882A0E9E0536E16000A9504')
expect(artifact.checksum).toBe(
'e897add7d94bc456a61e6f927e831dff759efa3392a4b69c720dd3debc8f947d'
)
expect(artifact.checksum).toBe('e897add7d94bc456a61e6f927e831dff759efa3392a4b69c720dd3debc8f947d')
await expect(
fetchArtifactEE(TEST_USER_AGENT, 'isBase:False', '22.1.0', '11')
).rejects.toThrow('Found more than one GDS artifact')
await expect(
fetchArtifactEE(TEST_USER_AGENT, 'isBase:True', '1.0.0', '11')
).rejects.toThrow('Unable to find JDK11-based GraalVM EE 1.0.0')
await expect(fetchArtifactEE(TEST_USER_AGENT, 'isBase:False', '22.1.0', '11')).rejects.toThrow(
'Found more than one GDS artifact'
)
await expect(fetchArtifactEE(TEST_USER_AGENT, 'isBase:True', '1.0.0', '11')).rejects.toThrow(
'Unable to find JDK11-based GraalVM EE 1.0.0'
)
})
test('errors when downloading legacy artifacts', async () => {
await expect(
downloadGraalVMEELegacy('invalid', '22.1.0', '11')
).rejects.toThrow(
await expect(downloadGraalVMEELegacy('invalid', '22.1.0', '11')).rejects.toThrow(
'The provided "gds-token" was rejected (reason: "Invalid download token", opc-request-id: '
)
await expect(
downloadGraalVMEELegacy('invalid', '1.0.0', '11')
).rejects.toThrow('Unable to find JDK11-based GraalVM EE 1.0.0')
await expect(
downloadGraalVMEELegacy('invalid', '22.1.0', '1')
).rejects.toThrow('Unable to find JDK1-based GraalVM EE 22.1.0')
await expect(downloadGraalVMEELegacy('invalid', '1.0.0', '11')).rejects.toThrow(
'Unable to find JDK11-based GraalVM EE 1.0.0'
)
await expect(downloadGraalVMEELegacy('invalid', '22.1.0', '1')).rejects.toThrow(
'Unable to find JDK1-based GraalVM EE 22.1.0'
)
})

View File

@@ -1,13 +1,9 @@
import * as path from 'path'
import * as graalvm from '../src/graalvm'
import {expect, test} from '@jest/globals'
import {getTaggedRelease} from '../src/utils'
import {
findGraalVMVersion,
findHighestJavaVersion,
findLatestEABuildDownloadUrl
} from '../src/graalvm'
import {GRAALVM_GH_USER, GRAALVM_RELEASES_REPO} from '../src/constants'
import { expect, test } from '@jest/globals'
import { getTaggedRelease } from '../src/utils'
import { findGraalVMVersion, findHighestJavaVersion, findLatestEABuildDownloadUrl } from '../src/graalvm'
import { GRAALVM_GH_USER, GRAALVM_RELEASES_REPO } from '../src/constants'
process.env['RUNNER_TOOL_CACHE'] = path.join(__dirname, 'TOOL_CACHE')
process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
@@ -52,11 +48,7 @@ test('find version/javaVersion', async () => {
}
expect(error.message).toContain('Unable to find the latest Java version for')
const latestRelease = await getTaggedRelease(
GRAALVM_GH_USER,
GRAALVM_RELEASES_REPO,
'vm-22.3.1'
)
const latestRelease = await getTaggedRelease(GRAALVM_GH_USER, GRAALVM_RELEASES_REPO, 'vm-22.3.1')
const latestVersion = findGraalVMVersion(latestRelease)
expect(latestVersion).not.toBe('')
const latestJavaVersion = findHighestJavaVersion(latestRelease, latestVersion)
@@ -64,7 +56,7 @@ test('find version/javaVersion', async () => {
error = new Error('unexpected')
try {
const invalidRelease = {...latestRelease, tag_name: 'invalid'}
const invalidRelease = { ...latestRelease, tag_name: 'invalid' }
findGraalVMVersion(invalidRelease)
} catch (err) {
if (!(err instanceof Error)) {

View File

@@ -2,7 +2,7 @@ import * as liberica from '../src/liberica'
import * as c from '../src/constants'
import * as path from 'path'
import * as semver from 'semver'
import {expect, test} from '@jest/globals'
import { expect, test } from '@jest/globals'
process.env['RUNNER_TOOL_CACHE'] = path.join(__dirname, 'TOOL_CACHE')
process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
@@ -43,29 +43,15 @@ test('find asset URL', async () => {
if (!c.IS_LINUX) {
// This check can fail on Linux because there's no `jdk+fx` package for aarch64 and/or musl
await expectURL(
'21.0.2+14',
'jdk+fx',
'bellsoft-liberica-vm-full-openjdk21.0.2'
)
await expectURL('21.0.2+14', 'jdk+fx', 'bellsoft-liberica-vm-full-openjdk21.0.2')
}
}, 10000)
type verifier = (
version: string,
major: number,
minor: number,
patch: number
) => void
type verifier = (version: string, major: number, minor: number, patch: number) => void
function atLeast(expectedMinVersion: string): verifier {
const expectedMajor = semver.major(expectedMinVersion)
return function (
version: string,
major: number,
_minor: number,
_patch: number
) {
return function (version: string, major: number, _minor: number, _patch: number) {
expect(major).toBe(expectedMajor)
if (semver.compareBuild(version, expectedMinVersion) < 0) {
throw new Error(`Version ${version} is older than ${expectedMinVersion}`)
@@ -77,12 +63,7 @@ function upToBuild(expectedMinVersion: string): verifier {
const expectedMinor = semver.minor(expectedMinVersion)
const expectedPatch = semver.patch(expectedMinVersion)
const atLeastVerifier = atLeast(expectedMinVersion)
return function (
version: string,
major: number,
minor: number,
patch: number
) {
return function (version: string, major: number, minor: number, patch: number) {
atLeastVerifier(version, major, minor, patch)
expect(minor).toBe(expectedMinor)
expect(patch).toBe(expectedPatch)
@@ -90,12 +71,7 @@ function upToBuild(expectedMinVersion: string): verifier {
}
function exactly(expectedVersion: string): verifier {
return function (
version: string,
_major: number,
_minor: number,
_patch: number
) {
return function (version: string, _major: number, _minor: number, _patch: number) {
if (semver.compareBuild(version, expectedVersion) != 0) {
throw new Error(`Expected version ${expectedVersion} but got ${version}`)
}
@@ -114,24 +90,16 @@ async function expectLatestToBe(pattern: string, verify: verifier) {
async function expectLatestToFail(pattern: string) {
try {
const result = await liberica.findLatestLibericaJavaVersion(pattern)
throw new Error(
`findLatest(${pattern}) should have failed but returned ${result}`
)
throw new Error(`findLatest(${pattern}) should have failed but returned ${result}`)
} catch (err) {
if (!(err instanceof Error)) {
throw new Error(`Unexpected non-Error: ${err}`)
}
expect(err.message).toContain(
`Unable to find the latest version for JDK${pattern}`
)
expect(err.message).toContain(`Unable to find the latest version for JDK${pattern}`)
}
}
async function expectURL(
javaVersion: string,
javaPackage: string,
expectedPrefix: string
) {
async function expectURL(javaVersion: string, javaPackage: string, expectedPrefix: string) {
const url = await liberica.findLibericaURL(javaVersion, javaPackage)
expect(url).toBeDefined()
const parts = url.split('/')

View File

@@ -1,7 +1,7 @@
import * as path from 'path'
import * as mandrel from '../src/mandrel'
import {expect, test} from '@jest/globals'
import {getLatestRelease} from '../src/utils'
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')

View File

@@ -1,22 +1,13 @@
import * as path from 'path'
import {expect, test} from '@jest/globals'
import {needsWindowsEnvironmentSetup} from '../src/msvc'
import {VERSION_DEV, VERSION_LATEST} from '../src/constants'
import { expect, test } from '@jest/globals'
import { needsWindowsEnvironmentSetup } from '../src/msvc'
import { VERSION_DEV, VERSION_LATEST } from '../src/constants'
process.env['RUNNER_TOOL_CACHE'] = path.join(__dirname, 'TOOL_CACHE')
process.env['RUNNER_TEMP'] = path.join(__dirname, 'TEMP')
test('decide whether Window env must be set up for GraalVM for JDK', async () => {
for (const javaVersion of [
'17',
'17.0.8',
'17.0',
'21',
'22',
'22-ea',
'23-ea',
VERSION_DEV
]) {
for (const javaVersion of ['17', '17.0.8', '17.0', '21', '22', '22-ea', '23-ea', VERSION_DEV]) {
expect(needsWindowsEnvironmentSetup(javaVersion, '', true)).toBe(false)
}
})
@@ -29,8 +20,6 @@ test('decide whether Window env must be set up for legacy GraalVM', async () =>
['7', VERSION_DEV],
['17', VERSION_LATEST]
]) {
expect(
needsWindowsEnvironmentSetup(combination[0], combination[1], false)
).toBe(combination[1] !== VERSION_DEV)
expect(needsWindowsEnvironmentSetup(combination[0], combination[1], false)).toBe(combination[1] !== VERSION_DEV)
}
})

View File

@@ -1,11 +1,11 @@
import * as c from '../src/constants'
import {setUpSBOMSupport, processSBOM} from '../src/features/sbom'
import { setUpSBOMSupport, processSBOM } from '../src/features/sbom'
import * as core from '@actions/core'
import * as github from '@actions/github'
import * as glob from '@actions/glob'
import {join} from 'path'
import {tmpdir} from 'os'
import {mkdtempSync, writeFileSync, rmSync} from 'fs'
import { join } from 'path'
import { tmpdir } from 'os'
import { mkdtempSync, writeFileSync, rmSync } from 'fs'
jest.mock('@actions/glob')
jest.mock('@actions/github', () => ({
@@ -37,9 +37,7 @@ function mockFindSBOM(files: string[]) {
function mockGithubAPIReturnValue(returnValue: Error | undefined = undefined) {
const mockOctokit = {
request:
returnValue === undefined
? jest.fn().mockResolvedValue(returnValue)
: jest.fn().mockRejectedValue(returnValue)
returnValue === undefined ? jest.fn().mockResolvedValue(returnValue) : jest.fn().mockRejectedValue(returnValue)
}
;(github.getOctokit as jest.Mock).mockReturnValue(mockOctokit)
return mockOctokit
@@ -48,10 +46,7 @@ function mockGithubAPIReturnValue(returnValue: Error | undefined = undefined) {
describe('sbom feature', () => {
let spyInfo: jest.SpyInstance<void, Parameters<typeof core.info>>
let spyWarning: jest.SpyInstance<void, Parameters<typeof core.warning>>
let spyExportVariable: jest.SpyInstance<
void,
Parameters<typeof core.exportVariable>
>
let spyExportVariable: jest.SpyInstance<void, Parameters<typeof core.exportVariable>>
let workspace: string
let originalEnv: NodeJS.ProcessEnv
const javaVersion = '24.0.0'
@@ -71,9 +66,7 @@ describe('sbom feature', () => {
spyInfo = jest.spyOn(core, 'info').mockImplementation(() => null)
spyWarning = jest.spyOn(core, 'warning').mockImplementation(() => null)
spyExportVariable = jest
.spyOn(core, 'exportVariable')
.mockImplementation(() => null)
spyExportVariable = jest.spyOn(core, 'exportVariable').mockImplementation(() => null)
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
if (name === 'native-image-enable-sbom') {
return 'true'
@@ -91,7 +84,7 @@ describe('sbom feature', () => {
spyInfo.mockRestore()
spyWarning.mockRestore()
spyExportVariable.mockRestore()
rmSync(workspace, {recursive: true, force: true})
rmSync(workspace, { recursive: true, force: true })
})
describe('setup', () => {
@@ -128,9 +121,7 @@ describe('sbom feature', () => {
c.NATIVE_IMAGE_OPTIONS_ENV,
expect.stringContaining('--enable-sbom=export')
)
expect(spyInfo).toHaveBeenCalledWith(
'Enabled SBOM generation for Native Image build'
)
expect(spyInfo).toHaveBeenCalledWith('Enabled SBOM generation for Native Image build')
expect(spyWarning).not.toHaveBeenCalled()
})
@@ -202,17 +193,11 @@ describe('sbom feature', () => {
it('should process SBOM and display components', async () => {
await setUpAndProcessSBOM(sampleSBOM)
expect(spyInfo).toHaveBeenCalledWith(
'Found SBOM: ' + join(workspace, 'test.sbom.json')
)
expect(spyInfo).toHaveBeenCalledWith('Found SBOM: ' + join(workspace, 'test.sbom.json'))
expect(spyInfo).toHaveBeenCalledWith('=== SBOM Content ===')
expect(spyInfo).toHaveBeenCalledWith('- pkg:maven/org.json/json@20241224')
expect(spyInfo).toHaveBeenCalledWith(
'- pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT'
)
expect(spyInfo).toHaveBeenCalledWith(
' depends on: pkg:maven/org.json/json@20241224'
)
expect(spyInfo).toHaveBeenCalledWith('- pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT')
expect(spyInfo).toHaveBeenCalledWith(' depends on: pkg:maven/org.json/json@20241224')
expect(spyWarning).not.toHaveBeenCalled()
})
@@ -284,8 +269,7 @@ describe('sbom feature', () => {
dependencies: []
}),
'main-test-app': expect.objectContaining({
package_url:
'pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT',
package_url: 'pkg:maven/com.oracle/main-test-app@1.0-SNAPSHOT',
dependencies: ['pkg:maven/org.json/json@20241224']
})
})
@@ -293,17 +277,13 @@ describe('sbom feature', () => {
})
})
)
expect(spyInfo).toHaveBeenCalledWith(
'Dependency snapshot submitted successfully.'
)
expect(spyInfo).toHaveBeenCalledWith('Dependency snapshot submitted successfully.')
})
it('should handle GitHub API submission errors gracefully', async () => {
mockGithubAPIReturnValue(new Error('API submission failed'))
await expect(setUpAndProcessSBOM(sampleSBOM)).rejects.toBeInstanceOf(
Error
)
await expect(setUpAndProcessSBOM(sampleSBOM)).rejects.toBeInstanceOf(Error)
})
})
})

View File

@@ -1,5 +1,5 @@
import {expect, test} from '@jest/globals'
import {toSemVer} from '../src/utils'
import { expect, test } from '@jest/globals'
import { toSemVer } from '../src/utils'
test('convert version', async () => {
for (const inputAndExpectedOutput of [