|
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();
|
|
});
|
|
};
|
|
}
|