blob: 7f7c5d0134bfcc16f2985f3c2deed20b5c3707e6 [file] [log] [blame]
var tap = require('tap');
var spawn = require('child_process').spawn;
tap.test('exit ok', function (t) {
t.plan(2);
var tc = tap.createConsumer();
var rows = [];
tc.on('data', function (r) { rows.push(r) });
tc.on('end', function () {
var rs = rows.map(function (r) {
if (r && typeof r === 'object') {
return { id : r.id, ok : r.ok, name : r.name.trim() };
}
else return r;
});
t.same(rs, [
'TAP version 13',
'array',
{ id: 1, ok: true, name: 'should be equivalent' },
{ id: 2, ok: true, name: 'should be equivalent' },
{ id: 3, ok: true, name: 'should be equivalent' },
{ id: 4, ok: true, name: 'should be equivalent' },
{ id: 5, ok: true, name: 'should be equivalent' },
'tests 5',
'pass 5',
'ok'
]);
});
var ps = spawn(process.execPath, [ __dirname + '/exit/ok.js' ]);
ps.stdout.pipe(tc);
ps.on('exit', function (code) {
t.equal(code, 0);
});
});
tap.test('exit fail', function (t) {
t.plan(2);
var tc = tap.createConsumer();
var rows = [];
tc.on('data', function (r) { rows.push(r) });
tc.on('end', function () {
var rs = rows.map(function (r) {
if (r && typeof r === 'object') {
return { id : r.id, ok : r.ok, name : r.name.trim() };
}
else return r;
});
t.same(rs, [
'TAP version 13',
'array',
{ id: 1, ok: true, name: 'should be equivalent' },
{ id: 2, ok: true, name: 'should be equivalent' },
{ id: 3, ok: true, name: 'should be equivalent' },
{ id: 4, ok: true, name: 'should be equivalent' },
{ id: 5, ok: false, name: 'should be equivalent' },
'tests 5',
'pass 4',
'fail 1'
]);
});
var ps = spawn(process.execPath, [ __dirname + '/exit/fail.js' ]);
ps.stdout.pipe(tc);
ps.on('exit', function (code) {
t.notEqual(code, 0);
});
});
tap.test('too few exit', function (t) {
t.plan(2);
var tc = tap.createConsumer();
var rows = [];
tc.on('data', function (r) { rows.push(r) });
tc.on('end', function () {
var rs = rows.map(function (r) {
if (r && typeof r === 'object') {
return { id : r.id, ok : r.ok, name : r.name.trim() };
}
else return r;
});
t.same(rs, [
'TAP version 13',
'array',
{ id: 1, ok: true, name: 'should be equivalent' },
{ id: 2, ok: true, name: 'should be equivalent' },
{ id: 3, ok: true, name: 'should be equivalent' },
{ id: 4, ok: true, name: 'should be equivalent' },
{ id: 5, ok: true, name: 'should be equivalent' },
{ id: 6, ok: false, name: 'plan != count' },
'tests 6',
'pass 5',
'fail 1'
]);
});
var ps = spawn(process.execPath, [ __dirname + '/exit/too_few.js' ]);
ps.stdout.pipe(tc);
ps.on('exit', function (code) {
t.notEqual(code, 0);
});
});
tap.test('more planned in a second test', function (t) {
t.plan(2);
var tc = tap.createConsumer();
var rows = [];
tc.on('data', function (r) { rows.push(r) });
tc.on('end', function () {
var rs = rows.map(function (r) {
if (r && typeof r === 'object') {
return { id : r.id, ok : r.ok, name : r.name.trim() };
}
else return r;
});
t.same(rs, [
'TAP version 13',
'first',
{ id: 1, ok: true, name: '(unnamed assert)' },
'second',
{ id: 2, ok: true, name: '(unnamed assert)' },
{ id: 3, ok: false, name: 'plan != count' },
'tests 3',
'pass 2',
'fail 1'
]);
});
var ps = spawn(process.execPath, [ __dirname + '/exit/second.js' ]);
ps.stdout.pipe(tc);
ps.on('exit', function (code) {
t.notEqual(code, 0);
});
});