2021-06-16 09:52:44 +03:00
import * as core from '@actions/core' ;
2022-03-31 21:10:37 +02:00
import * as cache from '@actions/cache' ;
2021-06-16 09:52:44 +03:00
import path from 'path' ;
import * as utils from '../src/cache-utils' ;
2022-03-31 21:10:37 +02:00
import { PackageManagerInfo , isCacheFeatureAvailable } from '../src/cache-utils' ;
2021-06-16 09:52:44 +03:00
describe ( 'cache-utils' , ( ) = > {
const versionYarn1 = '1.2.3' ;
let debugSpy : jest.SpyInstance ;
let getCommandOutputSpy : jest.SpyInstance ;
2022-03-31 21:10:37 +02:00
let isFeatureAvailable : jest.SpyInstance ;
let info : jest.SpyInstance ;
let warningSpy : jest.SpyInstance ;
2021-06-16 09:52:44 +03:00
beforeEach ( ( ) = > {
process . env [ 'GITHUB_WORKSPACE' ] = path . join ( __dirname , 'data' ) ;
debugSpy = jest . spyOn ( core , 'debug' ) ;
debugSpy . mockImplementation ( msg = > { } ) ;
2022-03-31 21:10:37 +02:00
info = jest . spyOn ( core , 'info' ) ;
warningSpy = jest . spyOn ( core , 'warning' ) ;
isFeatureAvailable = jest . spyOn ( cache , 'isFeatureAvailable' ) ;
2021-06-16 09:52:44 +03:00
getCommandOutputSpy = jest . spyOn ( utils , 'getCommandOutput' ) ;
} ) ;
describe ( 'getPackageManagerInfo' , ( ) = > {
2021-06-29 13:34:35 +03:00
it . each < [ string , PackageManagerInfo | null ] > ( [
2021-06-16 09:52:44 +03:00
[ 'npm' , utils . supportedPackageManagers . npm ] ,
2021-06-30 16:44:51 +01:00
[ 'pnpm' , utils . supportedPackageManagers . pnpm ] ,
2021-06-16 09:52:44 +03:00
[ 'yarn' , utils . supportedPackageManagers . yarn1 ] ,
[ 'yarn1' , null ] ,
[ 'yarn2' , null ] ,
[ 'npm7' , null ]
] ) ( 'getPackageManagerInfo for %s is %o' , async ( packageManager , result ) = > {
getCommandOutputSpy . mockImplementationOnce ( ( ) = > versionYarn1 ) ;
await expect ( utils . getPackageManagerInfo ( packageManager ) ) . resolves . toBe (
result
) ;
} ) ;
} ) ;
2022-03-31 21:10:37 +02:00
it ( 'isCacheFeatureAvailable for GHES is false' , ( ) = > {
isFeatureAvailable . mockImplementation ( ( ) = > false ) ;
process . env [ 'GITHUB_SERVER_URL' ] = 'https://www.test.com' ;
expect ( ( ) = > isCacheFeatureAvailable ( ) ) . toThrowError (
'Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.'
) ;
} ) ;
it ( 'isCacheFeatureAvailable for GHES has an interhal error' , ( ) = > {
isFeatureAvailable . mockImplementation ( ( ) = > false ) ;
process . env [ 'GITHUB_SERVER_URL' ] = '' ;
isCacheFeatureAvailable ( ) ;
expect ( warningSpy ) . toHaveBeenCalledWith (
'The runner was not able to contact the cache service. Caching will be skipped'
) ;
} ) ;
it ( 'isCacheFeatureAvailable for GHES is available' , ( ) = > {
isFeatureAvailable . mockImplementation ( ( ) = > true ) ;
expect ( isCacheFeatureAvailable ( ) ) . toStrictEqual ( true ) ;
} ) ;
2021-06-16 09:52:44 +03:00
afterEach ( ( ) = > {
2022-03-31 21:10:37 +02:00
process . env [ 'GITHUB_SERVER_URL' ] = '' ;
2021-06-16 09:52:44 +03:00
jest . resetAllMocks ( ) ;
jest . clearAllMocks ( ) ;
} ) ;
} ) ;