Add test for resolveQuerySuiteAlias
This commit is contained in:
parent
af32bc6d6f
commit
9b9286a835
6 changed files with 70 additions and 8 deletions
16
lib/analyze.js
generated
16
lib/analyze.js
generated
|
|
@ -36,10 +36,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.exportedForTesting = exports.CodeQLAnalysisError = void 0;
|
exports.exportedForTesting = exports.defaultSuites = exports.CodeQLAnalysisError = void 0;
|
||||||
exports.runExtraction = runExtraction;
|
exports.runExtraction = runExtraction;
|
||||||
exports.dbIsFinalized = dbIsFinalized;
|
exports.dbIsFinalized = dbIsFinalized;
|
||||||
exports.setupDiffInformedQueryRun = setupDiffInformedQueryRun;
|
exports.setupDiffInformedQueryRun = setupDiffInformedQueryRun;
|
||||||
|
exports.resolveQuerySuiteAlias = resolveQuerySuiteAlias;
|
||||||
exports.runQueries = runQueries;
|
exports.runQueries = runQueries;
|
||||||
exports.runFinalize = runFinalize;
|
exports.runFinalize = runFinalize;
|
||||||
exports.warnIfGoInstalledAfterInit = warnIfGoInstalledAfterInit;
|
exports.warnIfGoInstalledAfterInit = warnIfGoInstalledAfterInit;
|
||||||
|
|
@ -385,15 +386,24 @@ extensions:
|
||||||
(0, diff_informed_analysis_utils_1.writeDiffRangesJsonFile)(logger, ranges);
|
(0, diff_informed_analysis_utils_1.writeDiffRangesJsonFile)(logger, ranges);
|
||||||
return diffRangeDir;
|
return diffRangeDir;
|
||||||
}
|
}
|
||||||
const defaultSuites = new Set([
|
// A set of default query suite names that are understood by the CLI.
|
||||||
|
exports.defaultSuites = new Set([
|
||||||
"security-experimental",
|
"security-experimental",
|
||||||
"security-extended",
|
"security-extended",
|
||||||
"security-and-quality",
|
"security-and-quality",
|
||||||
"code-quality",
|
"code-quality",
|
||||||
"code-scanning",
|
"code-scanning",
|
||||||
]);
|
]);
|
||||||
|
/**
|
||||||
|
* If `query` is the name of a default query suite, it is resolved into the corresponding
|
||||||
|
* query suite name for the given `language`. Otherwise, `query` is returned as is.
|
||||||
|
*
|
||||||
|
* @param language The language for which to resolve the default query suite name.
|
||||||
|
* @param query The string that potentially contains the name of a default query suite.
|
||||||
|
* @returns Returns the resolved query suite name, or the unmodified input.
|
||||||
|
*/
|
||||||
function resolveQuerySuiteAlias(language, query) {
|
function resolveQuerySuiteAlias(language, query) {
|
||||||
if (defaultSuites.has(query)) {
|
if (exports.defaultSuites.has(query)) {
|
||||||
return `${language}-${query}.qls`;
|
return `${language}-${query}.qls`;
|
||||||
}
|
}
|
||||||
return query;
|
return query;
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
13
lib/analyze.test.js
generated
13
lib/analyze.test.js
generated
|
|
@ -313,4 +313,17 @@ function runGetDiffRanges(changes, patch) {
|
||||||
const diffRanges = runGetDiffRanges(2, ["@@ 30 +50,2 @@", "+1", "+2"]);
|
const diffRanges = runGetDiffRanges(2, ["@@ 30 +50,2 @@", "+1", "+2"]);
|
||||||
t.deepEqual(diffRanges, undefined);
|
t.deepEqual(diffRanges, undefined);
|
||||||
});
|
});
|
||||||
|
(0, ava_1.default)("resolveQuerySuiteAlias", (t) => {
|
||||||
|
// default query suite names should resolve to something language-specific ending in `.qls`.
|
||||||
|
for (const suite of analyze_1.defaultSuites) {
|
||||||
|
const resolved = (0, analyze_1.resolveQuerySuiteAlias)(languages_1.Language.go, suite);
|
||||||
|
t.assert(resolved.endsWith(".qls"), "Resolved default suite doesn't end in .qls");
|
||||||
|
t.assert(resolved.indexOf(languages_1.Language.go) >= 0, "Resolved default suite doesn't contain language name");
|
||||||
|
}
|
||||||
|
// other inputs should be returned unchanged
|
||||||
|
const names = ["foo", "bar", "codeql/go-queries@1.0"];
|
||||||
|
for (const name of names) {
|
||||||
|
t.deepEqual((0, analyze_1.resolveQuerySuiteAlias)(languages_1.Language.go, name), name);
|
||||||
|
}
|
||||||
|
});
|
||||||
//# sourceMappingURL=analyze.test.js.map
|
//# sourceMappingURL=analyze.test.js.map
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -5,7 +5,12 @@ import test from "ava";
|
||||||
import * as sinon from "sinon";
|
import * as sinon from "sinon";
|
||||||
|
|
||||||
import * as actionsUtil from "./actions-util";
|
import * as actionsUtil from "./actions-util";
|
||||||
import { exportedForTesting, runQueries } from "./analyze";
|
import {
|
||||||
|
exportedForTesting,
|
||||||
|
runQueries,
|
||||||
|
defaultSuites,
|
||||||
|
resolveQuerySuiteAlias,
|
||||||
|
} from "./analyze";
|
||||||
import { setCodeQL } from "./codeql";
|
import { setCodeQL } from "./codeql";
|
||||||
import { Feature } from "./feature-flags";
|
import { Feature } from "./feature-flags";
|
||||||
import { Language } from "./languages";
|
import { Language } from "./languages";
|
||||||
|
|
@ -320,3 +325,25 @@ test("getDiffRanges: malformed thunk header", async (t) => {
|
||||||
const diffRanges = runGetDiffRanges(2, ["@@ 30 +50,2 @@", "+1", "+2"]);
|
const diffRanges = runGetDiffRanges(2, ["@@ 30 +50,2 @@", "+1", "+2"]);
|
||||||
t.deepEqual(diffRanges, undefined);
|
t.deepEqual(diffRanges, undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("resolveQuerySuiteAlias", (t) => {
|
||||||
|
// default query suite names should resolve to something language-specific ending in `.qls`.
|
||||||
|
for (const suite of defaultSuites) {
|
||||||
|
const resolved = resolveQuerySuiteAlias(Language.go, suite);
|
||||||
|
t.assert(
|
||||||
|
resolved.endsWith(".qls"),
|
||||||
|
"Resolved default suite doesn't end in .qls",
|
||||||
|
);
|
||||||
|
t.assert(
|
||||||
|
resolved.indexOf(Language.go) >= 0,
|
||||||
|
"Resolved default suite doesn't contain language name",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// other inputs should be returned unchanged
|
||||||
|
const names = ["foo", "bar", "codeql/go-queries@1.0"];
|
||||||
|
|
||||||
|
for (const name of names) {
|
||||||
|
t.deepEqual(resolveQuerySuiteAlias(Language.go, name), name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -561,7 +561,8 @@ extensions:
|
||||||
return diffRangeDir;
|
return diffRangeDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultSuites: Set<string> = new Set([
|
// A set of default query suite names that are understood by the CLI.
|
||||||
|
export const defaultSuites: Set<string> = new Set([
|
||||||
"security-experimental",
|
"security-experimental",
|
||||||
"security-extended",
|
"security-extended",
|
||||||
"security-and-quality",
|
"security-and-quality",
|
||||||
|
|
@ -569,7 +570,18 @@ const defaultSuites: Set<string> = new Set([
|
||||||
"code-scanning",
|
"code-scanning",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
function resolveQuerySuiteAlias(language: Language, query: string): string {
|
/**
|
||||||
|
* If `query` is the name of a default query suite, it is resolved into the corresponding
|
||||||
|
* query suite name for the given `language`. Otherwise, `query` is returned as is.
|
||||||
|
*
|
||||||
|
* @param language The language for which to resolve the default query suite name.
|
||||||
|
* @param query The string that potentially contains the name of a default query suite.
|
||||||
|
* @returns Returns the resolved query suite name, or the unmodified input.
|
||||||
|
*/
|
||||||
|
export function resolveQuerySuiteAlias(
|
||||||
|
language: Language,
|
||||||
|
query: string,
|
||||||
|
): string {
|
||||||
if (defaultSuites.has(query)) {
|
if (defaultSuites.has(query)) {
|
||||||
return `${language}-${query}.qls`;
|
return `${language}-${query}.qls`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue