Skip to content

Commit e6b78fd

Browse files
committed
test: add edge case tests for createLogger verbose output formatting
Signed-off-by: leocavalcante <leo@cavalcante.dev>
1 parent cf13436 commit e6b78fd

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

tests/paths.test.ts

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,5 +1118,109 @@ This is a test agent that handles various tasks.
11181118
expect(messages).toContain("normal message")
11191119
expect(messages).toContain("[VERBOSE] verbose message")
11201120
})
1121+
1122+
it("should log empty strings with log() method", () => {
1123+
const originalLog = console.log
1124+
const messages: string[] = []
1125+
console.log = (msg: string) => messages.push(msg)
1126+
1127+
const logger = createLogger(false)
1128+
logger.log("")
1129+
1130+
console.log = originalLog
1131+
expect(messages).toHaveLength(1)
1132+
expect(messages[0]).toBe("")
1133+
})
1134+
1135+
it("should log empty strings with verbose() method when verbose is true", () => {
1136+
const originalLog = console.log
1137+
const messages: string[] = []
1138+
console.log = (msg: string) => messages.push(msg)
1139+
1140+
const logger = createLogger(true)
1141+
logger.verbose("")
1142+
1143+
console.log = originalLog
1144+
expect(messages).toHaveLength(1)
1145+
expect(messages[0]).toBe("[VERBOSE] ")
1146+
})
1147+
1148+
it("should handle messages with newline characters", () => {
1149+
const originalLog = console.log
1150+
const messages: string[] = []
1151+
console.log = (msg: string) => messages.push(msg)
1152+
1153+
const logger = createLogger(true)
1154+
logger.log("line1\nline2\nline3")
1155+
logger.verbose("verbose\nwith\nnewlines")
1156+
1157+
console.log = originalLog
1158+
expect(messages[0]).toBe("line1\nline2\nline3")
1159+
expect(messages[1]).toBe("[VERBOSE] verbose\nwith\nnewlines")
1160+
})
1161+
1162+
it("should handle messages with tab characters", () => {
1163+
const originalLog = console.log
1164+
const messages: string[] = []
1165+
console.log = (msg: string) => messages.push(msg)
1166+
1167+
const logger = createLogger(true)
1168+
logger.log("column1\tcolumn2\tcolumn3")
1169+
logger.verbose("verbose\twith\ttabs")
1170+
1171+
console.log = originalLog
1172+
expect(messages[0]).toBe("column1\tcolumn2\tcolumn3")
1173+
expect(messages[1]).toBe("[VERBOSE] verbose\twith\ttabs")
1174+
})
1175+
1176+
it("should handle messages with mixed special characters", () => {
1177+
const originalLog = console.log
1178+
const messages: string[] = []
1179+
console.log = (msg: string) => messages.push(msg)
1180+
1181+
const logger = createLogger(true)
1182+
const specialMessage = "header\n\tindented\n\t\tdouble-indented\nback"
1183+
logger.log(specialMessage)
1184+
logger.verbose(specialMessage)
1185+
1186+
console.log = originalLog
1187+
expect(messages[0]).toBe(specialMessage)
1188+
expect(messages[1]).toBe(`[VERBOSE] ${specialMessage}`)
1189+
})
1190+
1191+
it("should use exact '[VERBOSE] ' prefix format with single space after bracket", () => {
1192+
const originalLog = console.log
1193+
const messages: string[] = []
1194+
console.log = (msg: string) => messages.push(msg)
1195+
1196+
const logger = createLogger(true)
1197+
logger.verbose("test")
1198+
1199+
console.log = originalLog
1200+
// Verify exact prefix format: [VERBOSE] followed by exactly one space
1201+
expect(messages[0]).toMatch(/^\[VERBOSE\] /)
1202+
expect(messages[0]).toBe("[VERBOSE] test")
1203+
// Ensure no extra spaces or different formatting
1204+
expect(messages[0]).not.toMatch(/^\[VERBOSE\] {2}/) // Not two spaces
1205+
expect(messages[0]).not.toMatch(/^\[verbose\]/) // Not lowercase
1206+
expect(messages[0]).not.toMatch(/^VERBOSE:/) // Not colon format
1207+
})
1208+
1209+
it("should preserve the exact prefix format for various message types", () => {
1210+
const originalLog = console.log
1211+
const messages: string[] = []
1212+
console.log = (msg: string) => messages.push(msg)
1213+
1214+
const logger = createLogger(true)
1215+
logger.verbose("simple")
1216+
logger.verbose(" leading spaces")
1217+
logger.verbose("trailing spaces ")
1218+
1219+
console.log = originalLog
1220+
// All messages should have exactly "[VERBOSE] " prefix
1221+
expect(messages[0]).toBe("[VERBOSE] simple")
1222+
expect(messages[1]).toBe("[VERBOSE] leading spaces")
1223+
expect(messages[2]).toBe("[VERBOSE] trailing spaces ")
1224+
})
11211225
})
11221226
})

0 commit comments

Comments
 (0)