mirror of
https://github.com/actions/setup-java.git
synced 2026-07-31 21:36:17 +00:00
Add dependency cache path overrides (#1175)
* Add dependency cache path overrides Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dd650d36-9c97-4ca4-9ec8-39b37f99a07c * Clarify supported dependency cache managers Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dd650d36-9c97-4ca4-9ec8-39b37f99a07c * Fix custom cache path CI checks Align the custom cache save and restore key inputs and use the workflow hash to avoid a previously populated cache entry. Rebuild the distribution bundles. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dd650d36-9c97-4ca4-9ec8-39b37f99a07c --------- Copilot-Session: dd650d36-9c97-4ca4-9ec8-39b37f99a07c
This commit is contained in:
+68
-4
@@ -224,10 +224,10 @@ describe('dependency cache', () => {
|
||||
join(workspace, '.mvn', 'wrapper', 'maven-wrapper.properties')
|
||||
);
|
||||
|
||||
await restore('maven', '');
|
||||
await restore('maven', '', ['/custom/maven/repository']);
|
||||
// Main dependency cache no longer carries the wrapper dists path.
|
||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||
[join(os.homedir(), '.m2', 'repository')],
|
||||
['/custom/maven/repository'],
|
||||
expect.any(String)
|
||||
);
|
||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||
@@ -394,10 +394,10 @@ describe('dependency cache', () => {
|
||||
it('restores the gradle wrapper distribution cache independently of the main cache', async () => {
|
||||
createFile(join(workspace, 'build.gradle'));
|
||||
|
||||
await restore('gradle', '');
|
||||
await restore('gradle', '', ['/custom/gradle/caches']);
|
||||
// Main dependency cache no longer carries the wrapper path.
|
||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||
[join(os.homedir(), '.gradle', 'caches')],
|
||||
['/custom/gradle/caches'],
|
||||
expect.any(String)
|
||||
);
|
||||
// Wrapper distribution is restored on its own, keyed only on the
|
||||
@@ -576,6 +576,34 @@ describe('dependency cache', () => {
|
||||
expect(spyInfo).toHaveBeenCalledWith('gradle cache is not found');
|
||||
});
|
||||
});
|
||||
describe('cache-path', () => {
|
||||
it.each([
|
||||
['maven', ['/custom/maven/repository']],
|
||||
['gradle', ['/custom/gradle/caches']],
|
||||
[
|
||||
'sbt',
|
||||
[
|
||||
'/custom/ivy/cache',
|
||||
'/custom/coursier/cache',
|
||||
'!/custom/ivy/cache/*.lock'
|
||||
]
|
||||
]
|
||||
])(
|
||||
'restores and persists custom paths for %s',
|
||||
async (packageManager, cachePaths) => {
|
||||
await restore(packageManager, '', cachePaths);
|
||||
|
||||
expect(spyCacheRestore).toHaveBeenCalledWith(
|
||||
cachePaths,
|
||||
expect.any(String)
|
||||
);
|
||||
expect(spySaveState).toHaveBeenCalledWith(
|
||||
'cache-paths',
|
||||
JSON.stringify(cachePaths)
|
||||
);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
describe('save', () => {
|
||||
let spyCacheSave: any;
|
||||
@@ -625,6 +653,42 @@ describe('dependency cache', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it.each([
|
||||
['maven', ['/custom/maven/repository']],
|
||||
['gradle', ['/custom/gradle/caches']],
|
||||
[
|
||||
'sbt',
|
||||
[
|
||||
'/custom/ivy/cache',
|
||||
'/custom/coursier/cache',
|
||||
'!/custom/ivy/cache/*.lock'
|
||||
]
|
||||
]
|
||||
])(
|
||||
'saves the persisted custom paths for %s',
|
||||
async (packageManager, cachePaths) => {
|
||||
(core.getState as jest.Mock<any>).mockImplementation((name: any) => {
|
||||
switch (name) {
|
||||
case 'cache-primary-key':
|
||||
return 'setup-java-cache-primary-key';
|
||||
case 'cache-matched-key':
|
||||
return 'setup-java-cache-matched-key';
|
||||
case 'cache-paths':
|
||||
return JSON.stringify(cachePaths);
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
});
|
||||
|
||||
await save(packageManager);
|
||||
|
||||
expect(spyCacheSave).toHaveBeenCalledWith(
|
||||
cachePaths,
|
||||
'setup-java-cache-primary-key'
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
describe('for maven', () => {
|
||||
it('uploads cache even if no pom.xml found', async () => {
|
||||
createStateForMissingBuildFile();
|
||||
|
||||
@@ -301,6 +301,10 @@ describe('setup action orchestration', () => {
|
||||
inputs.set('cache', 'maven');
|
||||
inputs.set('cache-dependency-path', '**/pom.xml');
|
||||
multilineInputs.set('java-version', ['21']);
|
||||
multilineInputs.set('cache-path', [
|
||||
'/custom/maven/repository',
|
||||
'!/custom/maven/repository/excluded'
|
||||
]);
|
||||
const setupJava = jest.fn(async () => ({
|
||||
version: '21.0.4+7',
|
||||
path: '/opt/java/21'
|
||||
@@ -312,7 +316,10 @@ describe('setup action orchestration', () => {
|
||||
expect(problemMatcher.configureProblemMatcher).toHaveBeenCalledWith(
|
||||
expect.stringMatching(/\.github[/\\]java\.json$/)
|
||||
);
|
||||
expect(cache.restore).toHaveBeenCalledWith('maven', '**/pom.xml');
|
||||
expect(cache.restore).toHaveBeenCalledWith('maven', '**/pom.xml', [
|
||||
'/custom/maven/repository',
|
||||
'!/custom/maven/repository/excluded'
|
||||
]);
|
||||
expect(
|
||||
(toolchains.configureToolchains as jest.Mock).mock.invocationCallOrder[0]
|
||||
).toBeLessThan(
|
||||
|
||||
Reference in New Issue
Block a user