arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/www/node_modules/optimist/test/_.js
www/node_modules/optimist/test/_.jsRaw
 1var spawn = require('child_process').spawn;
 2var test = require('tap').test;
 3
 4test('dotSlashEmpty', testCmd('./bin.js', []));
 5
 6test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ]));
 7
 8test('nodeEmpty', testCmd('node bin.js', []));
 9
10test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ]));
11
12test('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
28test('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
44function 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}