Skip to content

Commit fe10d72

Browse files
committed
feat: add input validation to createLogger for non-boolean input
Signed-off-by: leocavalcante <leo@cavalcante.dev>
1 parent 04a1cf7 commit fe10d72

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

src/paths.mjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,11 @@ export function parseCliFlags(argv) {
391391
* logger.verbose("Source: /path/to/src") // Does nothing (verbose disabled)
392392
*/
393393
export function createLogger(verbose) {
394+
if (typeof verbose !== "boolean") {
395+
throw new TypeError(
396+
`createLogger: verbose must be a boolean, got ${verbose === null ? "null" : typeof verbose}`,
397+
)
398+
}
394399
return {
395400
log: (message) => console.log(message),
396401
verbose: (message) => {

tests/paths.test.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,6 +1153,51 @@ This is a test agent that handles various tasks.
11531153
expect(typeof logger.verbose).toBe("function")
11541154
})
11551155

1156+
it("should throw TypeError for null input", () => {
1157+
expect(() => createLogger(null as unknown as boolean)).toThrow(TypeError)
1158+
expect(() => createLogger(null as unknown as boolean)).toThrow(
1159+
"createLogger: verbose must be a boolean, got null",
1160+
)
1161+
})
1162+
1163+
it("should throw TypeError for undefined input", () => {
1164+
expect(() => createLogger(undefined as unknown as boolean)).toThrow(TypeError)
1165+
expect(() => createLogger(undefined as unknown as boolean)).toThrow(
1166+
"createLogger: verbose must be a boolean, got undefined",
1167+
)
1168+
})
1169+
1170+
it("should throw TypeError for string input", () => {
1171+
expect(() => createLogger("true" as unknown as boolean)).toThrow(TypeError)
1172+
expect(() => createLogger("true" as unknown as boolean)).toThrow(
1173+
"createLogger: verbose must be a boolean, got string",
1174+
)
1175+
expect(() => createLogger("false" as unknown as boolean)).toThrow(TypeError)
1176+
expect(() => createLogger("" as unknown as boolean)).toThrow(TypeError)
1177+
})
1178+
1179+
it("should throw TypeError for number input", () => {
1180+
expect(() => createLogger(1 as unknown as boolean)).toThrow(TypeError)
1181+
expect(() => createLogger(1 as unknown as boolean)).toThrow(
1182+
"createLogger: verbose must be a boolean, got number",
1183+
)
1184+
expect(() => createLogger(0 as unknown as boolean)).toThrow(TypeError)
1185+
})
1186+
1187+
it("should throw TypeError for object input", () => {
1188+
expect(() => createLogger({} as unknown as boolean)).toThrow(TypeError)
1189+
expect(() => createLogger({} as unknown as boolean)).toThrow(
1190+
"createLogger: verbose must be a boolean, got object",
1191+
)
1192+
})
1193+
1194+
it("should throw TypeError for array input", () => {
1195+
expect(() => createLogger([] as unknown as boolean)).toThrow(TypeError)
1196+
expect(() => createLogger([] as unknown as boolean)).toThrow(
1197+
"createLogger: verbose must be a boolean, got object",
1198+
)
1199+
})
1200+
11561201
it("should log messages with log() method", () => {
11571202
const originalLog = console.log
11581203
const messages: string[] = []

0 commit comments

Comments
 (0)