89 lines
2.4 KiB
JavaScript
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:
|