_.js (1751B)
1 var spawn = require('child_process').spawn; 2 var test = require('tap').test; 3 4 test('dotSlashEmpty', testCmd('./bin.js', [])); 5 6 test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); 7 8 test('nodeEmpty', testCmd('node bin.js', [])); 9 10 test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); 11 12 test('whichNodeEmpty', function (t) { 13 var which = spawn('which', ['node']); 14 15 which.stdout.on('data', function (buf) { 16 t.test( 17 testCmd(buf.toString().trim() + ' bin.js', []) 18 ); 19 t.end(); 20 }); 21 22 which.stderr.on('data', function (err) { 23 assert.error(err); 24 t.end(); 25 }); 26 }); 27 28 test('whichNodeArgs', function (t) { 29 var which = spawn('which', ['node']); 30 31 which.stdout.on('data', function (buf) { 32 t.test( 33 testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) 34 ); 35 t.end(); 36 }); 37 38 which.stderr.on('data', function (err) { 39 t.error(err); 40 t.end(); 41 }); 42 }); 43 44 function testCmd (cmd, args) { 45 46 return function (t) { 47 var to = setTimeout(function () { 48 assert.fail('Never got stdout data.') 49 }, 5000); 50 51 var oldDir = process.cwd(); 52 process.chdir(__dirname + '/_'); 53 54 var cmds = cmd.split(' '); 55 56 var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); 57 process.chdir(oldDir); 58 59 bin.stderr.on('data', function (err) { 60 t.error(err); 61 t.end(); 62 }); 63 64 bin.stdout.on('data', function (buf) { 65 clearTimeout(to); 66 var _ = JSON.parse(buf.toString()); 67 t.same(_.map(String), args.map(String)); 68 t.end(); 69 }); 70 }; 71 }