From 0c27d0da4a07a35ccfc8d328af6356c05707d27c Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Tue, 7 Mar 2023 16:24:55 -0800 Subject: [PATCH] Add default values to feature flags This changes adds default values to feature flags. These default values will be used whenever the full set of feature flags are not available (for example on GHES or if the flag request fails). The goal is to enable cli config parsing on GHES without removing the feature flag on dotcom. --- lib/feature-flags.js | 15 ++++++++++----- lib/feature-flags.js.map | 2 +- lib/feature-flags.test.js | 12 ++++++------ lib/feature-flags.test.js.map | 2 +- src/feature-flags.test.ts | 15 ++++++++------- src/feature-flags.ts | 27 +++++++++++++++------------ 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/lib/feature-flags.js b/lib/feature-flags.js index c63a298c15..eebae07e45 100644 --- a/lib/feature-flags.js +++ b/lib/feature-flags.js @@ -43,18 +43,22 @@ exports.featureConfig = { [Feature.DisableKotlinAnalysisEnabled]: { envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS", minimumVersion: undefined, + defaultValue: false, }, [Feature.CliConfigFileEnabled]: { envVar: "CODEQL_PASS_CONFIG_TO_CLI", minimumVersion: "2.11.6", + defaultValue: true, }, [Feature.MlPoweredQueriesEnabled]: { envVar: "CODEQL_ML_POWERED_QUERIES", minimumVersion: "2.7.5", + defaultValue: false, }, [Feature.UploadFailedSarifEnabled]: { envVar: "CODEQL_ACTION_UPLOAD_FAILED_SARIF", minimumVersion: "2.11.3", + defaultValue: false, }, }; exports.FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json"; @@ -103,7 +107,8 @@ class Features { return true; } // Ask the GitHub API if the feature is enabled. - return await this.gitHubFeatureFlags.getValue(feature); + return ((await this.gitHubFeatureFlags.getValue(feature)) ?? + exports.featureConfig[feature].defaultValue); } } exports.Features = Features; @@ -179,13 +184,13 @@ class GitHubFeatureFlags { async getValue(feature) { const response = await this.getAllFeatures(); if (response === undefined) { - this.logger.debug(`No feature flags API response for ${feature}, considering it disabled.`); - return false; + this.logger.debug(`No feature flags API response for ${feature}.`); + return undefined; } const featureEnablement = response[feature]; if (featureEnablement === undefined) { - this.logger.debug(`Feature '${feature}' undefined in API response, considering it disabled.`); - return false; + this.logger.debug(`Feature '${feature}' undefined in API response.`); + return undefined; } return !!featureEnablement; } diff --git a/lib/feature-flags.js.map b/lib/feature-flags.js.map index 5c259862d7..836fa786cf 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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAE7B,+CAAiC;AAEjC,6CAA4C;AAE5C,0DAA4C;AAG5C,6CAA+B;AAE/B,MAAM,mCAAmC,GAAG,yBAAyB,CAAC;AACtE,MAAM,mCAAmC,GAAG,UAAU,CAAC;AAsBvD,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,2DAAgD,CAAA;IAChD,2EAAgE,CAAA;IAChE,iEAAsD,CAAA;IACtD,mEAAwD,CAAA;AAC1D,CAAC,EALW,OAAO,GAAP,eAAO,KAAP,eAAO,QAKlB;AAEY,QAAA,aAAa,GAGtB;IACF,CAAC,OAAO,CAAC,4BAA4B,CAAC,EAAE;QACtC,MAAM,EAAE,gCAAgC;QACxC,cAAc,EAAE,SAAS;KAC1B;IACD,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;QAC9B,MAAM,EAAE,2BAA2B;QACnC,cAAc,EAAE,QAAQ;KACzB;IACD,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE;QACjC,MAAM,EAAE,2BAA2B;QACnC,cAAc,EAAE,OAAO;KACxB;IACD,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE;QAClC,MAAM,EAAE,mCAAmC;QAC3C,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC;AAUW,QAAA,uBAAuB,GAAG,2BAA2B,CAAC;AAEnE;;;;GAIG;AACH,MAAa,QAAQ;IAGnB,YACE,aAAiC,EACjC,aAA4B,EAC5B,OAAe,EACf,MAAc;QAEd,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAC9C,aAAa,EACb,aAAa,EACb,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,+BAAuB,CAAC,EAC3C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAA2B;QAE3B,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAgB,EAAE,MAAe;QAC9C,IAAI,CAAC,MAAM,IAAI,qBAAa,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;YACpD,MAAM,IAAI,KAAK,CACb,8DAA8D,OAAO,2CAA2C,CACjH,CAAC;SACH;QAED,MAAM,MAAM,GAAG,CACb,OAAO,CAAC,GAAG,CAAC,qBAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CACjD,CAAC,iBAAiB,EAAE,CAAC;QAEtB,sFAAsF;QACtF,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,OAAO,KAAK,CAAC;SACd;QAED,yEAAyE;QACzE,MAAM,cAAc,GAAG,qBAAa,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;QAC7D,IAAI,MAAM,IAAI,cAAc,EAAE;YAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE;gBAC5D,OAAO,KAAK,CAAC;aACd;SACF;QAED,8EAA8E;QAC9E,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,gDAAgD;QAChD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;CACF;AAlED,4BAkEC;AAED,MAAM,kBAAkB;IAOtB,YACmB,aAAiC,EACjC,aAA4B,EAC5B,gBAAwB,EACxB,MAAc;QAHd,kBAAa,GAAb,aAAa,CAAoB;QACjC,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC,CAAC,2BAA2B;IACzE,CAAC;IAEO,4BAA4B,CAAC,CAAS;QAC5C,IACE,CAAC,CAAC,CAAC,UAAU,CAAC,mCAAmC,CAAC;YAClD,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAChD;YACA,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,OAAO,GAAG,CAAC;aACd,SAAS,CACR,mCAAmC,CAAC,MAAM,EAC1C,CAAC,CAAC,MAAM,GAAG,mCAAmC,CAAC,MAAM,CACtD;aACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,yBAAyB,CAAC,iDAAiD,CAC5E,CAAC;YACF,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAA2B;QAE3B,IAAI,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzC,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACxE,OAAO;gBACL,UAAU,EAAE,uBAAuB,CAAC,OAAO;gBAC3C,sBAAsB,EAAE,IAAI,CAAC,6BAA6B;oBACxD,CAAC,CAAC,uBAAuB,CAAC,sBAAsB;oBAChD,CAAC,CAAC,SAAS;gBACb,OAAO;aACR,CAAC;SACH;QACD,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,aAAa;YAC/B,OAAO;SACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,0BAA0B;QAI9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE7C,MAAM,6BAA6B,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC3D,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CACtB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAC7D;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAW,CAAC,CAAC;QAE3B,IAAI,6BAA6B,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9C,6FAA6F;YAC7F,6FAA6F;YAC7F,2FAA2F;YAC3F,2DAA2D;YAC3D,EAAE;YACF,4FAA4F;YAC5F,2FAA2F;YAC3F,4FAA4F;YAC5F,uFAAuF;YACvF,8FAA8F;YAC9F,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,sFAAsF;gBACpF,oCAAoC,QAAQ,CAAC,UAAU,GAAG,CAC7D,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,QAAQ,CAAC,UAAU;gBAC5B,sBAAsB,EAAE,IAAI,CAAC,6BAA6B;oBACxD,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,SAAS;aACd,CAAC;SACH;QAED,MAAM,aAAa,GAAG,6BAA6B,CAAC,MAAM,CACxD,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAC7B,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,EAC3D,6BAA6B,CAAC,CAAC,CAAC,CACjC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kCAAkC,aAAa,sBAAsB,CACtE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qCAAqC,OAAO,4BAA4B,CACzE,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QACD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,iBAAiB,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,YAAY,OAAO,uDAAuD,CAC3E,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CAAC,CAAC,iBAAiB,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,0CAA0C;QAC1C,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;YACxC,OAAO,IAAI,CAAC,iBAAiB,CAAC;SAC/B;QAED,wEAAwE;QACxE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,SAAS,KAAK,SAAS,EAAE;YAC3B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,OAAO,SAAS,CAAC;SAClB;QAED,wCAAwC;QACxC,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,WAAW,GAAG,EAAE,CAAC;SAClB;QAED,+BAA+B;QAC/B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAErC,+DAA+D;QAC/D,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAExC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,cAAc;QAG1B,IAAI;YACF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;gBACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,8BAA8B,IAAI,CAAC,gBAAgB,EAAE,CACtD,CAAC;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;aACnE;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,2CAA2C,IAAI,CAAC,gBAAgB,KAAK,CAAC,mCAAmC,CAC1G,CAAC;SACH;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,KAAoC;QAEpC,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACvE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SAChE;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,2CAA2C,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAC1E,CAAC;SACH;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,iDAAiD;QACjD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,oEAAoE,CACrE,CAAC;YACF,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;YAC3C,OAAO,EAAE,CAAC;SACX;QACD,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAY,GAAE,CAAC,OAAO,CAC3C,8DAA8D,EAC9D;gBACE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;gBAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;aAC9B,CACF,CAAC;YACF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,wFAAwF;gBACtF,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CACnC,CAAC;YACF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;YAC1C,OAAO,WAAW,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,gGAAgG;oBAC9F,oEAAoE;oBACpE,qFAAqF;oBACrF,kFAAkF,CAAC,EAAE,CACxF,CAAC;gBACF,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;gBAC3C,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,kFAAkF;gBAClF,8EAA8E;gBAC9E,2FAA2F;gBAC3F,eAAe;gBACf,MAAM,IAAI,KAAK,CACb,sEAAsE,CAAC,EAAE,CAC1E,CAAC;aACH;SACF;IACH,CAAC;CACF"} \ 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 eead7df912..9d3f411d8f 100644 --- a/lib/feature-flags.test.js +++ b/lib/feature-flags.test.js @@ -53,7 +53,7 @@ for (const variant of ALL_FEATURES_DISABLED_VARIANTS) { const loggedMessages = []; const featureEnablement = setUpFeatureFlagTests(tmpDir, (0, testing_utils_1.getRecordingLogger)(loggedMessages), variant.gitHubVersion); for (const feature of Object.values(feature_flags_1.Feature)) { - t.false(await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature))); + t.deepEqual(await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature)), feature_flags_1.featureConfig[feature].defaultValue); } t.assert(loggedMessages.find((v) => v.type === "debug" && v.message === @@ -61,24 +61,24 @@ for (const variant of ALL_FEATURES_DISABLED_VARIANTS) { }); }); } -(0, ava_1.default)("API response missing", async (t) => { +(0, ava_1.default)("API response missing and features use default value", async (t) => { await (0, util_1.withTmpDir)(async (tmpDir) => { const loggedMessages = []; const featureEnablement = setUpFeatureFlagTests(tmpDir, (0, testing_utils_1.getRecordingLogger)(loggedMessages)); (0, testing_utils_1.mockFeatureFlagApiEndpoint)(403, {}); for (const feature of Object.values(feature_flags_1.Feature)) { - t.assert((await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature))) === false); + t.assert((await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature))) === feature_flags_1.featureConfig[feature].defaultValue); } assertAllFeaturesUndefinedInApi(t, loggedMessages); }); }); -(0, ava_1.default)("Features are disabled if they're not returned in API response", async (t) => { +(0, ava_1.default)("Features use default value if they're not returned in API response", async (t) => { await (0, util_1.withTmpDir)(async (tmpDir) => { const loggedMessages = []; const featureEnablement = setUpFeatureFlagTests(tmpDir, (0, testing_utils_1.getRecordingLogger)(loggedMessages)); (0, testing_utils_1.mockFeatureFlagApiEndpoint)(200, {}); for (const feature of Object.values(feature_flags_1.Feature)) { - t.assert((await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature))) === false); + t.assert((await featureEnablement.getValue(feature, includeCodeQlIfRequired(feature))) === feature_flags_1.featureConfig[feature].defaultValue); } assertAllFeaturesUndefinedInApi(t, loggedMessages); }); @@ -283,7 +283,7 @@ function assertAllFeaturesUndefinedInApi(t, loggedMessages) { for (const feature of Object.keys(feature_flags_1.featureConfig)) { t.assert(loggedMessages.find((v) => v.type === "debug" && v.message.includes(feature) && - v.message.includes("considering it disabled")) !== undefined); + v.message.includes("undefined in API response")) !== undefined); } } function initializeFeatures(initialValue) { diff --git a/lib/feature-flags.test.js.map b/lib/feature-flags.test.js.map index c7c2abd2bf..5847edd6b6 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":"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"} \ 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 26a0a0c118..f95fba32c4 100644 --- a/src/feature-flags.test.ts +++ b/src/feature-flags.test.ts @@ -54,11 +54,12 @@ for (const variant of ALL_FEATURES_DISABLED_VARIANTS) { ); for (const feature of Object.values(Feature)) { - t.false( + t.deepEqual( await featureEnablement.getValue( feature, includeCodeQlIfRequired(feature) - ) + ), + featureConfig[feature].defaultValue ); } @@ -74,7 +75,7 @@ for (const variant of ALL_FEATURES_DISABLED_VARIANTS) { }); } -test("API response missing", async (t) => { +test("API response missing and features use default value", async (t) => { await withTmpDir(async (tmpDir) => { const loggedMessages: LoggedMessage[] = []; const featureEnablement = setUpFeatureFlagTests( @@ -89,14 +90,14 @@ test("API response missing", async (t) => { (await featureEnablement.getValue( feature, includeCodeQlIfRequired(feature) - )) === false + )) === featureConfig[feature].defaultValue ); } assertAllFeaturesUndefinedInApi(t, loggedMessages); }); }); -test("Features are disabled if they're not returned in API response", async (t) => { +test("Features use default value if they're not returned in API response", async (t) => { await withTmpDir(async (tmpDir) => { const loggedMessages: LoggedMessage[] = []; const featureEnablement = setUpFeatureFlagTests( @@ -111,7 +112,7 @@ test("Features are disabled if they're not returned in API response", async (t) (await featureEnablement.getValue( feature, includeCodeQlIfRequired(feature) - )) === false + )) === featureConfig[feature].defaultValue ); } @@ -471,7 +472,7 @@ function assertAllFeaturesUndefinedInApi( (v) => v.type === "debug" && (v.message as string).includes(feature) && - (v.message as string).includes("considering it disabled") + (v.message as string).includes("undefined in API response") ) !== undefined ); } diff --git a/src/feature-flags.ts b/src/feature-flags.ts index 3249684f3f..84e13c3a21 100644 --- a/src/feature-flags.ts +++ b/src/feature-flags.ts @@ -42,23 +42,27 @@ export enum Feature { export const featureConfig: Record< Feature, - { envVar: string; minimumVersion: string | undefined } + { envVar: string; minimumVersion: string | undefined; defaultValue: boolean } > = { [Feature.DisableKotlinAnalysisEnabled]: { envVar: "CODEQL_DISABLE_KOTLIN_ANALYSIS", minimumVersion: undefined, + defaultValue: false, }, [Feature.CliConfigFileEnabled]: { envVar: "CODEQL_PASS_CONFIG_TO_CLI", minimumVersion: "2.11.6", + defaultValue: true, }, [Feature.MlPoweredQueriesEnabled]: { envVar: "CODEQL_ML_POWERED_QUERIES", minimumVersion: "2.7.5", + defaultValue: false, }, [Feature.UploadFailedSarifEnabled]: { envVar: "CODEQL_ACTION_UPLOAD_FAILED_SARIF", minimumVersion: "2.11.3", + defaultValue: false, }, }; @@ -141,11 +145,14 @@ export class Features implements FeatureEnablement { return true; } // Ask the GitHub API if the feature is enabled. - return await this.gitHubFeatureFlags.getValue(feature); + return ( + (await this.gitHubFeatureFlags.getValue(feature)) ?? + featureConfig[feature].defaultValue + ); } } -class GitHubFeatureFlags implements FeatureEnablement { +class GitHubFeatureFlags { private cachedApiResponse: GitHubFeatureFlagsApiResponse | undefined; // We cache whether the feature flags were accessed or not in order to accurately report whether flags were @@ -251,20 +258,16 @@ class GitHubFeatureFlags implements FeatureEnablement { return { version: maxCliVersion, toolsFeatureFlagsValid: true }; } - async getValue(feature: Feature): Promise { + async getValue(feature: Feature): Promise { const response = await this.getAllFeatures(); if (response === undefined) { - this.logger.debug( - `No feature flags API response for ${feature}, considering it disabled.` - ); - return false; + this.logger.debug(`No feature flags API response for ${feature}.`); + return undefined; } const featureEnablement = response[feature]; if (featureEnablement === undefined) { - this.logger.debug( - `Feature '${feature}' undefined in API response, considering it disabled.` - ); - return false; + this.logger.debug(`Feature '${feature}' undefined in API response.`); + return undefined; } return !!featureEnablement; }