zod-opts
Version:
node.js CLI option parser / validator using Zod
56 lines • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createInternalPositionalArgument = exports.createInternalOption = exports.expectProcessExit = exports.expectExit0 = exports.mockExit = exports.mockConsole = void 0;
const globals_1 = require("@jest/globals");
function mockConsole(type = "error"
// eslint-disable-next-line @typescript-eslint/no-explicit-any
) {
return globals_1.jest.spyOn(console, type).mockImplementation(() => { });
}
exports.mockConsole = mockConsole;
function mockExit() {
return globals_1.jest.spyOn(process, "exit").mockImplementation((code) => {
throw new Error(`process.exit: ${code}`);
});
}
exports.mockExit = mockExit;
function expectExit0(expectedMessage, f) {
const mockedConsoleLog = mockConsole("log");
const mockedExit = mockExit();
(0, globals_1.expect)(f).toThrow(/process.exit/);
const logText = mockedConsoleLog.mock.calls.flat().join("\n");
(0, globals_1.expect)(logText).toEqual(expectedMessage);
(0, globals_1.expect)(mockedExit).toHaveBeenCalledWith(0);
mockedConsoleLog.mockRestore();
mockedExit.mockRestore();
}
exports.expectExit0 = expectExit0;
function expectProcessExit(expectedMessage, exitCode, f) {
const mockedConsoleError = mockConsole();
const mockedExit = mockExit();
(0, globals_1.expect)(f).toThrow(/process.exit/);
const logText = mockedConsoleError.mock.calls.flat().join("");
(0, globals_1.expect)(logText).toContain(expectedMessage);
(0, globals_1.expect)(mockedExit).toHaveBeenCalledWith(exitCode);
mockedConsoleError.mockRestore();
mockedExit.mockRestore();
}
exports.expectProcessExit = expectProcessExit;
function createInternalOption({ type = "string", name = "opt1", alias = "a", required = true, description, defaultValue, enumValues, isArray = false, }) {
return {
type,
name,
alias,
required,
description,
defaultValue,
enumValues,
isArray,
};
}
exports.createInternalOption = createInternalOption;
function createInternalPositionalArgument({ type = "string", name = "pos1", required = true, isArray = false, enumValues, }) {
return { type, name, required, isArray, enumValues };
}
exports.createInternalPositionalArgument = createInternalPositionalArgument;
//# sourceMappingURL=test_util.js.map