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