tapsert 
An almost-drop-in replacement for the assert module provided by Node core that
prints TAP compliant output instead of throwing AssertionErrors.
Uses
- drop-in replacement for
assert if you prefer bare asserts and no test
runner or harness but you still want TAP output (node plain.js)
- drop-in replacement for
assert if you use a TAP consuming test runner
but don't want to use a "real" test harness (tap plain.js)
- stepping-stone for migrating from
assert to tap
Usage
Use tapsert the same as you would use assert if you don't use a test runner.
Examples
Start with the assert module from node core.
var assert = require('assert');
assert.equal('actual', 'expected', 'core assert style');
Replace require('assert') with require('tapsert') to produce TAP output.
var assert = require('tapsert');
assert.equal('actual', 'expected', 'core assert style');
Rename assert to tap to prepare for switching to https://github.com/tapjs/node-tap.
var tap = require('tapsert');
tap.equal('actual', 'expected', 'tap assert style');
Replace require('tapsert') with require('tap') and you're using tap.
var tap = require('tap');
tap.equal('actual', 'expected', 'tap assert style');
Tests
Tests are written as simple asserts revealing full intentions.
var assert = require(process.env.ASSERT || './');
assert(assert, 'assert exists');
assert(assert.equal, 'assert.equal exists');
assert.equal(typeof assert.strictEqual, 'function',
'assert.strictEqual is a function');
assert.ok(false, 'really want false to be true');
assert.doesNotThrow(function() {
assert.throws(function() {
throw Error('expected!');
}, /expected/, 'supports assert.throws');
}, 'nested asserts are weird.');
Output
Output shows the result of each assertion, even if there are failures:
$ node test.js
TAP version 13
ok 1 - assert exists
ok 2 - assert.equal exists
ok 3 - assert.strictEqual is a function
not ok 4 - really want false to be true
ok 6 - supports assert.throws
ok 5 - nested asserts are weird.
1..6
$ echo $?
1
The same tests run with assert from node core (output captured from stderr):
$ ASSERT=assert node example.js
assert.js:92
throw new assert.AssertionError({
^
AssertionError: really want false to be true
at Object.<anonymous> (/Users/ryan/work/tapsert/example.js:7:8)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
$ echo $?
8
© 2014 Ryan Graham