logger.spec.ts (4386B)
1 export const description = ` 2 Unit tests for namespaced logging system. 3 4 Also serves as a larger test of async test functions, and of the logging system. 5 `; 6 7 import { SkipTestCase } from '../common/framework/fixture.js'; 8 import { makeTestGroup } from '../common/framework/test_group.js'; 9 import { Logger } from '../common/internal/logging/logger.js'; 10 import { assert } from '../common/util/util.js'; 11 12 import { UnitTest } from './unit_test.js'; 13 14 export const g = makeTestGroup(UnitTest); 15 16 g.test('construct').fn(t => { 17 const mylog = new Logger({ overrideDebugMode: true }); 18 const [, res1] = mylog.record('one'); 19 const [, res2] = mylog.record('two'); 20 21 t.expect(mylog.results.get('one') === res1); 22 t.expect(mylog.results.get('two') === res2); 23 t.expect(res1.logs === undefined); 24 t.expect(res1.status === 'running'); 25 t.expect(res1.timems < 0); 26 t.expect(res2.logs === undefined); 27 t.expect(res2.status === 'running'); 28 t.expect(res2.timems < 0); 29 }); 30 31 g.test('empty').fn(t => { 32 const mylog = new Logger({ overrideDebugMode: true }); 33 const [rec, res] = mylog.record('one'); 34 35 rec.start(); 36 t.expect(res.status === 'running'); 37 rec.finish(); 38 39 t.expect(res.status === 'notrun'); 40 t.expect(res.timems >= 0); 41 }); 42 43 g.test('passed').fn(t => { 44 const mylog = new Logger({ overrideDebugMode: true }); 45 const [rec, res] = mylog.record('one'); 46 47 rec.start(); 48 rec.passed(); 49 rec.finish(); 50 51 t.expect(res.status === 'pass'); 52 t.expect(res.timems >= 0); 53 }); 54 55 g.test('pass').fn(t => { 56 const mylog = new Logger({ overrideDebugMode: true }); 57 const [rec, res] = mylog.record('one'); 58 59 rec.start(); 60 rec.debug(new Error('hello')); 61 t.expect(res.status === 'running'); 62 rec.finish(); 63 64 t.expect(res.status === 'pass'); 65 t.expect(res.timems >= 0); 66 }); 67 68 g.test('skip').fn(t => { 69 const mylog = new Logger({ overrideDebugMode: true }); 70 const [rec, res] = mylog.record('one'); 71 72 rec.start(); 73 rec.skipped(new SkipTestCase()); 74 rec.finish(); 75 76 t.expect(res.status === 'skip'); 77 t.expect(res.timems >= 0); 78 }); 79 80 // Tests if there's some skips and at least one pass it's pass. 81 g.test('skip_pass').fn(t => { 82 const mylog = new Logger({ overrideDebugMode: true }); 83 const [rec, res] = mylog.record('one'); 84 85 rec.start(); 86 rec.skipped(new SkipTestCase()); 87 rec.debug(new Error('hello')); 88 rec.skipped(new SkipTestCase()); 89 rec.finish(); 90 91 t.expect(res.status === 'pass'); 92 t.expect(res.timems >= 0); 93 }); 94 95 g.test('warn').fn(t => { 96 const mylog = new Logger({ overrideDebugMode: true }); 97 const [rec, res] = mylog.record('one'); 98 99 rec.start(); 100 rec.warn(new Error('hello')); 101 rec.skipped(new SkipTestCase()); 102 rec.finish(); 103 104 t.expect(res.status === 'warn'); 105 t.expect(res.timems >= 0); 106 }); 107 108 g.test('fail,expectationFailed').fn(t => { 109 const mylog = new Logger({ overrideDebugMode: true }); 110 const [rec, res] = mylog.record('one'); 111 112 rec.start(); 113 rec.expectationFailed(new Error('bye')); 114 rec.warn(new Error()); 115 rec.skipped(new SkipTestCase()); 116 rec.finish(); 117 118 t.expect(res.status === 'fail'); 119 t.expect(res.timems >= 0); 120 }); 121 122 g.test('fail,validationFailed').fn(t => { 123 const mylog = new Logger({ overrideDebugMode: true }); 124 const [rec, res] = mylog.record('one'); 125 126 rec.start(); 127 rec.validationFailed(new Error('bye')); 128 rec.warn(new Error()); 129 rec.skipped(new SkipTestCase()); 130 rec.finish(); 131 132 t.expect(res.status === 'fail'); 133 t.expect(res.timems >= 0); 134 }); 135 136 g.test('fail,threw').fn(t => { 137 const mylog = new Logger({ overrideDebugMode: true }); 138 const [rec, res] = mylog.record('one'); 139 140 rec.start(); 141 rec.threw(new Error('bye')); 142 rec.warn(new Error()); 143 rec.skipped(new SkipTestCase()); 144 rec.finish(); 145 146 t.expect(res.status === 'fail'); 147 t.expect(res.timems >= 0); 148 }); 149 150 g.test('debug') 151 .paramsSimple([ 152 { debug: true, _logsCount: 5 }, // 153 { debug: false, _logsCount: 3 }, 154 ]) 155 .fn(t => { 156 const { debug, _logsCount } = t.params; 157 158 const mylog = new Logger({ overrideDebugMode: debug }); 159 const [rec, res] = mylog.record('one'); 160 161 rec.start(); 162 rec.debug(new Error('hello')); 163 rec.expectationFailed(new Error('bye')); 164 rec.warn(new Error()); 165 rec.skipped(new SkipTestCase()); 166 rec.debug(new Error('foo')); 167 rec.finish(); 168 169 t.expect(res.status === 'fail'); 170 t.expect(res.timems >= 0); 171 assert(res.logs !== undefined); 172 t.expect(res.logs.length === _logsCount); 173 });