mirror of
https://github.com/gradle/actions.git
synced 2026-03-22 12:05:48 +08:00
With this change, the caching functionality of `setup-gradle` and `dependency-submission` is now provided by `gradle-actions-caching`, a closed-source library distributed under our [Terms of Use](https://gradle.com/legal/terms-of-use/). The rest of the action implementation remains open source. Using `setup-gradle` or `dependency-submission` with caching enabled involves loading and using the `gradle-actions-caching` component, requiring acceptance of the [Terms of Use](https://gradle.com/legal/terms-of-use/). There are no functional changes to caching provided by these actions: all workflows will continue to function as before. The non-caching aspects of action implementation remain open source. By running these actions with caching disabled they can be used without ever loading `gradle-actions-caching` or accepting the license terms. Supporting the caching infrastructure in this project requires a substantial engineering investment by Gradle Technologies, which we can sustain thanks to Develocity, our commercial offering. Caching technologies are a core part of the Develocity offering, and the caching in `setup-gradle` fits squarely in that space. This licensing change lets us continue to build advanced capabilities that go beyond what we would offer as open source. Proper production-ready Configuration Cache support will be the first capability. Improving build performance for self-hosted runners will follow. We may introduce functionality restrictions in future updates. However, caching functionality will remain free for public repositories. We have a long-standing commitment to open source, as maintainers of Gradle Build Tool, and by [sponsoring the open source community](https://gradle.com/oss-sponsored-by-develocity/) with free Develocity licenses. Public repositories are primarily used by open source projects, and we remain committed to supporting them. - Implementation of caching logic to save and restore Gradle User Home content has been removed, replaced by the `gradle-actions-caching` component. - The `@actions/caching` library is still used to cache Gradle distributions that are downloaded and provisioned by `setup-gradle`. This PR updates to the latest version of `@actions/caching`, and removes the patch that is no longer required. - License notices are now displayed in documentation, logs and the generated Job Summary.
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/gradle-user-home'
|
|
|
|
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>
|
|
|
|
`)
|
|
})
|
|
})
|