Skip to content

Commit ed39a1e

Browse files
committed
Add repository property for disabling overlay
1 parent 7ea93ee commit ed39a1e

File tree

3 files changed

+74
-2
lines changed

3 files changed

+74
-2
lines changed

lib/init-action.js

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/config-utils.test.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { createStubCodeQL } from "./codeql";
1414
import * as configUtils from "./config-utils";
1515
import * as errorMessages from "./error-messages";
1616
import { Feature } from "./feature-flags";
17+
import { RepositoryProperties } from "./feature-flags/properties";
1718
import * as gitUtils from "./git-utils";
1819
import { GitVersionInfo } from "./git-utils";
1920
import { KnownLanguage, Language } from "./languages";
@@ -983,6 +984,7 @@ interface OverlayDatabaseModeTestSetup {
983984
diskUsage: DiskUsage | undefined;
984985
memoryFlagValue: number;
985986
shouldSkipOverlayAnalysisDueToCachedStatus: boolean;
987+
repositoryProperties: RepositoryProperties;
986988
}
987989

988990
const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = {
@@ -1005,6 +1007,7 @@ const defaultOverlayDatabaseModeTestSetup: OverlayDatabaseModeTestSetup = {
10051007
},
10061008
memoryFlagValue: 6920,
10071009
shouldSkipOverlayAnalysisDueToCachedStatus: false,
1010+
repositoryProperties: {},
10081011
};
10091012

10101013
const getOverlayDatabaseModeMacro = test.macro({
@@ -1082,6 +1085,7 @@ const getOverlayDatabaseModeMacro = test.macro({
10821085
setup.buildMode,
10831086
undefined,
10841087
setup.codeScanningConfig,
1088+
setup.repositoryProperties,
10851089
setup.gitVersion,
10861090
logger,
10871091
);
@@ -1920,6 +1924,55 @@ test(
19201924
},
19211925
);
19221926

1927+
test(
1928+
getOverlayDatabaseModeMacro,
1929+
"No overlay when disabled via repository property",
1930+
{
1931+
languages: [KnownLanguage.javascript],
1932+
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
1933+
isPullRequest: true,
1934+
repositoryProperties: {
1935+
"github-codeql-disable-overlay": true,
1936+
},
1937+
},
1938+
{
1939+
overlayDatabaseMode: OverlayDatabaseMode.None,
1940+
useOverlayDatabaseCaching: false,
1941+
},
1942+
);
1943+
1944+
test(
1945+
getOverlayDatabaseModeMacro,
1946+
"Overlay not disabled when repository property is false",
1947+
{
1948+
languages: [KnownLanguage.javascript],
1949+
features: [Feature.OverlayAnalysis, Feature.OverlayAnalysisJavascript],
1950+
isPullRequest: true,
1951+
repositoryProperties: {
1952+
"github-codeql-disable-overlay": false,
1953+
},
1954+
},
1955+
{
1956+
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
1957+
useOverlayDatabaseCaching: true,
1958+
},
1959+
);
1960+
1961+
test(
1962+
getOverlayDatabaseModeMacro,
1963+
"Environment variable override takes precedence over repository property",
1964+
{
1965+
overlayDatabaseEnvVar: "overlay",
1966+
repositoryProperties: {
1967+
"github-codeql-disable-overlay": true,
1968+
},
1969+
},
1970+
{
1971+
overlayDatabaseMode: OverlayDatabaseMode.Overlay,
1972+
useOverlayDatabaseCaching: false,
1973+
},
1974+
);
1975+
19231976
// Exercise language-specific overlay analysis features code paths
19241977
for (const language in KnownLanguage) {
19251978
test(

src/config-utils.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,10 @@ import { DocUrl } from "./doc-url";
3535
import { EnvVar } from "./environment";
3636
import * as errorMessages from "./error-messages";
3737
import { Feature, FeatureEnablement } from "./feature-flags";
38-
import { RepositoryProperties } from "./feature-flags/properties";
38+
import {
39+
RepositoryProperties,
40+
RepositoryPropertyName,
41+
} from "./feature-flags/properties";
3942
import {
4043
getGeneratedFiles,
4144
getGitRoot,
@@ -750,6 +753,7 @@ export async function getOverlayDatabaseMode(
750753
buildMode: BuildMode | undefined,
751754
ramInput: string | undefined,
752755
codeScanningConfig: UserConfig,
756+
repositoryProperties: RepositoryProperties,
753757
gitVersion: GitVersionInfo | undefined,
754758
logger: Logger,
755759
): Promise<{
@@ -774,6 +778,14 @@ export async function getOverlayDatabaseMode(
774778
`Setting overlay database mode to ${overlayDatabaseMode} ` +
775779
"from the CODEQL_OVERLAY_DATABASE_MODE environment variable.",
776780
);
781+
} else if (
782+
repositoryProperties[RepositoryPropertyName.DISABLE_OVERLAY] === true
783+
) {
784+
logger.info(
785+
`Setting overlay database mode to ${OverlayDatabaseMode.None} ` +
786+
`because the ${RepositoryPropertyName.DISABLE_OVERLAY} repository property is set to true.`,
787+
);
788+
overlayDatabaseMode = OverlayDatabaseMode.None;
777789
} else if (
778790
await isOverlayAnalysisFeatureEnabled(
779791
features,
@@ -1067,6 +1079,7 @@ export async function initConfig(
10671079
config.buildMode,
10681080
inputs.ramInput,
10691081
config.computedConfig,
1082+
config.repositoryProperties,
10701083
gitVersion,
10711084
logger,
10721085
);

0 commit comments

Comments
 (0)