Support features key in version JSON output

This commit is contained in:
Michael B. Gale 2023-10-04 11:28:28 +01:00
parent 3dd4ad872b
commit 74b46628c3
No known key found for this signature in database
GPG key ID: FF5E2765BD00628F
30 changed files with 182 additions and 73 deletions

View file

@ -563,7 +563,9 @@ test("databaseInitCluster() without injected codescanning config", async (t) =>
await util.withTmpDir(async (tempDir) => {
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.10.5");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.10.5"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
@ -607,7 +609,12 @@ const injectedConfigMacro = test.macro({
const codeqlObject = await codeql.getCodeQLForTesting();
sinon
.stub(codeqlObject, "getVersion")
.resolves(featureConfig[Feature.CliConfigFileEnabled].minimumVersion);
.resolves(
codeql.makeVersionOutput(
featureConfig[Feature.CliConfigFileEnabled].minimumVersion ||
"1.0.0",
),
);
const thisStubConfig: Config = {
...stubConfig,
@ -829,7 +836,9 @@ test("does not pass a code scanning config or qlconfig file to the CLI when CLI
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
// stubbed version doesn't matter. It just needs to be valid semver.
sinon.stub(codeqlObject, "getVersion").resolves("0.0.0");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("0.0.0"));
await codeqlObject.databaseInitCluster(
{ ...stubConfig, tempDir },
@ -861,7 +870,9 @@ test("passes a code scanning config AND qlconfig to the CLI when CLI config pass
const codeqlObject = await codeql.getCodeQLForTesting();
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG);
.resolves(
codeql.makeVersionOutput(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG),
);
await codeqlObject.databaseInitCluster(
{ ...stubConfig, tempDir },
@ -891,7 +902,9 @@ test("passes a code scanning config BUT NOT a qlconfig to the CLI when CLI confi
await util.withTmpDir(async (tempDir) => {
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.12.2");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.12.2"));
await codeqlObject.databaseInitCluster(
{ ...stubConfig, tempDir },
@ -926,7 +939,9 @@ test("does not pass a qlconfig to the CLI when it is undefined", async (t: Execu
const codeqlObject = await codeql.getCodeQLForTesting();
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG);
.resolves(
codeql.makeVersionOutput(codeql.CODEQL_VERSION_INIT_WITH_QLCONFIG),
);
await codeqlObject.databaseInitCluster(
{ ...stubConfig, tempDir },
@ -948,7 +963,9 @@ test("does not pass a qlconfig to the CLI when it is undefined", async (t: Execu
test("databaseInterpretResults() sets --sarif-add-baseline-file-info for 2.11.3", async (t) => {
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.11.3");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.11.3"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
await codeqlObject.databaseInterpretResults(
@ -974,7 +991,9 @@ test("databaseInterpretResults() sets --sarif-add-baseline-file-info for 2.11.3"
test("databaseInterpretResults() does not set --sarif-add-baseline-file-info for 2.11.2", async (t) => {
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.11.2");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.11.2"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
await codeqlObject.databaseInterpretResults(
@ -1035,7 +1054,9 @@ for (const {
}`, async (t) => {
const runnerConstructorStub = stubToolRunnerConstructor();
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves(codeqlVersion);
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput(codeqlVersion));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
await codeqlObject.databaseInterpretResults(
@ -1078,7 +1099,9 @@ test("database finalize recognises JavaScript no code found error on CodeQL 2.11
2020-09-07T17:39:53.9251124Z [2020-09-07 17:39:53] [ERROR] Spawned process exited abnormally (code 255; tried to run: [/opt/hostedtoolcache/CodeQL/0.0.0-20200630/x64/codeql/javascript/tools/autobuild.sh])`,
);
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.11.6");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.11.6"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
@ -1095,7 +1118,9 @@ test("database finalize recognises JavaScript no code found error on CodeQL 2.11
test("database finalize overrides no code found error on CodeQL 2.11.6", async (t) => {
stubToolRunnerConstructor(32);
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.11.6");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.11.6"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
@ -1115,7 +1140,9 @@ test("database finalize does not override no code found error on CodeQL 2.12.4",
"https://gh.io/troubleshooting-code-scanning/no-source-code-seen-during-build.";
stubToolRunnerConstructor(32, cliMessage);
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.12.4");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.12.4"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");
@ -1140,7 +1167,9 @@ test("runTool summarizes several fatal errors", async (t) => {
`${heapError}\n${datasetImportError}.`;
stubToolRunnerConstructor(32, cliStderr);
const codeqlObject = await codeql.getCodeQLForTesting();
sinon.stub(codeqlObject, "getVersion").resolves("2.12.4");
sinon
.stub(codeqlObject, "getVersion")
.resolves(codeql.makeVersionOutput("2.12.4"));
// safeWhich throws because of the test CodeQL object.
sinon.stub(safeWhich, "safeWhich").resolves("");