Source code
Revision control
Copy as Markdown
Other Tools
export const description = `
Unit tests for namespaced logging system.
Also serves as a larger test of async test functions, and of the logging system.
`;
import { SkipTestCase } from '../common/framework/fixture.js';
import { makeTestGroup } from '../common/framework/test_group.js';
import { Logger } from '../common/internal/logging/logger.js';
import { assert } from '../common/util/util.js';
import { UnitTest } from './unit_test.js';
export const g = makeTestGroup(UnitTest);
g.test('construct').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [, res1] = mylog.record('one');
const [, res2] = mylog.record('two');
t.expect(mylog.results.get('one') === res1);
t.expect(mylog.results.get('two') === res2);
t.expect(res1.logs === undefined);
t.expect(res1.status === 'running');
t.expect(res1.timems < 0);
t.expect(res2.logs === undefined);
t.expect(res2.status === 'running');
t.expect(res2.timems < 0);
});
g.test('empty').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
t.expect(res.status === 'running');
rec.finish();
t.expect(res.status === 'notrun');
t.expect(res.timems >= 0);
});
g.test('passed').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.passed();
rec.finish();
t.expect(res.status === 'pass');
t.expect(res.timems >= 0);
});
g.test('pass').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.debug(new Error('hello'));
t.expect(res.status === 'running');
rec.finish();
t.expect(res.status === 'pass');
t.expect(res.timems >= 0);
});
g.test('skip').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'skip');
t.expect(res.timems >= 0);
});
// Tests if there's some skips and at least one pass it's pass.
g.test('skip_pass').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.skipped(new SkipTestCase());
rec.debug(new Error('hello'));
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'pass');
t.expect(res.timems >= 0);
});
g.test('warn').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.warn(new Error('hello'));
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'warn');
t.expect(res.timems >= 0);
});
g.test('fail,expectationFailed').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.expectationFailed(new Error('bye'));
rec.warn(new Error());
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'fail');
t.expect(res.timems >= 0);
});
g.test('fail,validationFailed').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.validationFailed(new Error('bye'));
rec.warn(new Error());
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'fail');
t.expect(res.timems >= 0);
});
g.test('fail,threw').fn(t => {
const mylog = new Logger({ overrideDebugMode: true });
const [rec, res] = mylog.record('one');
rec.start();
rec.threw(new Error('bye'));
rec.warn(new Error());
rec.skipped(new SkipTestCase());
rec.finish();
t.expect(res.status === 'fail');
t.expect(res.timems >= 0);
});
g.test('debug')
.paramsSimple([
{ debug: true, _logsCount: 5 }, //
{ debug: false, _logsCount: 3 },
])
.fn(t => {
const { debug, _logsCount } = t.params;
const mylog = new Logger({ overrideDebugMode: debug });
const [rec, res] = mylog.record('one');
rec.start();
rec.debug(new Error('hello'));
rec.expectationFailed(new Error('bye'));
rec.warn(new Error());
rec.skipped(new SkipTestCase());
rec.debug(new Error('foo'));
rec.finish();
t.expect(res.status === 'fail');
t.expect(res.timems >= 0);
assert(res.logs !== undefined);
t.expect(res.logs.length === _logsCount);
});