@@ -9,6 +9,7 @@ import * as actionsUtil from "./actions-util";
99import * as api from "./api-client" ;
1010import { Feature } from "./feature-flags" ;
1111import { getRunnerLogger } from "./logging" ;
12+ import { getCacheRestoreKeyPrefix } from "./overlay/caching" ;
1213import * as setupCodeql from "./setup-codeql" ;
1314import * as tar from "./tar" ;
1415import {
@@ -18,6 +19,7 @@ import {
1819 SAMPLE_DOTCOM_API_DETAILS ,
1920 checkExpectedLogMessages ,
2021 createFeatures ,
22+ createTestConfig ,
2123 getRecordingLogger ,
2224 makeMacro ,
2325 mockBundleDownloadApi ,
@@ -618,6 +620,18 @@ const overlayMatchEnabledVersions = {
618620 toolsFeatureFlagsValid : true ,
619621} ;
620622
623+ async function fakeOverlayBaseCacheKey (
624+ language : string ,
625+ cliVersion : string ,
626+ suffix : string ,
627+ ) : Promise < string > {
628+ const prefix = await getCacheRestoreKeyPrefix (
629+ createTestConfig ( { languages : [ language ] } ) ,
630+ cliVersion ,
631+ ) ;
632+ return `${ prefix } ${ suffix } ` ;
633+ }
634+
621635test . serial (
622636 "getCodeQLSource uses overlay-aware default version when requested for a PR" ,
623637 async ( t ) => {
@@ -629,7 +643,7 @@ test.serial(
629643 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
630644 const listStub = sinon . stub ( api , "listActionsCaches" ) . resolves ( [
631645 {
632- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.1- abc-1-1",
646+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.1" , " abc-1-1") ,
633647 } ,
634648 ] ) ;
635649 sinon
@@ -667,7 +681,7 @@ test.serial(
667681 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
668682 const listStub = sinon . stub ( api , "listActionsCaches" ) . resolves ( [
669683 {
670- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.1- abc-1-1",
684+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.1" , " abc-1-1") ,
671685 } ,
672686 ] ) ;
673687 sinon
@@ -699,16 +713,17 @@ test.serial(
699713 async ( t ) => {
700714 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
701715 sinon . stub ( api , "listActionsCaches" ) . resolves ( [
702- // Newer than any flag-enabled version: should be filtered out.
716+ // Flag-enabled versions present in the cache, listed in non-descending
717+ // order so the test exercises the sort.
703718 {
704- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript-2.21.0-abc-1-1" ,
719+ key : await fakeOverlayBaseCacheKey ( " javascript" , "2.20.0" , "ghi-3-1" ) ,
705720 } ,
706- // Flag-enabled versions present in the cache.
707721 {
708- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.1- def-2-1",
722+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.1" , " def-2-1") ,
709723 } ,
724+ // Newer than any flag-enabled version: should be filtered out.
710725 {
711- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript-2.20.0-ghi-3-1" ,
726+ key : await fakeOverlayBaseCacheKey ( " javascript" , "2.21.0" , "abc-1-1" ) ,
712727 } ,
713728 ] ) ;
714729
@@ -731,7 +746,7 @@ test.serial(
731746 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
732747 sinon . stub ( api , "listActionsCaches" ) . resolves ( [
733748 {
734- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.19.0- abc-1-1",
749+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.19.0" , " abc-1-1") ,
735750 } ,
736751 ] ) ;
737752
@@ -745,24 +760,31 @@ test.serial(
745760 } ,
746761) ;
747762
748- test . serial (
749- "getEnabledVersionsWithOverlayBaseDatabases does not list caches when rawLanguages is empty" ,
750- async ( t ) => {
763+ const noLanguagesMacro = makeMacro ( {
764+ exec : async (
765+ t : ExecutionContext < unknown > ,
766+ rawLanguages : string [ ] | undefined ,
767+ ) => {
751768 const listStub = sinon . stub ( api , "listActionsCaches" ) . resolves ( [ ] ) ;
752769
753770 const result = await setupCodeql . getEnabledVersionsWithOverlayBaseDatabases (
754771 overlayMatchEnabledVersions ,
755- undefined ,
772+ rawLanguages ,
756773 createFeatures ( [ Feature . OverlayAnalysisMatchCodeqlVersion ] ) ,
757774 getRunnerLogger ( true ) ,
758775 ) ;
759776 t . deepEqual ( result , [ ] ) ;
760777 t . assert (
761778 listStub . notCalled ,
762- "Should not list Actions caches without rawLanguages." ,
779+ "Should not list Actions caches without any rawLanguages." ,
763780 ) ;
764781 } ,
765- ) ;
782+ title : ( providedTitle = "" ) =>
783+ `getEnabledVersionsWithOverlayBaseDatabases does not list caches when rawLanguages is ${ providedTitle } ` ,
784+ } ) ;
785+
786+ noLanguagesMacro . serial ( "undefined" , undefined ) ;
787+ noLanguagesMacro . serial ( "an empty array" , [ ] ) ;
766788
767789test . serial (
768790 "getEnabledVersionsWithOverlayBaseDatabases returns empty when listing caches throws" ,
@@ -781,12 +803,12 @@ test.serial(
781803) ;
782804
783805test . serial (
784- "getEnabledVersionsWithOverlayBaseDatabases includes the highest version when it is cached " ,
806+ "getEnabledVersionsWithOverlayBaseDatabases returns versions present in the cache " ,
785807 async ( t ) => {
786808 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
787809 sinon . stub ( api , "listActionsCaches" ) . resolves ( [
788810 {
789- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.2- abc-1-1",
811+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.2" , " abc-1-1") ,
790812 } ,
791813 ] ) ;
792814
@@ -827,7 +849,7 @@ test.serial(
827849 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
828850 const listStub = sinon . stub ( api , "listActionsCaches" ) . resolves ( [
829851 {
830- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.1- abc-1-1",
852+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.1" , " abc-1-1") ,
831853 } ,
832854 ] ) ;
833855
@@ -855,7 +877,7 @@ test.serial(
855877 sinon . stub ( api , "getAutomationID" ) . resolves ( "test/" ) ;
856878 sinon . stub ( api , "listActionsCaches" ) . resolves ( [
857879 {
858- key : "codeql-overlay-base-database-1-aaaaaaaaaaaaaaaa- javascript- 2.20.1- abc-1-1",
880+ key : await fakeOverlayBaseCacheKey ( " javascript" , " 2.20.1" , " abc-1-1") ,
859881 } ,
860882 ] ) ;
861883
0 commit comments