tor-browser

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

getStackTrace.spec.ts (6485B)


      1 export const description = `
      2 Tests for getStackTrace.
      3 `;
      4 
      5 import { makeTestGroup } from '../common/framework/test_group.js';
      6 import { extractImportantStackTrace } from '../common/internal/stack.js';
      7 
      8 import { UnitTest } from './unit_test.js';
      9 
     10 export const g = makeTestGroup(UnitTest);
     11 
     12 g.test('stacks')
     13  .paramsSimple([
     14    {
     15      case: 'node_fail',
     16      _expectedLines: 3,
     17      _stack: `Error:
     18   at CaseRecorder.fail (/Users/kainino/src/cts/src/common/framework/logger.ts:99:30)
     19   at RunCaseSpecific.exports.g.test.t [as fn] (/Users/kainino/src/cts/src/unittests/logger.spec.ts:80:7)
     20   at RunCaseSpecific.run (/Users/kainino/src/cts/src/common/framework/test_group.ts:121:18)
     21   at processTicksAndRejections (internal/process/task_queues.js:86:5)`,
     22    },
     23    {
     24      // MAINTENANCE_TODO: make sure this test case actually matches what happens on windows
     25      case: 'node_fail_backslash',
     26      _expectedLines: 3,
     27      _stack: `Error:
     28   at CaseRecorder.fail (C:\\Users\\kainino\\src\\cts\\src\\common\\framework\\logger.ts:99:30)
     29   at RunCaseSpecific.exports.g.test.t [as fn] (C:\\Users\\kainino\\src\\cts\\src\\unittests\\logger.spec.ts:80:7)
     30   at RunCaseSpecific.run (C:\\Users\\kainino\\src\\cts\\src\\common\\framework\\test_group.ts:121:18)
     31   at processTicksAndRejections (internal\\process\\task_queues.js:86:5)`,
     32    },
     33    {
     34      case: 'node_fail_processTicksAndRejections',
     35      _expectedLines: 5,
     36      _stack: `Error: expectation had no effect: suite1:foo:
     37    at Object.generateMinimalQueryList (/Users/kainino/src/cts/src/common/framework/generate_minimal_query_list.ts:72:24)
     38    at testGenerateMinimalQueryList (/Users/kainino/src/cts/src/unittests/loading.spec.ts:289:25)
     39    at processTicksAndRejections (internal/process/task_queues.js:93:5)
     40    at RunCaseSpecific.fn (/Users/kainino/src/cts/src/unittests/loading.spec.ts:300:3)
     41    at RunCaseSpecific.run (/Users/kainino/src/cts/src/common/framework/test_group.ts:144:9)
     42    at /Users/kainino/src/cts/src/common/runtime/cmdline.ts:62:25
     43    at async Promise.all (index 29)
     44    at /Users/kainino/src/cts/src/common/runtime/cmdline.ts:78:5`,
     45    },
     46    {
     47      case: 'node_throw',
     48      _expectedLines: 2,
     49      _stack: `Error: hello
     50    at RunCaseSpecific.g.test.t [as fn] (/Users/kainino/src/cts/src/unittests/test_group.spec.ts:51:11)
     51    at RunCaseSpecific.run (/Users/kainino/src/cts/src/common/framework/test_group.ts:121:18)
     52    at processTicksAndRejections (internal/process/task_queues.js:86:5)`,
     53    },
     54    {
     55      case: 'firefox_fail',
     56      _expectedLines: 3,
     57      _stack: `fail@http://localhost:8080/out/common/framework/logger.js:104:30
     58 expect@http://localhost:8080/out/common/framework/default_fixture.js:59:16
     59 @http://localhost:8080/out/unittests/util.spec.js:35:5
     60 run@http://localhost:8080/out/common/framework/test_group.js:119:18`,
     61    },
     62    {
     63      case: 'firefox_throw',
     64      _expectedLines: 1,
     65      _stack: `@http://localhost:8080/out/unittests/test_group.spec.js:48:11
     66 run@http://localhost:8080/out/common/framework/test_group.js:119:18`,
     67    },
     68    {
     69      case: 'safari_fail',
     70      _expectedLines: 3,
     71      _stack: `fail@http://localhost:8080/out/common/framework/logger.js:104:39
     72 expect@http://localhost:8080/out/common/framework/default_fixture.js:59:20
     73 http://localhost:8080/out/unittests/util.spec.js:35:11
     74 http://localhost:8080/out/common/framework/test_group.js:119:20
     75 asyncFunctionResume@[native code]
     76 [native code]
     77 promiseReactionJob@[native code]`,
     78    },
     79    {
     80      case: 'safari_throw',
     81      _expectedLines: 1,
     82      _stack: `http://localhost:8080/out/unittests/test_group.spec.js:48:20
     83 http://localhost:8080/out/common/framework/test_group.js:119:20
     84 asyncFunctionResume@[native code]
     85 [native code]
     86 promiseReactionJob@[native code]`,
     87    },
     88    {
     89      case: 'chrome_fail',
     90      _expectedLines: 4,
     91      _stack: `Error
     92    at CaseRecorder.fail (http://localhost:8080/out/common/framework/logger.js:104:30)
     93    at DefaultFixture.expect (http://localhost:8080/out/common/framework/default_fixture.js:59:16)
     94    at RunCaseSpecific.fn (http://localhost:8080/out/unittests/util.spec.js:35:5)
     95    at RunCaseSpecific.run (http://localhost:8080/out/common/framework/test_group.js:119:18)
     96    at async runCase (http://localhost:8080/out/common/runtime/standalone.js:37:17)
     97    at async http://localhost:8080/out/common/runtime/standalone.js:102:7`,
     98    },
     99    {
    100      case: 'chrome_throw',
    101      _expectedLines: 6,
    102      _stack: `Error: hello
    103    at RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:48:11)
    104    at RunCaseSpecific.run (http://localhost:8080/out/common/framework/test_group.js:119:18)"
    105    at async Promise.all (index 0)
    106    at async TestGroupTest.run (http://localhost:8080/out/unittests/test_group_test.js:6:5)
    107    at async RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:53:15)
    108    at async RunCaseSpecific.run (http://localhost:8080/out/common/framework/test_group.js:119:7)
    109    at async runCase (http://localhost:8080/out/common/runtime/standalone.js:37:17)
    110    at async http://localhost:8080/out/common/runtime/standalone.js:102:7`,
    111    },
    112    {
    113      case: 'multiple_lines',
    114      _expectedLines: 8,
    115      _stack: `Error: hello
    116    at RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:48:11)
    117    at RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:48:11)
    118    at RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:48:11)
    119    at RunCaseSpecific.run (http://localhost:8080/out/common/framework/test_group.js:119:18)"
    120    at async Promise.all (index 0)
    121    at async TestGroupTest.run (http://localhost:8080/out/unittests/test_group_test.js:6:5)
    122    at async RunCaseSpecific.fn (http://localhost:8080/out/unittests/test_group.spec.js:53:15)
    123    at async RunCaseSpecific.run (http://localhost:8080/out/common/framework/test_group.js:119:7)
    124    at async runCase (http://localhost:8080/out/common/runtime/standalone.js:37:17)
    125    at async http://localhost:8080/out/common/runtime/standalone.js:102:7`,
    126    },
    127  ])
    128  .fn(t => {
    129    const ex = new Error();
    130    ex.stack = t.params._stack;
    131    t.expect(ex.stack === t.params._stack);
    132    const stringified = extractImportantStackTrace(ex);
    133    const parts = stringified.split('\n');
    134 
    135    t.expect(parts.length === t.params._expectedLines);
    136    const last = parts[parts.length - 1];
    137    t.expect(last.indexOf('/unittests/') !== -1 || last.indexOf('\\unittests\\') !== -1);
    138  });