tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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  });