mirror of
https://github.com/gradle/actions.git
synced 2025-04-24 19:59:18 +08:00
Previously we were relying on Gradle to substitute JDK environment variables in toolchains.xml. With this change, the actual path to the JDK is encoded instead. This should avoid issues where Gradle is not able to successfully resolve the envioronment variable.
120 lines
3.0 KiB
TypeScript
120 lines
3.0 KiB
TypeScript
import {afterAll, describe, expect, it, jest} from '@jest/globals'
|
|
|
|
import {getPredefinedToolchains, mergeToolchainContent} from "../../src/caching/gradle-user-home-utils";
|
|
|
|
describe('predefined-toolchains', () => {
|
|
const OLD_ENV = process.env
|
|
afterAll(() => {
|
|
process.env = OLD_ENV
|
|
});
|
|
|
|
describe('returns', () => {
|
|
it('null if no JAVA_HOME_ envs are set', async () => {
|
|
jest.resetModules()
|
|
process.env = {
|
|
"JAVA_HOME": "/jdks/foo_8"
|
|
}
|
|
|
|
const predefinedToolchains = getPredefinedToolchains()
|
|
expect(predefinedToolchains).toBe(null)
|
|
})
|
|
it('valid toolchains.xml if JAVA_HOME_ envs are set', async () => {
|
|
jest.resetModules()
|
|
process.env = {
|
|
"JAVA_HOME": "/jdks/foo_8",
|
|
"JAVA_HOME_8_X64": "/jdks/foo_8",
|
|
"JAVA_HOME_11_X64": "/jdks/foo_11",
|
|
"JAVA_HOME_21_ARM64": "/jdks/foo_21",
|
|
}
|
|
|
|
const predefinedToolchains = getPredefinedToolchains()
|
|
expect(predefinedToolchains).toBe(
|
|
// language=XML
|
|
`<?xml version="1.0" encoding="UTF-8"?>
|
|
<toolchains>
|
|
<!-- JDK Toolchains installed by default on GitHub-hosted runners -->
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>8</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_8</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>11</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_11</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>21</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_21</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
</toolchains>
|
|
`)
|
|
})
|
|
})
|
|
|
|
it("merges with existing toolchains", async () => {
|
|
jest.resetModules()
|
|
process.env = {
|
|
"JAVA_HOME_11_X64": "/jdks/foo_11",
|
|
}
|
|
|
|
// language=XML
|
|
const existingToolchains =
|
|
`<?xml version="1.0" encoding="UTF-8"?>
|
|
<toolchains>
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>8</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_8</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
</toolchains>
|
|
`
|
|
|
|
const mergedContent = mergeToolchainContent(existingToolchains, getPredefinedToolchains()!)
|
|
expect(mergedContent).toBe(
|
|
// language=XML
|
|
`<?xml version="1.0" encoding="UTF-8"?>
|
|
<toolchains>
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>8</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_8</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
|
|
<!-- JDK Toolchains installed by default on GitHub-hosted runners -->
|
|
<toolchain>
|
|
<type>jdk</type>
|
|
<provides>
|
|
<version>11</version>
|
|
</provides>
|
|
<configuration>
|
|
<jdkHome>/jdks/foo_11</jdkHome>
|
|
</configuration>
|
|
</toolchain>
|
|
</toolchains>
|
|
|
|
`)
|
|
})
|
|
})
|