mirror of
https://gitea.com/actions/setup-java.git
synced 2026-08-05 02:31:18 +00:00
Add JDK caching
Cache resolved JDK tool-cache entries by exact platform and release identity, with a default-on cache-jdk input and explicit opt-out. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -70,6 +70,10 @@ jest.unstable_mockModule('@actions/tool-cache', () => ({
|
||||
}
|
||||
}));
|
||||
|
||||
jest.unstable_mockModule('../../src/jdk-cache.js', () => ({
|
||||
restoreJdk: jest.fn()
|
||||
}));
|
||||
|
||||
const real_util_module = await import('../../src/util.js');
|
||||
jest.unstable_mockModule('../../src/util.js', () => ({
|
||||
...real_util_module,
|
||||
@@ -86,6 +90,7 @@ jest.unstable_mockModule('../../src/util.js', () => ({
|
||||
const core = await import('@actions/core');
|
||||
const tc = await import('@actions/tool-cache');
|
||||
const util = await import('../../src/util.js');
|
||||
const jdkCache = await import('../../src/jdk-cache.js');
|
||||
const {JavaBase} = await import('../../src/distributions/base-installer.js');
|
||||
|
||||
class EmptyJavaBase extends JavaBase {
|
||||
@@ -465,6 +470,7 @@ describe('setupJava', () => {
|
||||
checkLatest: false,
|
||||
forceDownload: true
|
||||
});
|
||||
|
||||
const findInToolcache = jest.fn(() => ({
|
||||
version: actualJavaVersion,
|
||||
path: javaPathInstalled
|
||||
@@ -486,6 +492,37 @@ describe('setupJava', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('restores the exact resolved JDK before downloading', async () => {
|
||||
mockJavaBase = new EmptyJavaBase({
|
||||
version: '11',
|
||||
architecture: 'x86',
|
||||
packageType: 'jdk',
|
||||
checkLatest: true,
|
||||
cacheJdk: true
|
||||
});
|
||||
const downloadTool = jest.spyOn(mockJavaBase as any, 'downloadTool');
|
||||
(jdkCache.restoreJdk as jest.Mock).mockResolvedValue(true);
|
||||
jest
|
||||
.spyOn(mockJavaBase as any, 'getRestoredJdkPath')
|
||||
.mockReturnValue(javaPathInstalled);
|
||||
|
||||
await expect(mockJavaBase.setupJava()).resolves.toEqual({
|
||||
version: actualJavaVersion,
|
||||
path: javaPathInstalled
|
||||
});
|
||||
|
||||
expect(jdkCache.restoreJdk).toHaveBeenCalledWith({
|
||||
distribution: 'Empty',
|
||||
packageType: 'jdk',
|
||||
architecture: 'x86',
|
||||
version: actualJavaVersion,
|
||||
source: `some/random_url/java/${actualJavaVersion}`,
|
||||
path: path.join('Java_Empty_jdk', actualJavaVersion)
|
||||
});
|
||||
expect(downloadTool).not.toHaveBeenCalled();
|
||||
expect(spyCoreInfo).not.toHaveBeenCalledWith('Trying to download...');
|
||||
});
|
||||
|
||||
it.each([
|
||||
[
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user