1 | var tape = require('../');
|
2 | var tap = require('tap');
|
3 | var concat = require('concat-stream');
|
4 | var tapParser = require('tap-parser');
|
5 | var yaml = require('js-yaml');
|
6 |
|
7 | tap.test('preserves stack trace with newlines', function (tt) {
|
8 | tt.plan(3);
|
9 |
|
10 | var test = tape.createHarness();
|
11 | var stream = test.createStream();
|
12 | var parser = stream.pipe(tapParser());
|
13 | var stackTrace = 'foo\n bar';
|
14 |
|
15 | parser.once('assert', function (data) {
|
16 | tt.deepEqual(data, {
|
17 | ok: false,
|
18 | id: 1,
|
19 | name: "Error: Preserve stack",
|
20 | diag: {
|
21 | stack: stackTrace,
|
22 | operator: 'error',
|
23 | expected: 'undefined',
|
24 | actual: '[Error: Preserve stack]'
|
25 | }
|
26 | });
|
27 | });
|
28 |
|
29 | stream.pipe(concat(function (body) {
|
30 | var body = body.toString('utf8')
|
31 | tt.equal(
|
32 | body,
|
33 | 'TAP version 13\n'
|
34 | + '# multiline stack trace\n'
|
35 | + 'not ok 1 Error: Preserve stack\n'
|
36 | + ' ---\n'
|
37 | + ' operator: error\n'
|
38 | + ' expected: |-\n'
|
39 | + ' undefined\n'
|
40 | + ' actual: |-\n'
|
41 | + ' [Error: Preserve stack]\n'
|
42 | + ' stack: |-\n'
|
43 | + ' foo\n'
|
44 | + ' bar\n'
|
45 | + ' ...\n'
|
46 | + '\n'
|
47 | + '1..1\n'
|
48 | + '# tests 1\n'
|
49 | + '# pass 0\n'
|
50 | + '# fail 1\n'
|
51 | );
|
52 |
|
53 | tt.deepEqual(getDiag(body), {
|
54 | stack: stackTrace,
|
55 | operator: 'error',
|
56 | expected: 'undefined',
|
57 | actual: '[Error: Preserve stack]'
|
58 | });
|
59 | }));
|
60 |
|
61 | test('multiline stack trace', function (t) {
|
62 | t.plan(1);
|
63 | var err = new Error('Preserve stack');
|
64 | err.stack = stackTrace;
|
65 | t.error(err);
|
66 | });
|
67 | });
|
68 |
|
69 | function getDiag (body) {
|
70 | var yamlStart = body.indexOf(' ---');
|
71 | var yamlEnd = body.indexOf(' ...\n');
|
72 | var diag = body.slice(yamlStart, yamlEnd).split('\n').map(function (line) {
|
73 | return line.slice(2);
|
74 | }).join('\n');
|
75 |
|
76 | return yaml.safeLoad(diag);
|
77 | }
|