Add test for resolveQuerySuiteAlias

This commit is contained in:
Michael B. Gale
2025-06-24 13:42:52 +01:00
parent af32bc6d6f
commit 9b9286a835
6 changed files with 70 additions and 8 deletions

View File

@@ -5,7 +5,12 @@ import test from "ava";
import * as sinon from "sinon";
import * as actionsUtil from "./actions-util";
import { exportedForTesting, runQueries } from "./analyze";
import {
exportedForTesting,
runQueries,
defaultSuites,
resolveQuerySuiteAlias,
} from "./analyze";
import { setCodeQL } from "./codeql";
import { Feature } from "./feature-flags";
import { Language } from "./languages";
@@ -320,3 +325,25 @@ test("getDiffRanges: malformed thunk header", async (t) => {
const diffRanges = runGetDiffRanges(2, ["@@ 30 +50,2 @@", "+1", "+2"]);
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);
}
});

View File

@@ -561,7 +561,8 @@ extensions:
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-extended",
"security-and-quality",
@@ -569,7 +570,18 @@ const defaultSuites: Set<string> = new Set([
"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)) {
return `${language}-${query}.qls`;
}