MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1import consoleModule, { Console } from 'node:console';
2import { test, testDeep, summary } from './helpers.js';
3
4console.log('Console Tests\n');
5
6test('console.log exists', typeof console.log, 'function');
7test('console.error exists', typeof console.error, 'function');
8test('console.warn exists', typeof console.warn, 'function');
9test('console.info exists', typeof console.info, 'function');
10test('console.debug exists', typeof console.debug, 'function');
11test('console.trace exists', typeof console.trace, 'function');
12test('console.time exists', typeof console.time, 'function');
13test('console.timeEnd exists', typeof console.timeEnd, 'function');
14test('console.timeLog exists', typeof console.timeLog, 'function');
15test('console.assert exists', typeof console.assert, 'function');
16test('console.clear exists', typeof console.clear, 'function');
17test('console.count exists', typeof console.count, 'function');
18test('console.countReset exists', typeof console.countReset, 'function');
19test('console.group exists', typeof console.group, 'function');
20test('console.groupCollapsed exists', typeof console.groupCollapsed, 'function');
21test('console.groupEnd exists', typeof console.groupEnd, 'function');
22test('console.dir exists', typeof console.dir, 'function');
23test('console.dirxml exists', typeof console.dirxml, 'function');
24test('console.table exists', typeof console.table, 'function');
25test('console.Console exists', typeof console.Console, 'function');
26
27test('node:console default export is object', typeof consoleModule, 'object');
28test('node:console Console export exists', typeof Console, 'function');
29test('node:console default Console matches named export', consoleModule.Console, Console);
30
31function makeSink() {
32 return {
33 chunks: [],
34 write(chunk) {
35 this.chunks.push(String(chunk));
36 return true;
37 }
38 };
39}
40
41const stdoutSink = makeSink();
42const stderrSink = makeSink();
43const instance = new Console({ stdout: stdoutSink, stderr: stderrSink, groupIndentation: 2 });
44
45test('Console instance log exists', typeof instance.log, 'function');
46test('Console instance error exists', typeof instance.error, 'function');
47test('Console instance warn exists', typeof instance.warn, 'function');
48test('Console instance info exists', typeof instance.info, 'function');
49test('Console instance debug exists', typeof instance.debug, 'function');
50test('Console instance assert exists', typeof instance.assert, 'function');
51test('Console instance trace exists', typeof instance.trace, 'function');
52test('Console instance count exists', typeof instance.count, 'function');
53test('Console instance countReset exists', typeof instance.countReset, 'function');
54test('Console instance time exists', typeof instance.time, 'function');
55test('Console instance timeLog exists', typeof instance.timeLog, 'function');
56test('Console instance timeEnd exists', typeof instance.timeEnd, 'function');
57test('Console instance group exists', typeof instance.group, 'function');
58test('Console instance groupCollapsed exists', typeof instance.groupCollapsed, 'function');
59test('Console instance groupEnd exists', typeof instance.groupEnd, 'function');
60test('Console instance clear exists', typeof instance.clear, 'function');
61test('Console instance dir exists', typeof instance.dir, 'function');
62test('Console instance dirxml exists', typeof instance.dirxml, 'function');
63test('Console instance table exists', typeof instance.table, 'function');
64
65instance.log('hello', 'world');
66instance.info('info');
67instance.group('parent');
68instance.log('child');
69instance.groupEnd();
70instance.count('hits');
71instance.count('hits');
72instance.countReset('hits');
73instance.count('hits');
74instance.error('problem');
75instance.warn('warning');
76instance.assert(false, 'boom');
77instance.trace('trace');
78
79testDeep('Console instance stdout routing', stdoutSink.chunks, [
80 'hello world\n',
81 'info\n',
82 'parent\n',
83 ' child\n',
84 'hits: 1\n',
85 'hits: 2\n',
86 'hits: 1\n'
87]);
88
89testDeep('Console instance stderr routing', stderrSink.chunks.slice(0, 4), [
90 'problem\n',
91 'warning\n',
92 'Assertion failed: boom\n',
93 'Trace: trace\n'
94]);
95
96test('Console instance trace writes stack to stderr sink', stderrSink.chunks.some(chunk => chunk.includes('at ')), true);
97
98summary();