2022-04-01 00:41:27 +05:30
import * as cache from '@actions/cache' ;
import * as core from '@actions/core' ;
2020-12-17 18:03:54 +03:00
import {
validateVersion ,
2022-04-01 00:41:27 +05:30
validatePythonVersionFormatForPyPy ,
isCacheFeatureAvailable
2020-12-17 18:03:54 +03:00
} from '../src/utils' ;
2022-04-01 00:41:27 +05:30
jest . mock ( '@actions/cache' );
jest . mock ( '@actions/core' );
2020-12-17 18:03:54 +03:00
describe ( 'validatePythonVersionFormatForPyPy' , () => {
it . each ([
[ '3.6' , true ],
[ '3.7' , true ],
[ '3.6.x' , false ],
[ '3.7.x' , false ],
[ '3.x' , false ],
[ '3' , false ]
])( '%s -> %s' , ( input , expected ) => {
expect ( validatePythonVersionFormatForPyPy ( input )). toEqual ( expected );
});
});
describe ( 'validateVersion' , () => {
it . each ([
[ 'v7.3.3' , true ],
[ 'v7.3.x' , true ],
[ 'v7.x' , true ],
[ 'x' , true ],
[ 'v7.3.3-rc.1' , true ],
[ 'nightly' , true ],
[ 'v7.3.b' , false ],
[ '3.6' , true ],
[ '3.b' , false ],
[ '3' , true ]
])( '%s -> %s' , ( input , expected ) => {
expect ( validateVersion ( input )). toEqual ( expected );
});
});
2022-04-01 00:41:27 +05:30
describe ( 'isCacheFeatureAvailable' , () => {
it ( 'isCacheFeatureAvailable disabled on GHES' , () => {
jest . spyOn ( cache , 'isFeatureAvailable' ). mockImplementation (() => false );
2022-12-19 22:00:46 +09:00
const infoMock = jest . spyOn ( core , 'warning' );
const message =
'Caching is only supported on GHES version >= 3.5. If you are on a version >= 3.5, please check with your GHES admin if the Actions cache service is enabled or not.' ;
2022-04-01 00:41:27 +05:30
try {
process . env [ 'GITHUB_SERVER_URL' ] = 'http://example.com' ;
2022-12-19 22:00:46 +09:00
expect ( isCacheFeatureAvailable ()). toBeFalsy ();
expect ( infoMock ). toHaveBeenCalledWith ( message );
2022-04-01 00:41:27 +05:30
} finally {
delete process . env [ 'GITHUB_SERVER_URL' ];
}
});
it ( 'isCacheFeatureAvailable disabled on dotcom' , () => {
jest . spyOn ( cache , 'isFeatureAvailable' ). mockImplementation (() => false );
const infoMock = jest . spyOn ( core , 'warning' );
const message =
'The runner was not able to contact the cache service. Caching will be skipped' ;
try {
process . env [ 'GITHUB_SERVER_URL' ] = 'http://github.com' ;
expect ( isCacheFeatureAvailable ()). toBe ( false );
expect ( infoMock ). toHaveBeenCalledWith ( message );
} finally {
delete process . env [ 'GITHUB_SERVER_URL' ];
}
});
it ( 'isCacheFeatureAvailable is enabled' , () => {
jest . spyOn ( cache , 'isFeatureAvailable' ). mockImplementation (() => true );
expect ( isCacheFeatureAvailable ()). toBe ( true );
});
});