1 | 'use strict';
|
2 |
|
3 | var tap = require('tap');
|
4 | var path = require('path');
|
5 | var spawn = require('child_process').spawn;
|
6 | var concat = require('concat-stream');
|
7 |
|
8 | var stripFullStack = require('./common').stripFullStack;
|
9 |
|
10 | var tapeBin = path.join(process.cwd(), 'bin/tape');
|
11 |
|
12 | tap.test('Should pass with ignoring', { skip: process.platform === 'win32' }, function (tt) {
|
13 | tt.plan(2);
|
14 |
|
15 | var tc = function (rows) {
|
16 | tt.same(stripFullStack(rows.toString('utf8')), [
|
17 | 'TAP version 13',
|
18 | '# (anonymous)',
|
19 | 'ok 1 should be truthy',
|
20 | '# (anonymous)',
|
21 | 'ok 2 test/stub1',
|
22 | '# (anonymous)',
|
23 | 'ok 3 test/stub2',
|
24 | '# (anonymous)',
|
25 | 'ok 4 test/sub/stub1',
|
26 | '# (anonymous)',
|
27 | 'ok 5 test/sub/stub2',
|
28 | '# (anonymous)',
|
29 | 'ok 6 Should print',
|
30 | '',
|
31 | '1..6',
|
32 | '# tests 6',
|
33 | '# pass 6',
|
34 | '',
|
35 | '# ok',
|
36 | '',
|
37 | ''
|
38 | ]);
|
39 | };
|
40 |
|
41 | var ps = spawn(tapeBin, ['**/*.js', '-i', '.ignore'], { cwd: path.join(__dirname, 'ignore') });
|
42 | ps.stdout.pipe(concat(tc));
|
43 | ps.on('exit', function (code) {
|
44 | tt.equal(code, 0);
|
45 | });
|
46 | });
|
47 |
|
48 | tap.test('Should pass', { skip: process.platform === 'win32' }, function (tt) {
|
49 | tt.plan(2);
|
50 |
|
51 | var tc = function (rows) {
|
52 | tt.same(stripFullStack(rows.toString('utf8')), [
|
53 | 'TAP version 13',
|
54 | '# (anonymous)',
|
55 | 'not ok 1 Should not print',
|
56 | ' ---',
|
57 | ' operator: fail',
|
58 | ' at: Test.<anonymous> ($TEST/ignore/fake_node_modules/stub1.js:$LINE:$COL)',
|
59 | ' stack: |-',
|
60 | ' Error: Should not print',
|
61 | ' [... stack stripped ...]',
|
62 | ' at Test.<anonymous> ($TEST/ignore/fake_node_modules/stub1.js:$LINE:$COL)',
|
63 | ' [... stack stripped ...]',
|
64 | ' ...',
|
65 | '# (anonymous)',
|
66 | 'not ok 2 Should not print',
|
67 | ' ---',
|
68 | ' operator: fail',
|
69 | ' at: Test.<anonymous> ($TEST/ignore/fake_node_modules/stub2.js:$LINE:$COL)',
|
70 | ' stack: |-',
|
71 | ' Error: Should not print',
|
72 | ' [... stack stripped ...]',
|
73 | ' at Test.<anonymous> ($TEST/ignore/fake_node_modules/stub2.js:$LINE:$COL)',
|
74 | ' [... stack stripped ...]',
|
75 | ' ...',
|
76 | '# (anonymous)',
|
77 | 'ok 3 should be truthy',
|
78 | '# (anonymous)',
|
79 | 'ok 4 test/stub1',
|
80 | '# (anonymous)',
|
81 | 'ok 5 test/stub2',
|
82 | '# (anonymous)',
|
83 | 'ok 6 test/sub/stub1',
|
84 | '# (anonymous)',
|
85 | 'ok 7 test/sub/stub2',
|
86 | '# (anonymous)',
|
87 | 'ok 8 Should print',
|
88 | '',
|
89 | '1..8',
|
90 | '# tests 8',
|
91 | '# pass 6',
|
92 | '# fail 2',
|
93 | '',
|
94 | ''
|
95 | ]);
|
96 | };
|
97 |
|
98 | var ps = spawn(tapeBin, ['**/*.js'], { cwd: path.join(__dirname, 'ignore') });
|
99 | ps.stdout.pipe(concat(tc));
|
100 | ps.on('exit', function (code) {
|
101 | tt.equal(code, 1);
|
102 | });
|
103 | });
|
104 |
|
105 | tap.test('Should fail when ignore file does not exist', { skip: process.platform === 'win32' }, function (tt) {
|
106 | tt.plan(3);
|
107 |
|
108 | var testStdout = function (rows) {
|
109 | tt.same(rows.toString('utf8'), '');
|
110 | };
|
111 |
|
112 | var testStderr = function (rows) {
|
113 | tt.ok((/^ENOENT[:,] no such file or directory,? (?:open )?'\$TEST\/ignore\/.gitignore'\n$/m).test(stripFullStack(rows.toString('utf8')).join('\n')));
|
114 | };
|
115 |
|
116 | var ps = spawn(tapeBin, ['**/*.js', '-i'], { cwd: path.join(__dirname, 'ignore') });
|
117 | ps.stdout.pipe(concat(testStdout));
|
118 | ps.stderr.pipe(concat(testStderr));
|
119 | ps.on('exit', function (code) {
|
120 | tt.equal(code, 2);
|
121 | });
|
122 | });
|