-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxyConsole.test.ts
More file actions
76 lines (61 loc) · 2.33 KB
/
Copy pathproxyConsole.test.ts
File metadata and controls
76 lines (61 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { expect, test } from 'rstack/test';
import { createLogHelper, proxyConsole } from '../src/index';
test('should capture console output and expose the Rsbuild log helpers', async () => {
const originalLog = console.log;
const logHelper = proxyConsole({ types: 'log' });
try {
const pendingLog = logHelper.expectLog('second log');
console.log('\u001B[31mfirst log\u001B[39m', { value: 1 });
console.log('second log');
await expect(pendingLog).resolves.toBe(true);
expect(logHelper.logs).toEqual(['first log {"value":1}', 'second log']);
expect(logHelper.originalLogs).toEqual([
'\u001B[31mfirst log\u001B[39m {"value":1}',
'second log',
]);
expect(() => logHelper.expectNoLog('missing log')).not.toThrow();
logHelper.expectLogTimes('{"value":1}second log', 0);
logHelper.expectLogTimes(/^second log$/m, 1);
logHelper.clearLogs();
expect(logHelper.logs).toEqual([]);
expect(logHelper.originalLogs).toHaveLength(2);
} finally {
logHelper.restore();
}
expect(console.log).toBe(originalLog);
});
test('should support strict and POSIX log matching', async () => {
const logHelper = proxyConsole({ types: 'warn' });
try {
console.warn('path: C:\\project\\index.ts\nready');
await expect(
logHelper.expectLog('path: C:/project/index.ts', { posix: true }),
).resolves.toBe(true);
await expect(logHelper.expectLog('ready', { strict: true })).resolves.toBe(
true,
);
} finally {
logHelper.restore();
}
});
test('should count log occurrences across output chunks', () => {
const logHelper = createLogHelper();
const message = 'watching for changes...';
logHelper.addLog(`${message}\n${message}\nwatching for `);
logHelper.addLog('changes...\n');
logHelper.expectLogTimes(message, 3);
logHelper.expectLogTimes(/watching for changes\.\.\./, 3);
expect(() => logHelper.expectLogTimes(message, 1)).toThrow(
'Expected: 1\nReceived: 3',
);
logHelper.clearLogs();
logHelper.expectLogTimes(message, 0);
logHelper.addLog(message);
logHelper.expectLogTimes(message, 1);
});
test('should strip ANSI sequences after joining output chunks', () => {
const logHelper = createLogHelper();
logHelper.addLog('watching for \u001B[3');
logHelper.addLog('9mchanges...\n');
logHelper.expectLogTimes('watching for changes...', 1);
});