var tap = require('tap'); var spawn = require('child_process').spawn; var concat = require('concat-stream'); tap.test('requiring a single module', function (t) { t.plan(2); var tc = function (rows) { t.same(rows.toString('utf8'), [ 'TAP version 13', '# module-a', 'ok 1 loaded module a', '# test-a', 'ok 2 module-a loaded in same context', 'ok 3 test ran after module-a was loaded', '', '1..3', '# tests 3', '# pass 3', '', '# ok' ].join('\n') + '\n\n'); }; var ps = tape('-r ./require/a require/test-a.js'); ps.stdout.pipe(concat(tc)); ps.on('exit', function (code) { t.equal(code, 0); }); }); tap.test('requiring multiple modules', function (t) { t.plan(2); var tc = function (rows) { t.same(rows.toString('utf8'), [ 'TAP version 13', '# module-a', 'ok 1 loaded module a', '# module-b', 'ok 2 loaded module b', '# test-a', 'ok 3 module-a loaded in same context', 'ok 4 test ran after module-a was loaded', '# test-b', 'ok 5 module-b loaded in same context', 'ok 6 test ran after module-b was loaded', '', '1..6', '# tests 6', '# pass 6', '', '# ok' ].join('\n') + '\n\n'); }; var ps = tape('-r ./require/a -r ./require/b require/test-a.js require/test-b.js'); ps.stdout.pipe(concat(tc)); ps.on('exit', function (code) { t.equal(code, 0); }); }); function tape(args) { var proc = require('child_process'); var bin = __dirname + '/../bin/tape'; return proc.spawn('node', [bin].concat(args.split(' ')), { cwd: __dirname }); }