Files
vscode-codeql/extensions/ql-vscode/test/unit-tests/codeql-cli/cli-errors.test.ts
2024-01-19 12:07:42 +01:00

94 lines
2.9 KiB
TypeScript

import {
CliError,
ExitCodeError,
getCliError,
} from "../../../src/codeql-cli/cli-errors";
import { EOL } from "os";
describe("getCliError", () => {
it("returns an error with an unknown error", () => {
const error = new Error("foo");
expect(getCliError(error, undefined, "bar", ["baz"])).toEqual(
new CliError("foo", undefined, error, "bar", ["baz"]),
);
});
it("returns an error with an unknown error with stderr", () => {
const error = new Error("foo");
expect(getCliError(error, "Something failed", "bar", ["baz"])).toEqual(
new CliError("Something failed", "Something failed", error, "bar", [
"baz",
]),
);
});
it("returns an error with an unknown error with stderr", () => {
const error = new Error("foo");
expect(getCliError(error, "Something failed", "bar", ["baz"])).toEqual(
new CliError("Something failed", "Something failed", error, "bar", [
"baz",
]),
);
});
it("returns an error with an exit code error with unhandled exit code", () => {
const error = new ExitCodeError(99); // OOM
expect(getCliError(error, "OOM!", "bar", ["baz"])).toEqual(
new CliError("OOM!", "OOM!", error, "bar", ["baz"]),
);
});
it("returns an error with an exit code error with handled exit code without string", () => {
const error = new ExitCodeError(2);
expect(getCliError(error, "Something happened!", "bar", ["baz"])).toEqual(
new CliError("Something happened!", "Something happened!", error, "bar", [
"baz",
]),
);
});
it("returns an error with a user code error with identifying string", () => {
const error = new ExitCodeError(2);
const stderr = `Something happened!${EOL}A fatal error occurred: The query did not run successfully.${EOL}The correct columns were not present.`;
expect(getCliError(error, stderr, "bar", ["baz"])).toEqual(
new CliError(
`A fatal error occurred: The query did not run successfully.${EOL}The correct columns were not present.`,
stderr,
error,
"bar",
["baz"],
),
);
});
it("returns an error with a user code error with cancelled string", () => {
const error = new ExitCodeError(2);
const stderr = `Running query...${EOL}Something is happening...${EOL}Computation was cancelled: Cancelled by user`;
expect(getCliError(error, stderr, "bar", ["baz"])).toEqual(
new CliError(stderr, stderr, error, "bar", ["baz"]),
);
});
it("returns an error with a cancelled error with identifying string", () => {
const error = new ExitCodeError(98);
const stderr = `Running query...${EOL}Something is happening...${EOL}Computation was cancelled: Cancelled by user`;
expect(getCliError(error, stderr, "bar", ["baz"])).toEqual(
new CliError(
"Computation was cancelled: Cancelled by user",
stderr,
error,
"bar",
["baz"],
),
);
});
});