UNPKG

zod-opts

Version:

node.js CLI option parser / validator using Zod

56 lines 2.36 kB
"use strict"; 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