81 lines
1.7 KiB
JavaScript
81 lines
1.7 KiB
JavaScript
// Shared test utilities for logger tests
|
|
|
|
// Mock console.log to capture output
|
|
let capturedLogs = [];
|
|
let capturedErrors = [];
|
|
const originalConsoleLog = console.log;
|
|
const originalConsoleError = console.error;
|
|
const originalIsTTY = Deno.stdout.isTerminal();
|
|
|
|
export function mockConsole() {
|
|
console.log = (...args) => {
|
|
capturedLogs.push(args.join(" "));
|
|
};
|
|
}
|
|
|
|
export function mockConsoleError() {
|
|
console.error = (...args) => {
|
|
capturedErrors.push(args);
|
|
};
|
|
}
|
|
|
|
export function restoreConsole() {
|
|
console.log = originalConsoleLog;
|
|
capturedLogs = [];
|
|
}
|
|
|
|
export function restoreConsoleError() {
|
|
console.error = originalConsoleError;
|
|
capturedErrors = [];
|
|
}
|
|
|
|
export function getCapturedLogs() {
|
|
return capturedLogs;
|
|
}
|
|
|
|
export function getCapturedErrors() {
|
|
return capturedErrors;
|
|
}
|
|
|
|
export function clearCapturedLogs() {
|
|
capturedLogs = [];
|
|
}
|
|
|
|
export function clearCapturedErrors() {
|
|
capturedErrors = [];
|
|
}
|
|
|
|
let mockIsTTY = originalIsTTY;
|
|
|
|
export function setTTYMode(isTTY) {
|
|
mockIsTTY = isTTY;
|
|
// Mock Deno.stdout.isTerminal for testing
|
|
Deno.stdout.isTerminal = () => mockIsTTY;
|
|
}
|
|
|
|
export function restoreTTY() {
|
|
mockIsTTY = originalIsTTY;
|
|
// Restore original Deno.stdout.isTerminal
|
|
Deno.stdout.isTerminal = () => originalIsTTY;
|
|
}
|
|
|
|
// Helper to setup both console mocks
|
|
export function setupMocks() {
|
|
mockConsole();
|
|
mockConsoleError();
|
|
}
|
|
|
|
// Helper to restore both console mocks
|
|
export function restoreMocks() {
|
|
restoreConsole();
|
|
restoreConsoleError();
|
|
}
|
|
|
|
// Helper to get parsed JSON from first captured log
|
|
export function getFirstLogAsJSON() {
|
|
if (capturedLogs.length === 0) {
|
|
throw new Error("No logs captured");
|
|
}
|
|
return JSON.parse(capturedLogs[0]);
|
|
}
|