UNPKG

2.13 kBJavaScriptView Raw
1var tape = require('../');
2var tap = require('tap');
3var concat = require('concat-stream');
4var tapParser = require('tap-parser');
5var yaml = require('js-yaml');
6
7tap.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
69function 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}