forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			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();
 | 
						|
        });
 | 
						|
    };
 | 
						|
}
 |