72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var spawn = require('child_process').spawn; | ||
|  | var test = require('tap').test; | ||
|  | 
 | ||
|  | test('dotSlashEmpty', testCmd('./bin.js', [])); | ||
|  | 
 | ||
|  | test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); | ||
|  | 
 | ||
|  | test('nodeEmpty', testCmd('node bin.js', [])); | ||
|  | 
 | ||
|  | test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); | ||
|  | 
 | ||
|  | test('whichNodeEmpty', function (t) { | ||
|  |     var which = spawn('which', ['node']); | ||
|  |      | ||
|  |     which.stdout.on('data', function (buf) { | ||
|  |         t.test( | ||
|  |             testCmd(buf.toString().trim() + ' bin.js', []) | ||
|  |         ); | ||
|  |         t.end(); | ||
|  |     }); | ||
|  |      | ||
|  |     which.stderr.on('data', function (err) { | ||
|  |         assert.error(err); | ||
|  |         t.end(); | ||
|  |     }); | ||
|  | }); | ||
|  | 
 | ||
|  | test('whichNodeArgs', function (t) { | ||
|  |     var which = spawn('which', ['node']); | ||
|  | 
 | ||
|  |     which.stdout.on('data', function (buf) { | ||
|  |         t.test( | ||
|  |             testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) | ||
|  |         ); | ||
|  |         t.end(); | ||
|  |     }); | ||
|  |      | ||
|  |     which.stderr.on('data', function (err) { | ||
|  |         t.error(err); | ||
|  |         t.end(); | ||
|  |     }); | ||
|  | }); | ||
|  | 
 | ||
|  | function testCmd (cmd, args) { | ||
|  | 
 | ||
|  |     return function (t) { | ||
|  |         var to = setTimeout(function () { | ||
|  |             assert.fail('Never got stdout data.') | ||
|  |         }, 5000); | ||
|  |          | ||
|  |         var oldDir = process.cwd(); | ||
|  |         process.chdir(__dirname + '/_'); | ||
|  |          | ||
|  |         var cmds = cmd.split(' '); | ||
|  |          | ||
|  |         var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); | ||
|  |         process.chdir(oldDir); | ||
|  |          | ||
|  |         bin.stderr.on('data', function (err) { | ||
|  |             t.error(err); | ||
|  |             t.end(); | ||
|  |         }); | ||
|  |          | ||
|  |         bin.stdout.on('data', function (buf) { | ||
|  |             clearTimeout(to); | ||
|  |             var _ = JSON.parse(buf.toString()); | ||
|  |             t.same(_.map(String), args.map(String)); | ||
|  |             t.end(); | ||
|  |         }); | ||
|  |     }; | ||
|  | } |