backoffice/node_modules/tape/test/harness.js

89 lines
2.4 KiB
JavaScript

var test = require('../');
var harness = test.createHarness({ exit : false });
// minimal write stream mockery
var collector = {
written: [],
ended: false,
writable: true,
write: function (c) {
console.log('#> %s', c.replace(/\n$/, '').split(/\n/).join('\n#> '));
if (this.ended)
throw new Error('write after end');
this.written.push(c);
return true;
},
end: function (c) {
console.error('collector end');
if (this.ended)
throw new Error('end after end');
if (c)
this.write(c);
this.ended = true;
},
on: function () {},
emit: function () {},
removeListener: function () {}
};
var wanted =
[ 'TAP version 13',
'# harness test',
'# hello',
'ok 1 this is ok',
'not ok 2 this is not ok',
' ---',
' operator: fail',
' expected:',
' actual:',
' ...',
'# sub harness test',
'ok 3 math still works',
'ok 4 except when it doesn\'t',
'# sub harness internal test',
'ok 5 gas',
'ok 6 lulz i am immature',
'',
'1..6',
'# tests 6',
'# pass 5',
'# fail 1',
'' ];
harness.stream.pipe(collector);
test('correct output', function (t) {
harness.stream.on('end', function () {
// accept trailing whitespace, or multiple lines on the same write(),
var found = collector.written.join('').split(/\n/).map(function (s) {
return s.replace(/\s+$/, '');
});
t.same(found, wanted, 'got expected output');
t.end();
});
harness('harness test', function (ht) {
// console.error('harness stream', harness.stream);
ht.comment('hello');
ht.pass('this is ok');
ht.fail('this is not ok');
ht.test('sub harness test', function (sht) {
sht.equal(4, 4, 'math still works');
sht.notEqual(0.1 + 0.1 + 0.1, 0.3, 'except when it doesn\'t');
sht.test('sub harness internal test', function (shit) {
console.error('sub harness internal test');
// shit.plan(2);
shit.pass('gas');
shit.pass('lulz i am immature');
shit.end();
});
sht.end();
});
ht.end();
console.error('called ht.end');
});
});
// vim: set softtabstop=4 shiftwidth=4: