Skip to content

Commit

Permalink
fix sbt/scala cache key (actions#478)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dogacel authored and fniephaus committed Jun 20, 2023
1 parent 4ba24dd commit 194ba74
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 5 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -116,7 +116,7 @@ Currently, the following distributions are supported:
The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are gradle, maven and sbt. The format of the used cache key is `setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}`, where the hash is based on the following files:
- gradle: `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/Versions.kt`, `buildSrc/**/Dependencies.kt`, and `gradle/*.versions.toml`
- maven: `**/pom.xml`
- sbt: all sbt build definition files `**/*.sbt`, `**/project/build.properties`, `**/project/**.{scala,sbt}`
- sbt: all sbt build definition files `**/*.sbt`, `**/project/build.properties`, `**/project/**.scala`, `**/project/**.sbt`

The workflow output `cache-hit` is set to indicate if an exact match was found for the key [as actions/cache does](https://github.com/actions/cache/tree/main#outputs).

Expand Down
24 changes: 23 additions & 1 deletion __tests__/cache.test.ts
Expand Up @@ -145,7 +145,7 @@ describe('dependency cache', () => {
await expect(restore('sbt')).rejects.toThrow(
`No file in ${projectRoot(
workspace
)} matched to [**/*.sbt,**/project/build.properties,**/project/**.{scala,sbt}], make sure you have checked out the target repository`
)} matched to [**/*.sbt,**/project/build.properties,**/project/**.scala,**/project/**.sbt], make sure you have checked out the target repository`
);
});
it('downloads cache', async () => {
Expand All @@ -156,6 +156,28 @@ describe('dependency cache', () => {
expect(spyWarning).not.toHaveBeenCalled();
expect(spyInfo).toHaveBeenCalledWith('sbt cache is not found');
});
it('detects scala and sbt changes under **/project/ folder', async () => {
createFile(join(workspace, 'build.sbt'));
createDirectory(join(workspace, 'project'));
createFile(join(workspace, 'project/DependenciesV1.scala'));

await restore('sbt');
const firstCall = spySaveState.mock.calls.toString();

spySaveState.mockClear();
await restore('sbt');
const secondCall = spySaveState.mock.calls.toString();

// Make sure multiple restores produce the same cache
expect(firstCall).toBe(secondCall);

spySaveState.mockClear();
createFile(join(workspace, 'project/DependenciesV2.scala'));
await restore('sbt');
const thirdCall = spySaveState.mock.calls.toString();

expect(firstCall).not.toBe(thirdCall);
});
});
});
describe('save', () => {
Expand Down
3 changes: 2 additions & 1 deletion dist/cleanup/index.js
Expand Up @@ -68416,7 +68416,8 @@ const supportedPackageManager = [
pattern: [
'**/*.sbt',
'**/project/build.properties',
'**/project/**.{scala,sbt}'
'**/project/**.scala',
'**/project/**.sbt'
]
}
];
Expand Down
3 changes: 2 additions & 1 deletion dist/setup/index.js
Expand Up @@ -103621,7 +103621,8 @@ const supportedPackageManager = [
pattern: [
'**/*.sbt',
'**/project/build.properties',
'**/project/**.{scala,sbt}'
'**/project/**.scala',
'**/project/**.sbt'
]
}
];
Expand Down
3 changes: 2 additions & 1 deletion src/cache.ts
Expand Up @@ -56,7 +56,8 @@ const supportedPackageManager: PackageManager[] = [
pattern: [
'**/*.sbt',
'**/project/build.properties',
'**/project/**.{scala,sbt}'
'**/project/**.scala',
'**/project/**.sbt'
]
}
];
Expand Down

0 comments on commit 194ba74

Please sign in to comment.