Skip to content

Commit 02bfe3b

Browse files
committed
Test loading of ML-powered queries
1 parent 81800c8 commit 02bfe3b

File tree

6 files changed

+126
-10
lines changed

6 files changed

+126
-10
lines changed

lib/config-utils.js

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

lib/config-utils.js.map

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

lib/config-utils.test.js

Lines changed: 42 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/config-utils.test.js.map

Lines changed: 1 addition & 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: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import * as sinon from "sinon";
99
import * as api from "./api-client";
1010
import { getCachedCodeQL, setCodeQL } from "./codeql";
1111
import * as configUtils from "./config-utils";
12-
import { createFeatureFlags } from "./feature-flags";
12+
import { createFeatureFlags, FeatureFlag } from "./feature-flags";
1313
import { Language } from "./languages";
1414
import { getRunnerLogger } from "./logging";
1515
import { setupTests } from "./testing-utils";
@@ -1654,5 +1654,80 @@ test(
16541654
/"xxx" is not a valid pack/
16551655
);
16561656

1657-
// errors
1658-
// input w invalid pack name
1657+
async function mlPoweredQueriesMacro(
1658+
t: ExecutionContext,
1659+
isMlPoweredQueriesFlagEnabled: boolean,
1660+
queriesInput: string | undefined,
1661+
shouldRunMlPoweredQueries: boolean
1662+
) {
1663+
return await util.withTmpDir(async (tmpDir) => {
1664+
const codeQL = setCodeQL({
1665+
async resolveQueries() {
1666+
return {
1667+
byLanguage: {
1668+
javascript: { "fake-query.ql": {} },
1669+
},
1670+
noDeclaredLanguage: {},
1671+
multipleDeclaredLanguages: {},
1672+
};
1673+
},
1674+
});
1675+
1676+
const { packs } = await configUtils.initConfig(
1677+
"javascript",
1678+
queriesInput,
1679+
undefined,
1680+
undefined,
1681+
undefined,
1682+
false,
1683+
{ owner: "github", repo: "example " },
1684+
tmpDir,
1685+
tmpDir,
1686+
codeQL,
1687+
tmpDir,
1688+
gitHubVersion,
1689+
sampleApiDetails,
1690+
createFeatureFlags(
1691+
isMlPoweredQueriesFlagEnabled
1692+
? [FeatureFlag.MlPoweredQueriesEnabled]
1693+
: []
1694+
),
1695+
getRunnerLogger(true)
1696+
);
1697+
if (shouldRunMlPoweredQueries) {
1698+
t.deepEqual(packs as unknown, {
1699+
[Language.javascript]: [
1700+
{
1701+
packName: "codeql/javascript-experimental-atm-queries",
1702+
version: clean("0.0.1"),
1703+
},
1704+
],
1705+
});
1706+
} else {
1707+
t.deepEqual(packs as unknown, {});
1708+
}
1709+
});
1710+
}
1711+
1712+
mlPoweredQueriesMacro.title = (
1713+
_providedTitle: string,
1714+
isMlPoweredQueriesFlagEnabled: boolean,
1715+
queriesInput: string | undefined,
1716+
shouldRunMlPoweredQueries: boolean
1717+
) => {
1718+
const queriesInputDescription = queriesInput
1719+
? `'queries: ${queriesInput}'`
1720+
: "default config";
1721+
1722+
return `ML-powered queries ${
1723+
shouldRunMlPoweredQueries ? "are" : "aren't"
1724+
} loaded for ${queriesInputDescription} when feature flag is ${
1725+
isMlPoweredQueriesFlagEnabled ? "enabled" : "disabled"
1726+
}`;
1727+
};
1728+
1729+
// macro, isMlPoweredQueriesFlagEnabled, queriesInput, shouldRunMlPoweredQueries
1730+
test(mlPoweredQueriesMacro, false, "security-extended", false);
1731+
test(mlPoweredQueriesMacro, true, undefined, false);
1732+
test(mlPoweredQueriesMacro, true, "security-extended", true);
1733+
test(mlPoweredQueriesMacro, true, "security-and-quality", true);

src/config-utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as semver from "semver";
77
import * as api from "./api-client";
88
import { CodeQL, ResolveQueriesOutput } from "./codeql";
99
import * as externalQueries from "./external-queries";
10-
import { FeatureFlags } from "./feature-flags";
10+
import { FeatureFlag, FeatureFlags } from "./feature-flags";
1111
import { Language, parseLanguage } from "./languages";
1212
import { Logger } from "./logging";
1313
import { RepositoryNwo } from "./repository";
@@ -279,7 +279,7 @@ async function addBuiltinSuiteQueries(
279279
if (
280280
languages.includes("javascript") &&
281281
(found === "security-extended" || found === "security-and-quality") &&
282-
(await featureFlags.getMlPoweredQueriesEnabled())
282+
(await featureFlags.getValue(FeatureFlag.MlPoweredQueriesEnabled))
283283
) {
284284
if (!packs.javascript) {
285285
packs.javascript = [];

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy