Websocket
[VSoRC/.git] / node_modules / node-static / node_modules / optimist / test / _.js
diff --git a/node_modules/node-static/node_modules/optimist/test/_.js b/node_modules/node-static/node_modules/optimist/test/_.js
new file mode 100644 (file)
index 0000000..d9c58b3
--- /dev/null
@@ -0,0 +1,71 @@
+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();
+        });
+    };
+}