l0bsterssg

node.js static responsive blog post generator
Log | Files | Refs | README

_.js (1751B)


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