1 | 'use strict';
|
2 |
|
3 | var tap = require('tap');
|
4 | var forEach = require('for-each');
|
5 | var tape = require('../');
|
6 | var concat = require('concat-stream');
|
7 |
|
8 | tap.test('tape assert.end as callback', function (tt) {
|
9 | var test = tape.createHarness({ exit: false });
|
10 |
|
11 | test.createStream().pipe(concat(function (rows) {
|
12 | tt.equal(rows.toString('utf8'), [
|
13 | 'TAP version 13',
|
14 | '# do a task and write',
|
15 | 'ok 1 null',
|
16 | 'ok 2 should be strictly equal',
|
17 | '# do a task and write fail',
|
18 | 'ok 3 null',
|
19 | 'ok 4 should be strictly equal',
|
20 | 'not ok 5 Error: fail',
|
21 | getStackTrace(rows),
|
22 | '',
|
23 | '1..5',
|
24 | '# tests 5',
|
25 | '# pass 4',
|
26 | '# fail 1'
|
27 | ].join('\n') + '\n');
|
28 | tt.end();
|
29 | }));
|
30 |
|
31 | test('do a task and write', function (assert) {
|
32 | fakeAsyncTask('foo', function (err, value) {
|
33 | assert.ifError(err);
|
34 | assert.equal(value, 'taskfoo');
|
35 |
|
36 | fakeAsyncWrite('bar', assert.end);
|
37 | });
|
38 | });
|
39 |
|
40 | test('do a task and write fail', function (assert) {
|
41 | fakeAsyncTask('bar', function (err, value) {
|
42 | assert.ifError(err);
|
43 | assert.equal(value, 'taskbar');
|
44 |
|
45 | fakeAsyncWriteFail('baz', assert.end);
|
46 | });
|
47 | });
|
48 | });
|
49 |
|
50 | function fakeAsyncTask(name, cb) {
|
51 | cb(null, 'task' + name);
|
52 | }
|
53 |
|
54 | function fakeAsyncWrite(name, cb) {
|
55 | cb(null);
|
56 | }
|
57 |
|
58 | function fakeAsyncWriteFail(name, cb) {
|
59 | cb(new Error('fail'));
|
60 | }
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | function getStackTrace(rows) {
|
71 | var stacktrace = ' ---\n';
|
72 | var extract = false;
|
73 | forEach(rows.toString('utf8').split('\n'), function (row) {
|
74 | if (!extract) {
|
75 | if (row.indexOf('---') > -1) {
|
76 | extract = true;
|
77 | }
|
78 | } else {
|
79 | if (row.indexOf('...') > -1) {
|
80 | extract = false;
|
81 | stacktrace += ' ...';
|
82 | } else {
|
83 | stacktrace += row + '\n';
|
84 | }
|
85 |
|
86 | }
|
87 | });
|
88 |
|
89 | return stacktrace;
|
90 | }
|