mirror of
https://github.com/gradle/actions.git
synced 2026-04-19 18:12:58 +08:00
ff9ae24c39
## Summary
- **New `basic` cache provider**: Adds an open-source (MIT-licensed)
caching implementation built on `@actions/cache` as an alternative to
the proprietary Enhanced Caching. Users can opt in with `cache-provider:
basic` on both `setup-gradle` and `dependency-submission` actions.
- **Revamped licensing & distribution docs**: Replaces the verbose
licensing notice block (previously shown in README, docs, and logs) with
a friendlier callout and a new dedicated
[DISTRIBUTION.md](./DISTRIBUTION.md) covering component licensing, usage
tiers, data privacy ("Safe Harbor"), and opt-out instructions.
- **Improved messaging**: Enhanced Caching and Basic Caching each
display concise, informative log messages and job summary notes instead
of the previous wall-of-text license warning.
- **New integration tests**: Adds `integ-test-basic-cache-provider.yml`
workflow that seeds and verifies the basic cache provider across
platforms, plus unit tests for `BasicCacheService` and `getCacheService`
selection logic.
- **CI workflow reorganization**: Dependency-submission integration
tests extracted into their own reusable suite
(`suite-integ-test-dependency-submission.yml`); sample project tests
moved into the caching suite.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
51 lines
1.9 KiB
TypeScript
51 lines
1.9 KiB
TypeScript
import {describe, expect, it, jest, beforeEach} from '@jest/globals'
|
|
|
|
import {CacheProvider} from '../../src/configuration'
|
|
import type {CacheConfig} from '../../src/configuration'
|
|
|
|
describe('getCacheService selection logic', () => {
|
|
beforeEach(() => {
|
|
jest.restoreAllMocks()
|
|
})
|
|
|
|
it('returns NoOpCacheService when cache is disabled', async () => {
|
|
const {getCacheService} = await import('../../src/cache-service-loader')
|
|
const mockConfig = {
|
|
isCacheDisabled: () => true,
|
|
getCacheProvider: () => CacheProvider.Enhanced,
|
|
isCacheLicenseAccepted: () => true
|
|
} as unknown as CacheConfig
|
|
|
|
const service = await getCacheService(mockConfig)
|
|
const report = await service.save('/home/.gradle', [], {
|
|
disabled: true,
|
|
readOnly: false,
|
|
writeOnly: false,
|
|
overwriteExisting: false,
|
|
strictMatch: false,
|
|
cleanup: 'never',
|
|
includes: [],
|
|
excludes: []
|
|
})
|
|
|
|
// NoOpCacheService returns a specific report mentioning cache was disabled
|
|
expect(report).toContain('Cache was disabled')
|
|
})
|
|
|
|
it('wraps BasicCacheService with LicenseWarningCacheService when cache-provider is basic', async () => {
|
|
const {getCacheService} = await import('../../src/cache-service-loader')
|
|
const mockConfig = {
|
|
isCacheDisabled: () => false,
|
|
getCacheProvider: () => CacheProvider.Basic,
|
|
isCacheLicenseAccepted: () => false
|
|
} as unknown as CacheConfig
|
|
|
|
const service = await getCacheService(mockConfig)
|
|
|
|
// The service should not be a bare BasicCacheService — it should be wrapped
|
|
// with LicenseWarningCacheService that appends the basic caching summary
|
|
const {BasicCacheService} = await import('../../src/cache-service-basic')
|
|
expect(service).not.toBeInstanceOf(BasicCacheService)
|
|
})
|
|
})
|