From 829376a61898ee2e4be42297fc41c4adcc10bf00 Mon Sep 17 00:00:00 2001 From: Henry Mercer Date: Fri, 12 Apr 2024 15:59:50 +0100 Subject: [PATCH] Allow feature flags to specify tool feature requirements --- lib/feature-flags.js | 22 ++++++++++++ lib/feature-flags.js.map | 2 +- lib/feature-flags.test.js | 49 ++++++++++++++++++++++---- lib/feature-flags.test.js.map | 2 +- src/feature-flags.test.ts | 66 +++++++++++++++++++++++++++++++---- src/feature-flags.ts | 51 ++++++++++++++++++++++++++- 6 files changed, 177 insertions(+), 15 deletions(-) diff --git a/lib/feature-flags.js b/lib/feature-flags.js index 6869ad11af..43a6d5a63c 100644 --- a/lib/feature-flags.js +++ b/lib/feature-flags.js @@ -29,6 +29,7 @@ const path = __importStar(require("path")); const semver = __importStar(require("semver")); const api_client_1 = require("./api-client"); const defaults = __importStar(require("./defaults.json")); +const tools_features_1 = require("./tools-features"); const util = __importStar(require("./util")); const DEFAULT_VERSION_FEATURE_FLAG_PREFIX = "default_codeql_version_"; const DEFAULT_VERSION_FEATURE_FLAG_SUFFIX = "_enabled"; @@ -48,6 +49,7 @@ exports.CODEQL_VERSION_FINE_GRAINED_PARALLELISM = "2.15.1"; */ var Feature; (function (Feature) { + Feature["AutobuildDirectTracingEnabled"] = "autobuild_direct_tracing_enabled"; Feature["CliSarifMerge"] = "cli_sarif_merge_enabled"; Feature["CppDependencyInstallation"] = "cpp_dependency_installation_enabled"; Feature["CppTrapCachingEnabled"] = "cpp_trap_caching_enabled"; @@ -57,6 +59,12 @@ var Feature; Feature["QaTelemetryEnabled"] = "qa_telemetry_enabled"; })(Feature || (exports.Feature = Feature = {})); exports.featureConfig = { + [Feature.AutobuildDirectTracingEnabled]: { + envVar: "CODEQL_ACTION_AUTOBUILD_BUILD_MODE_DIRECT_TRACING", + minimumVersion: undefined, + toolsFeature: tools_features_1.ToolsFeature.TraceCommandUseBuildMode, + defaultValue: false, + }, [Feature.CliSarifMerge]: { envVar: "CODEQL_ACTION_CLI_SARIF_MERGE", // This is guarded by a `supportsFeature` check rather than by a version check. @@ -124,6 +132,9 @@ class Features { if (!codeql && exports.featureConfig[feature].minimumVersion) { throw new Error(`Internal error: A minimum version is specified for feature ${feature}, but no instance of CodeQL was provided.`); } + if (!codeql && exports.featureConfig[feature].toolsFeature) { + throw new Error(`Internal error: A required tools feature is specified for feature ${feature}, but no instance of CodeQL was provided.`); + } const envVar = (process.env[exports.featureConfig[feature].envVar] || "").toLocaleLowerCase(); // Do not use this feature if user explicitly disables it via an environment variable. if (envVar === "false") { @@ -143,6 +154,17 @@ class Features { `version ${minimumVersion} for feature ${feature}.`); } } + const toolsFeature = exports.featureConfig[feature].toolsFeature; + if (codeql && toolsFeature) { + if (!(await codeql.supportsFeature(toolsFeature))) { + this.logger.debug(`Feature ${feature} is disabled because the CodeQL CLI version does not support the ` + + `required tools feature ${toolsFeature}.`); + return false; + } + else { + this.logger.debug(`CodeQL CLI version ${(await codeql.getVersion()).version} supports the required tools feature ${toolsFeature} for feature ${feature}.`); + } + } // Use this feature if user explicitly enables it via an environment variable. if (envVar === "true") { this.logger.debug(`Feature ${feature} is enabled via the environment variable ${exports.featureConfig[feature].envVar}.`); diff --git a/lib/feature-flags.js.map b/lib/feature-flags.js.map index 7690d5840d..b4258c5eef 100644 --- a/lib/feature-flags.js.map +++ b/lib/feature-flags.js.map @@ -1 +1 @@ -{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../src/feature-flags.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../src/feature-flags.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/feature-flags.test.js b/lib/feature-flags.test.js index 9d53ebbf89..ee18117fd8 100644 --- a/lib/feature-flags.test.js +++ b/lib/feature-flags.test.js @@ -34,6 +34,7 @@ const feature_flags_1 = require("./feature-flags"); const logging_1 = require("./logging"); const repository_1 = require("./repository"); const testing_utils_1 = require("./testing-utils"); +const tools_features_1 = require("./tools-features"); const util_1 = require("./util"); (0, testing_utils_1.setupTests)(ava_1.default); ava_1.default.beforeEach(() => { @@ -129,14 +130,17 @@ for (const feature of Object.keys(feature_flags_1.featureConfig)) { t.assert(!(await features.getValue(feature, includeCodeQlIfRequired(feature)))); }); }); - if (feature_flags_1.featureConfig[feature].minimumVersion !== undefined) { + if (feature_flags_1.featureConfig[feature].minimumVersion !== undefined || + feature_flags_1.featureConfig[feature].toolsFeature !== undefined) { (0, ava_1.default)(`Getting feature '${feature} should throw if no codeql is provided`, async (t) => { await (0, util_1.withTmpDir)(async (tmpDir) => { const features = setUpFeatureFlagTests(tmpDir); const expectedFeatureEnablement = initializeFeatures(true); (0, testing_utils_1.mockFeatureFlagApiEndpoint)(200, expectedFeatureEnablement); await t.throwsAsync(async () => features.getValue(feature), { - message: `Internal error: A minimum version is specified for feature ${feature}, but no instance of CodeQL was provided.`, + message: `Internal error: A ${feature_flags_1.featureConfig[feature].minimumVersion !== undefined + ? "minimum version" + : "required tools feature"} is specified for feature ${feature}, but no instance of CodeQL was provided.`, }); }); }); @@ -165,14 +169,42 @@ for (const feature of Object.keys(feature_flags_1.featureConfig)) { }); }); } + if (feature_flags_1.featureConfig[feature].toolsFeature !== undefined) { + (0, ava_1.default)(`Feature '${feature}' is disabled if the required tools feature is not enabled`, async (t) => { + await (0, util_1.withTmpDir)(async (tmpDir) => { + const features = setUpFeatureFlagTests(tmpDir); + const expectedFeatureEnablement = initializeFeatures(true); + (0, testing_utils_1.mockFeatureFlagApiEndpoint)(200, expectedFeatureEnablement); + // feature should be disabled when the required tools feature is not enabled + let codeql = (0, testing_utils_1.mockCodeQLVersion)("2.0.0"); + t.assert(!(await features.getValue(feature, codeql))); + // even setting the env var to true should not enable the feature if + // the required tools feature is not enabled + process.env[feature_flags_1.featureConfig[feature].envVar] = "true"; + t.assert(!(await features.getValue(feature, codeql))); + // feature should be enabled when the required tools feature is enabled + // and env var is not set + process.env[feature_flags_1.featureConfig[feature].envVar] = ""; + codeql = (0, testing_utils_1.mockCodeQLVersion)("2.0.0", { + [feature_flags_1.featureConfig[feature].toolsFeature]: true, + }); + t.assert(await features.getValue(feature, codeql)); + // set env var to false and check that the feature is now disabled + process.env[feature_flags_1.featureConfig[feature].envVar] = "false"; + t.assert(!(await features.getValue(feature, codeql))); + }); + }); + } } // If we ever run into a situation where we no longer have any features that -// specify a minimum version, then we will have a bunch of code no longer being -// tested. This is unlikely, and this test will fail if that happens. +// specify a minimum version or required tools feature, then we will have a +// bunch of code no longer being tested. This is unlikely, and this test will +// fail if that happens. // If we do end up in that situation, then we should consider adding a synthetic // feature with a minimum version that is only used for tests. (0, ava_1.default)("At least one feature has a minimum version specified", (t) => { t.assert(Object.values(feature_flags_1.featureConfig).some((f) => f.minimumVersion !== undefined), "At least one feature should have a minimum version specified"); + t.assert(Object.values(feature_flags_1.featureConfig).some((f) => f.toolsFeature !== undefined), "At least one feature should have a required tools feature specified"); // An even less likely scenario is that we no longer have any features. t.assert(Object.values(feature_flags_1.featureConfig).length > 0, "There should be at least one feature"); }); @@ -321,9 +353,14 @@ function setUpFeatureFlagTests(tmpDir, logger = (0, logging_1.getRunnerLogger)(t (0, testing_utils_1.setupActionsVars)(tmpDir, tmpDir); return new feature_flags_1.Features(gitHubVersion, testRepositoryNwo, tmpDir, logger); } +/** + * Returns an argument to pass to `getValue` that if required includes a CodeQL object meeting the + * minimum version or tool feature requirements specified by the feature. + */ function includeCodeQlIfRequired(feature) { - return feature_flags_1.featureConfig[feature].minimumVersion !== undefined - ? (0, testing_utils_1.mockCodeQLVersion)("9.9.9") + return feature_flags_1.featureConfig[feature].minimumVersion !== undefined || + feature_flags_1.featureConfig[feature].toolsFeature !== undefined + ? (0, testing_utils_1.mockCodeQLVersion)("9.9.9", Object.fromEntries(Object.values(tools_features_1.ToolsFeature).map((v) => [v, true]))) : undefined; } //# sourceMappingURL=feature-flags.test.js.map \ No newline at end of file diff --git a/lib/feature-flags.test.js.map b/lib/feature-flags.test.js.map index 817fc5e16a..fda33d1e58 100644 --- a/lib/feature-flags.test.js.map +++ b/lib/feature-flags.test.js.map @@ -1 +1 @@ -{"version":3,"file":"feature-flags.test.js","sourceRoot":"","sources":["../src/feature-flags.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,8CAA6C;AAE7C,0DAA4C;AAC5C,mDAMyB;AACzB,uCAA4C;AAC5C,6CAAkD;AAClD,mDAOyB;AAEzB,iCAA0E;AAE1E,IAAA,0BAAU,EAAC,aAAI,CAAC,CAAC;AAEjB,aAAI,CAAC,UAAU,CAAC,GAAG,EAAE;IACnB,IAAA,4BAAqB,EAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,IAAA,+BAAkB,EAAC,gBAAgB,CAAC,CAAC;AAE/D,IAAA,aAAI,EAAC,mDAAmD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACpE,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,MAAM,EACN,IAAA,kCAAkB,EAAC,cAAc,CAAC,EAClC,EAAE,IAAI,EAAE,oBAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAC/C,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAO,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,SAAS,CACT,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,EAClE,6BAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CACpC,CAAC;QACJ,CAAC;QAED,CAAC,CAAC,MAAM,CACN,cAAc,CAAC,IAAI,CACjB,CAAC,CAAgB,EAAE,EAAE,CACnB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,OAAO;gBACP,oEAAoE,CACzE,KAAK,SAAS,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,qDAAqD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACtE,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,qBAAqB,CACpC,MAAM,EACN,IAAA,kCAAkB,EAAC,cAAc,CAAC,CACnC,CAAC;QAEF,IAAA,0CAA0B,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAO,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,MAAM,CACN,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClE,6BAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CACtC,CAAC;QACJ,CAAC;QACD,+BAA+B,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,oEAAoE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACrF,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,qBAAqB,CACpC,MAAM,EACN,IAAA,kCAAkB,EAAC,cAAc,CAAC,CACnC,CAAC;QAEF,IAAA,0CAA0B,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEpC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAO,CAAC,EAAE,CAAC;YAC7C,CAAC,CAAC,MAAM,CACN,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClE,6BAAa,CAAC,OAAO,CAAC,CAAC,YAAY,CACtC,CAAC;QACJ,CAAC;QAED,+BAA+B,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,iEAAiE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClF,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAA,0CAA0B,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9C,MAAM,CAAC,CAAC,WAAW,CACjB,KAAK,IAAI,EAAE,CACT,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,uBAAuB,CAAC,WAAW,CAAC,CAAC,EACtE;YACE,OAAO,EACL,8FAA8F;SACjG,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,6BAAa,CAAC,EAAE,CAAC;IACjD,IAAA,aAAI,EAAC,iBAAiB,OAAO,sEAAsE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC/G,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE/C,yDAAyD;YACzD,MAAM,yBAAyB,GAAmC,EAAE,CAAC;YACrE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,6BAAa,CAAC,EAAE,CAAC;gBAC3C,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC;YAC/C,CAAC;YACD,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAE3D,6CAA6C;YAC7C,MAAM,uBAAuB,GAAmC,EAAE,CAAC;YACnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,6BAAa,CAAC,EAAE,CAAC;gBAC3C,uBAAuB,CAAC,CAAC,CAAC,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAClD,CAAY,EACZ,uBAAuB,CAAC,CAAC,CAAC,CAC3B,CAAC;YACJ,CAAC;YAED,4DAA4D;YAC5D,CAAC,CAAC,SAAS,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,iBAAiB,OAAO,+EAA+E,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACxH,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAE3D,uCAAuC;YACvC,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CACvB,OAAkB,EAClB,uBAAuB,CAAC,OAAO,CAAC,CACjC,CAAC,CACH,CAAC;YAEF,gEAAgE;YAChE,OAAO,CAAC,GAAG,CAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YACpD,CAAC,CAAC,MAAM,CACN,MAAM,QAAQ,CAAC,QAAQ,CACrB,OAAkB,EAClB,uBAAuB,CAAC,OAAO,CAAC,CACjC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,YAAY,OAAO,uFAAuF,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3H,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAE/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAE3D,sCAAsC;YACtC,CAAC,CAAC,MAAM,CACN,MAAM,QAAQ,CAAC,QAAQ,CACrB,OAAkB,EAClB,uBAAuB,CAAC,OAAO,CAAC,CACjC,CACF,CAAC;YAEF,kEAAkE;YAClE,OAAO,CAAC,GAAG,CAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;YACrD,CAAC,CAAC,MAAM,CACN,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CACvB,OAAkB,EAClB,uBAAuB,CAAC,OAAO,CAAC,CACjC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxD,IAAA,aAAI,EAAC,oBAAoB,OAAO,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACpF,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAE/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;gBAE3D,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAkB,CAAC,EAAE;oBACrE,OAAO,EAAE,8DAA8D,OAAO,2CAA2C;iBAC1H,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,6BAAa,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxD,IAAA,aAAI,EAAC,YAAY,OAAO,qDAAqD,6BAAa,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAChI,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;gBAE/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;gBAE3D,4DAA4D;gBAC5D,IAAI,MAAM,GAAG,IAAA,iCAAiB,EAAC,OAAO,CAAC,CAAC;gBACxC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEjE,oEAAoE;gBACpE,qCAAqC;gBACrC,OAAO,CAAC,GAAG,CAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;gBACpD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;gBAEjE,0DAA0D;gBAC1D,yBAAyB;gBACzB,OAAO,CAAC,GAAG,CAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChD,MAAM,GAAG,IAAA,iCAAiB,EACxB,6BAAa,CAAC,OAAO,CAAC,CAAC,cAAwB,CAChD,CAAC;gBACF,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;gBAE9D,kEAAkE;gBAClE,OAAO,CAAC,GAAG,CAAC,6BAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;gBACrD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,qEAAqE;AACrE,gFAAgF;AAChF,8DAA8D;AAC9D,IAAA,aAAI,EAAC,sDAAsD,EAAE,CAAC,CAAC,EAAE,EAAE;IACjE,CAAC,CAAC,MAAM,CACN,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,EACxE,8DAA8D,CAC/D,CAAC;IAEF,uEAAuE;IACvE,CAAC,CAAC,MAAM,CACN,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EACvC,sCAAsC,CACvC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,iCAAiC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClD,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uCAAuB,CAAC,CAAC;QAEtE,CAAC,CAAC,KAAK,CACL,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACjC,wEAAwE,CACzE,CAAC;QAEF,CAAC,CAAC,IAAI,CACJ,MAAM,QAAQ,CAAC,QAAQ,CACrB,uBAAO,CAAC,kBAAkB,EAC1B,uBAAuB,CAAC,uBAAO,CAAC,kBAAkB,CAAC,CACpD,EACD,0CAA0C,CAC3C,CAAC;QAEF,CAAC,CAAC,IAAI,CACJ,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACjC,mEAAmE,CACpE,CAAC;QAEF,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CACxC,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAC5C,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;QAEhE,6EAA6E;QAC7E,uBAAuB,CAAC,uBAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;QAC5D,EAAE,CAAC,aAAa,CACd,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CACxC,CAAC;QAEF,0EAA0E;QACzE,QAAgB,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnE,CAAC,CAAC,KAAK,CACL,MAAM,QAAQ,CAAC,QAAQ,CACrB,uBAAO,CAAC,kBAAkB,EAC1B,uBAAuB,CAAC,uBAAO,CAAC,kBAAkB,CAAC,CACpD,EACD,+DAA+D,CAChE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,sDAAsD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvE,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,uCAAuB,CAAC,CAAC;QACtE,CAAC,CAAC,IAAI,CACJ,MAAM,QAAQ,CAAC,QAAQ,CACrB,uBAAO,CAAC,kBAAkB,EAC1B,uBAAuB,CAAC,uBAAO,CAAC,kBAAkB,CAAC,CACpD,EACD,0CAA0C,CAC3C,CAAC;QAEF,CAAC,CAAC,IAAI,CACJ,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACjC,mEAAmE,CACpE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,OAAO,CAAC;QAEjD,CAAC,CAAC,KAAK,CACL,MAAM,QAAQ,CAAC,QAAQ,CACrB,uBAAO,CAAC,kBAAkB,EAC1B,uBAAuB,CAAC,uBAAO,CAAC,kBAAkB,CAAC,CACpD,EACD,uDAAuD,CACxD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACzD,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,IAAI,CACnB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,6EAA6E,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9F,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,KAAK,CAAC;QAC3E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,KAAK,CAAC;QAC3E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,KAAK,CAAC;QAC3E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,KAAK,CAAC;QAC3E,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,MAAM,CACrB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,uBAAuB;YAChC,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,0EAA0E,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC3F,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,MAAM,CACrB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,uBAAuB;YAChC,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,4FAA4F,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC7G,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,MAAM,CACrB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa;YAC/B,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,6FAA6F,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9G,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,+CAA+C;QAC/C,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,MAAM,CACrB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa;YAC/B,sBAAsB,EAAE,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,kEAAkE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACnF,MAAM,IAAA,iBAAU,EAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,MAAM,EACN,IAAA,kCAAkB,EAAC,cAAc,CAAC,CACnC,CAAC;QACF,MAAM,yBAAyB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3D,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,uCAAuC,CAAC,GAAG,IAAI,CAAC;QAC1E,yBAAyB,CAAC,6CAA6C,CAAC;YACtE,IAAI,CAAC;QACP,IAAA,0CAA0B,EAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAE3D,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAC3D,oBAAa,CAAC,MAAM,CACrB,CAAC;QACF,CAAC,CAAC,SAAS,CAAC,iBAAiB,EAAE;YAC7B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,uBAAuB;YAChC,sBAAsB,EAAE,IAAI;SAC7B,CAAC,CAAC;QAEH,CAAC,CAAC,MAAM,CACN,cAAc,CAAC,IAAI,CACjB,CAAC,CAAgB,EAAE,EAAE,CACnB,CAAC,CAAC,IAAI,KAAK,SAAS;YACpB,CAAC,CAAC,OAAO;gBACP,kHAAkH,CACvH,KAAK,SAAS,CAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,aAAI,EAAC,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACzD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAO,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,MAAM,CACN,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC5B,GAAG,OAAO,6BAA6B,CACxC,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,+BAA+B,CACtC,CAA4B,EAC5B,cAA+B;IAE/B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,6BAAa,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,MAAM,CACN,cAAc,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,OAAO;YACjB,CAAC,CAAC,OAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtC,CAAC,CAAC,OAAkB,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAC9D,KAAK,SAAS,CAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAqB;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,6BAAa,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;QACzD,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAC7B,OAAO,QAAQ,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAc,EACd,MAAM,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,EAC9B,gBAAgB,EAAE,IAAI,EAAE,oBAAa,CAAC,MAAM,EAAwB;IAEpE,IAAA,gCAAgB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,OAAO,IAAI,wBAAQ,CAAC,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,OAAO,6BAAa,CAAC,OAAO,CAAC,CAAC,cAAc,KAAK,SAAS;QACxD,CAAC,CAAC,IAAA,iCAAiB,EAAC,OAAO,CAAC;QAC5B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"} \ No newline at end of file +{"version":3,"file":"feature-flags.test.js","sourceRoot":"","sources":["../src/feature-flags.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/feature-flags.test.ts b/src/feature-flags.test.ts index 14ac6a3dab..1b911ab8e7 100644 --- a/src/feature-flags.test.ts +++ b/src/feature-flags.test.ts @@ -21,6 +21,7 @@ import { setupActionsVars, setupTests, } from "./testing-utils"; +import { ToolsFeature } from "./tools-features"; import * as util from "./util"; import { GitHubVariant, initializeEnvironment, withTmpDir } from "./util"; @@ -197,7 +198,10 @@ for (const feature of Object.keys(featureConfig)) { }); }); - if (featureConfig[feature].minimumVersion !== undefined) { + if ( + featureConfig[feature].minimumVersion !== undefined || + featureConfig[feature].toolsFeature !== undefined + ) { test(`Getting feature '${feature} should throw if no codeql is provided`, async (t) => { await withTmpDir(async (tmpDir) => { const features = setUpFeatureFlagTests(tmpDir); @@ -206,7 +210,11 @@ for (const feature of Object.keys(featureConfig)) { mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); await t.throwsAsync(async () => features.getValue(feature as Feature), { - message: `Internal error: A minimum version is specified for feature ${feature}, but no instance of CodeQL was provided.`, + message: `Internal error: A ${ + featureConfig[feature].minimumVersion !== undefined + ? "minimum version" + : "required tools feature" + } is specified for feature ${feature}, but no instance of CodeQL was provided.`, }); }); }); @@ -243,11 +251,44 @@ for (const feature of Object.keys(featureConfig)) { }); }); } + + if (featureConfig[feature].toolsFeature !== undefined) { + test(`Feature '${feature}' is disabled if the required tools feature is not enabled`, async (t) => { + await withTmpDir(async (tmpDir) => { + const features = setUpFeatureFlagTests(tmpDir); + + const expectedFeatureEnablement = initializeFeatures(true); + mockFeatureFlagApiEndpoint(200, expectedFeatureEnablement); + + // feature should be disabled when the required tools feature is not enabled + let codeql = mockCodeQLVersion("2.0.0"); + t.assert(!(await features.getValue(feature as Feature, codeql))); + + // even setting the env var to true should not enable the feature if + // the required tools feature is not enabled + process.env[featureConfig[feature].envVar] = "true"; + t.assert(!(await features.getValue(feature as Feature, codeql))); + + // feature should be enabled when the required tools feature is enabled + // and env var is not set + process.env[featureConfig[feature].envVar] = ""; + codeql = mockCodeQLVersion("2.0.0", { + [featureConfig[feature].toolsFeature]: true, + }); + t.assert(await features.getValue(feature as Feature, codeql)); + + // set env var to false and check that the feature is now disabled + process.env[featureConfig[feature].envVar] = "false"; + t.assert(!(await features.getValue(feature as Feature, codeql))); + }); + }); + } } // If we ever run into a situation where we no longer have any features that -// specify a minimum version, then we will have a bunch of code no longer being -// tested. This is unlikely, and this test will fail if that happens. +// specify a minimum version or required tools feature, then we will have a +// bunch of code no longer being tested. This is unlikely, and this test will +// fail if that happens. // If we do end up in that situation, then we should consider adding a synthetic // feature with a minimum version that is only used for tests. test("At least one feature has a minimum version specified", (t) => { @@ -256,6 +297,11 @@ test("At least one feature has a minimum version specified", (t) => { "At least one feature should have a minimum version specified", ); + t.assert( + Object.values(featureConfig).some((f) => f.toolsFeature !== undefined), + "At least one feature should have a required tools feature specified", + ); + // An even less likely scenario is that we no longer have any features. t.assert( Object.values(featureConfig).length > 0, @@ -512,8 +558,16 @@ function setUpFeatureFlagTests( return new Features(gitHubVersion, testRepositoryNwo, tmpDir, logger); } +/** + * Returns an argument to pass to `getValue` that if required includes a CodeQL object meeting the + * minimum version or tool feature requirements specified by the feature. + */ function includeCodeQlIfRequired(feature: string) { - return featureConfig[feature].minimumVersion !== undefined - ? mockCodeQLVersion("9.9.9") + return featureConfig[feature].minimumVersion !== undefined || + featureConfig[feature].toolsFeature !== undefined + ? mockCodeQLVersion( + "9.9.9", + Object.fromEntries(Object.values(ToolsFeature).map((v) => [v, true])), + ) : undefined; } diff --git a/src/feature-flags.ts b/src/feature-flags.ts index 38ef157468..79eb58badb 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -8,6 +8,7 @@ import type { CodeQL } from "./codeql"; import * as defaults from "./defaults.json"; import { Logger } from "./logging"; import { RepositoryNwo } from "./repository"; +import { ToolsFeature } from "./tools-features"; import * as util from "./util"; const DEFAULT_VERSION_FEATURE_FLAG_PREFIX = "default_codeql_version_"; @@ -44,6 +45,7 @@ export interface FeatureEnablement { * Each value of this enum should end with `_enabled`. */ export enum Feature { + AutobuildDirectTracingEnabled = "autobuild_direct_tracing_enabled", CliSarifMerge = "cli_sarif_merge_enabled", CppDependencyInstallation = "cpp_dependency_installation_enabled", CppTrapCachingEnabled = "cpp_trap_caching_enabled", @@ -55,8 +57,34 @@ export enum Feature { export const featureConfig: Record< Feature, - { envVar: string; minimumVersion: string | undefined; defaultValue: boolean } + { + /** + * Environment variable for explicitly enabling or disabling the feature. + * + * This overrides enablement status from the feature flags API. + */ + envVar: string; + /** + * Minimum version of the CLI, if applicable. + * + * Prefer using `ToolsFeature`s for future flags. + */ + minimumVersion: string | undefined; + /** Required tools feature, if applicable. */ + toolsFeature?: ToolsFeature; + /** + * Default value in environments where the feature flags API is not available, + * such as GitHub Enterprise Server. + */ + defaultValue: boolean; + } > = { + [Feature.AutobuildDirectTracingEnabled]: { + envVar: "CODEQL_ACTION_AUTOBUILD_BUILD_MODE_DIRECT_TRACING", + minimumVersion: undefined, + toolsFeature: ToolsFeature.TraceCommandUseBuildMode, + defaultValue: false, + }, [Feature.CliSarifMerge]: { envVar: "CODEQL_ACTION_CLI_SARIF_MERGE", // This is guarded by a `supportsFeature` check rather than by a version check. @@ -151,6 +179,11 @@ export class Features implements FeatureEnablement { `Internal error: A minimum version is specified for feature ${feature}, but no instance of CodeQL was provided.`, ); } + if (!codeql && featureConfig[feature].toolsFeature) { + throw new Error( + `Internal error: A required tools feature is specified for feature ${feature}, but no instance of CodeQL was provided.`, + ); + } const envVar = ( process.env[featureConfig[feature].envVar] || "" @@ -182,6 +215,22 @@ export class Features implements FeatureEnablement { ); } } + const toolsFeature = featureConfig[feature].toolsFeature; + if (codeql && toolsFeature) { + if (!(await codeql.supportsFeature(toolsFeature))) { + this.logger.debug( + `Feature ${feature} is disabled because the CodeQL CLI version does not support the ` + + `required tools feature ${toolsFeature}.`, + ); + return false; + } else { + this.logger.debug( + `CodeQL CLI version ${ + (await codeql.getVersion()).version + } supports the required tools feature ${toolsFeature} for feature ${feature}.`, + ); + } + } // Use this feature if user explicitly enables it via an environment variable. if (envVar === "true") {