summaryrefslogtreecommitdiff
path: root/node_modules/spawn-sync
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/spawn-sync')
-rw-r--r--node_modules/spawn-sync/.npmignore15
-rw-r--r--node_modules/spawn-sync/.travis.yml8
-rw-r--r--node_modules/spawn-sync/LICENSE19
-rw-r--r--node_modules/spawn-sync/README.md53
-rw-r--r--node_modules/spawn-sync/appveyor.yml29
-rw-r--r--node_modules/spawn-sync/index.js3
-rw-r--r--node_modules/spawn-sync/lib/json-buffer/LICENSE22
-rw-r--r--node_modules/spawn-sync/lib/json-buffer/README.md1
-rw-r--r--node_modules/spawn-sync/lib/json-buffer/index.js56
-rw-r--r--node_modules/spawn-sync/lib/spawn-sync.js89
-rw-r--r--node_modules/spawn-sync/lib/worker.js56
-rw-r--r--node_modules/spawn-sync/package.json55
-rw-r--r--node_modules/spawn-sync/postinstall.js42
-rw-r--r--node_modules/spawn-sync/test/index.js91
-rw-r--r--node_modules/spawn-sync/test/test-empty.js0
-rw-r--r--node_modules/spawn-sync/test/test-spawn-fail.js9
-rw-r--r--node_modules/spawn-sync/test/test-spawn-timeout.js3
-rw-r--r--node_modules/spawn-sync/test/test-spawn.js5
18 files changed, 556 insertions, 0 deletions
diff --git a/node_modules/spawn-sync/.npmignore b/node_modules/spawn-sync/.npmignore
new file mode 100644
index 0000000..a28a9ce
--- /dev/null
+++ b/node_modules/spawn-sync/.npmignore
@@ -0,0 +1,15 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+pids
+logs
+results
+npm-debug.log
+node_modules
+temp
+output.txt
diff --git a/node_modules/spawn-sync/.travis.yml b/node_modules/spawn-sync/.travis.yml
new file mode 100644
index 0000000..5b1a0f2
--- /dev/null
+++ b/node_modules/spawn-sync/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - "0.10"
+ - "0.12"
+ - "4"
+ - "5"
+os:
+ - linux
diff --git a/node_modules/spawn-sync/LICENSE b/node_modules/spawn-sync/LICENSE
new file mode 100644
index 0000000..27cc9f3
--- /dev/null
+++ b/node_modules/spawn-sync/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 Forbes Lindesay
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. \ No newline at end of file
diff --git a/node_modules/spawn-sync/README.md b/node_modules/spawn-sync/README.md
new file mode 100644
index 0000000..ada990d
--- /dev/null
+++ b/node_modules/spawn-sync/README.md
@@ -0,0 +1,53 @@
+# spawn-sync
+
+Polyfill for `child_process.spawnSync`.
+
+On iojs and node >= 0.12 it will just export the built in `child_process.spawnSync`. On platforms that support compiling native modules it uses the [thread-sleep](https://github.com/ForbesLindesay/thread-sleep) module to wait for an output file to exist in a tight loop. In this way it gains excellent cross platform support, but don't expect it to be efficient on all platforms.
+
+[![Tests Status](https://img.shields.io/travis/ForbesLindesay/spawn-sync/master.svg)](https://travis-ci.org/ForbesLindesay/spawn-sync)
+[![Dependency Status](https://img.shields.io/david/ForbesLindesay/spawn-sync.svg)](https://david-dm.org/ForbesLindesay/spawn-sync)
+[![NPM version](https://img.shields.io/npm/v/spawn-sync.svg)](https://www.npmjs.com/package/spawn-sync)
+
+## Installation
+
+ npm install spawn-sync
+
+If this fails, you can try one of the following things:
+
+1. Some package managers made a stupid decision to rename the `node` executable to `nodejs` for their platform. This breaks compatibility with lots of modules. If you normally use `nodejs` instead of `node`, you should check out http://stackoverflow.com/questions/18130164/nodejs-vs-node-on-ubuntu-12-04 for possible fixes.
+
+2. You can install using `--unsafe-perm`, which will fix any permissions issues.
+
+ npm install --unsafe-perm spawn-sync
+
+3. You can install using `--ignore-scripts`, which will skip native compilation. You'll get a warning if you try to require the module, but everything should still work.
+
+ npm install --ignore-scripts spawn-sync
+
+4. You can try [updating npm](https://docs.npmjs.com/getting-started/installing-node), since this seems to fail on some older versions of npm:
+
+ sudo npm install npm -g
+
+5. You can upgrade to the latest version of node or iojs. This will make native compilation unnecessary. You can then use `--ignore-scripts` without getting a warning if you still have trouble.
+
+## Usage
+
+```js
+var spawnSync = require('spawn-sync');
+
+var result = spawnSync('node',
+ ['filename.js'],
+ {input: 'write this to stdin'});
+
+if (result.status !== 0) {
+ process.stderr.write(result.stderr);
+ process.exit(result.status);
+} else {
+ process.stdout.write(result.stdout);
+ process.stderr.write(result.stderr);
+}
+```
+
+## License
+
+ MIT
diff --git a/node_modules/spawn-sync/appveyor.yml b/node_modules/spawn-sync/appveyor.yml
new file mode 100644
index 0000000..148a0cb
--- /dev/null
+++ b/node_modules/spawn-sync/appveyor.yml
@@ -0,0 +1,29 @@
+# http://www.appveyor.com/docs/appveyor-yml
+
+# Test against these versions of Node.js.
+environment:
+ matrix:
+ - nodejs_version: "0.10"
+ - nodejs_version: "0.12"
+
+# Install scripts. (runs after repo cloning)
+install:
+ # Get the latest stable version of Node 0.STABLE.latest
+ - ps: Install-Product node $env:nodejs_version
+ # Typical npm stuff.
+ - npm install
+
+# Post-install test scripts.
+test_script:
+ # Output useful info for debugging.
+ - node --version
+ - npm --version
+ # We test multiple Windows shells
+ - ps: "npm test # PowerShell" # Pass comment to PS for easier debugging
+ - cmd: npm test
+
+# Don't actually build using MSBuild
+build: off
+
+# Set build version format here instead of in the admin panel.
+version: "{build}"
diff --git a/node_modules/spawn-sync/index.js b/node_modules/spawn-sync/index.js
new file mode 100644
index 0000000..d779983
--- /dev/null
+++ b/node_modules/spawn-sync/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = require('child_process').spawnSync || require('./lib/spawn-sync');
diff --git a/node_modules/spawn-sync/lib/json-buffer/LICENSE b/node_modules/spawn-sync/lib/json-buffer/LICENSE
new file mode 100644
index 0000000..f04be4e
--- /dev/null
+++ b/node_modules/spawn-sync/lib/json-buffer/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2013 Dominic Tarr
+
+Permission is hereby granted, free of charge,
+to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to
+deal in the Software without restriction, including
+without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom
+the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/node_modules/spawn-sync/lib/json-buffer/README.md b/node_modules/spawn-sync/lib/json-buffer/README.md
new file mode 100644
index 0000000..5fd5b29
--- /dev/null
+++ b/node_modules/spawn-sync/lib/json-buffer/README.md
@@ -0,0 +1 @@
+Code based on https://github.com/dominictarr/json-buffer but adapted to be simpler to run in a purely node.js environment \ No newline at end of file
diff --git a/node_modules/spawn-sync/lib/json-buffer/index.js b/node_modules/spawn-sync/lib/json-buffer/index.js
new file mode 100644
index 0000000..d79314e
--- /dev/null
+++ b/node_modules/spawn-sync/lib/json-buffer/index.js
@@ -0,0 +1,56 @@
+
+'use strict';
+
+//TODO: handle reviver/dehydrate function like normal
+//and handle indentation, like normal.
+//if anyone needs this... please send pull request.
+
+exports.stringify = function stringify (o) {
+ if(o && Buffer.isBuffer(o))
+ return JSON.stringify(':base64:' + o.toString('base64'))
+
+ if(o && o.toJSON)
+ o = o.toJSON()
+
+ if(o && 'object' === typeof o) {
+ var s = ''
+ var array = Array.isArray(o)
+ s = array ? '[' : '{'
+ var first = true
+
+ for(var k in o) {
+ var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])
+ if(Object.hasOwnProperty.call(o, k) && !ignore) {
+ if(!first)
+ s += ','
+ first = false
+ if (array) {
+ s += stringify(o[k])
+ } else if (o[k] !== void(0)) {
+ s += stringify(k) + ':' + stringify(o[k])
+ }
+ }
+ }
+
+ s += array ? ']' : '}'
+
+ return s
+ } else if ('string' === typeof o) {
+ return JSON.stringify(/^:/.test(o) ? ':' + o : o)
+ } else if ('undefined' === typeof o) {
+ return 'null';
+ } else
+ return JSON.stringify(o)
+}
+
+exports.parse = function (s) {
+ return JSON.parse(s, function (key, value) {
+ if('string' === typeof value) {
+ if(/^:base64:/.test(value))
+ return new Buffer(value.substring(8), 'base64')
+ else
+ return /^:/.test(value) ? value.substring(1) : value
+ }
+ return value
+ })
+} \ No newline at end of file
diff --git a/node_modules/spawn-sync/lib/spawn-sync.js b/node_modules/spawn-sync/lib/spawn-sync.js
new file mode 100644
index 0000000..5dbc530
--- /dev/null
+++ b/node_modules/spawn-sync/lib/spawn-sync.js
@@ -0,0 +1,89 @@
+'use strict';
+
+var path = require('path');
+var fs = require('fs');
+var tmpdir = require('os').tmpdir || require('os-shim').tmpdir;
+var cp = require('child_process');
+var sleep;
+var JSON = require('./json-buffer');
+try {
+ sleep = require('try-thread-sleep');
+} catch (ex) {
+ console.warn('Native thread-sleep not available.');
+ console.warn('This will result in much slower performance, but it will still work.');
+ console.warn('You should re-install spawn-sync or upgrade to the lastest version of node if possible.');
+ console.warn('Check ' + path.resolve(__dirname, '../error.log') + ' for more details');
+ sleep = function () {};
+}
+
+var temp = path.normalize(path.join(tmpdir(), 'spawn-sync'));
+
+function randomFileName(name) {
+ function randomHash(count) {
+ if (count === 1)
+ return parseInt(16*Math.random(), 10).toString(16);
+ else {
+ var hash = '';
+ for (var i=0; i<count; i++)
+ hash += randomHash(1);
+ return hash;
+ }
+ }
+
+ return temp + '_' + name + '_' + String(process.pid) + randomHash(20);
+}
+function unlink(filename) {
+ try {
+ fs.unlinkSync(filename);
+ } catch (ex) {
+ if (ex.code !== 'ENOENT') throw ex;
+ }
+}
+function tryUnlink(filename) {
+ // doesn't matter too much if we fail to delete temp files
+ try {
+ fs.unlinkSync(filename);
+ } catch(e) {}
+}
+
+function invoke(cmd) {
+ // location to keep flag for busy waiting fallback
+ var finished = randomFileName("finished");
+ unlink(finished);
+ if (process.platform === 'win32') {
+ cmd = cmd + '& echo "finished" > ' + finished;
+ } else {
+ cmd = cmd + '; echo "finished" > ' + finished;
+ }
+ cp.exec(cmd);
+
+ while (!fs.existsSync(finished)) {
+ // busy wait
+ sleep(200);
+ }
+
+ tryUnlink(finished);
+
+ return 0;
+}
+
+module.exports = spawnSyncFallback;
+function spawnSyncFallback(cmd, commandArgs, options) {
+ var args = [];
+ for (var i = 0; i < arguments.length; i++) {
+ args.push(arguments[i]);
+ }
+
+ // node.js script to run the command
+ var worker = path.normalize(__dirname + '/worker.js');
+ // location to store arguments
+ var input = randomFileName('input');
+ var output = randomFileName('output');
+ unlink(output);
+
+ fs.writeFileSync(input, JSON.stringify(args));
+ invoke('"' + process.execPath + '" "' + worker + '" "' + input + '" "' + output + '"');
+ var res = JSON.parse(fs.readFileSync(output, 'utf8'));
+ tryUnlink(input);tryUnlink(output);
+ return res;
+}
diff --git a/node_modules/spawn-sync/lib/worker.js b/node_modules/spawn-sync/lib/worker.js
new file mode 100644
index 0000000..3e050ac
--- /dev/null
+++ b/node_modules/spawn-sync/lib/worker.js
@@ -0,0 +1,56 @@
+'use strict';
+
+var cp = require('child_process');
+var fs = require('fs');
+var concat = require('concat-stream');
+var JSON = require('./json-buffer');
+
+var inputFile = process.argv[2];
+var outputFile = process.argv[3];
+
+var args = JSON.parse(fs.readFileSync(inputFile, 'utf8'));
+function output(result) {
+ fs.writeFileSync(outputFile, JSON.stringify(result));
+}
+
+var child = cp.spawn.apply(cp, args);
+var options = (args[2] && typeof args[2] === 'object') ?
+ args[2] :
+ (args[1] && typeof args[1] === 'object' && !Array.isArray(args[1])) ?
+ args[1] :
+ {};
+
+var complete = false;
+var stdout, stderr;
+child.stdout && child.stdout.pipe(concat(function (buf) {
+ stdout = buf.length ? buf : new Buffer(0);
+}));
+child.stderr && child.stderr.pipe(concat(function (buf) {
+ stderr = buf.length ? buf : new Buffer(0);
+}));
+child.on('error', function (err) {
+ output({pid: child.pid, error: err.message});
+});
+child.on('close', function (status, signal) {
+ if (options.encoding && options.encoding !== 'buffer') {
+ stdout = stdout.toString(options.encoding);
+ stderr = stderr.toString(options.encoding);
+ }
+ output({
+ pid: child.pid,
+ output: [null, stdout, stderr],
+ stdout: stdout,
+ stderr: stderr,
+ status: status,
+ signal: signal
+ });
+});
+
+if (options.timeout && typeof options.timeout === 'number') {
+ setTimeout(function () {
+ child.kill(options.killSignal || 'SIGTERM');
+ }, options.timeout);
+}
+if (options.input && (typeof options.input === 'string' || Buffer.isBuffer(options.input))) {
+ child.stdin.end(options.input);
+}
diff --git a/node_modules/spawn-sync/package.json b/node_modules/spawn-sync/package.json
new file mode 100644
index 0000000..ac280e8
--- /dev/null
+++ b/node_modules/spawn-sync/package.json
@@ -0,0 +1,55 @@
+{
+ "_from": "spawn-sync@^1.0.1",
+ "_id": "[email protected]",
+ "_inBundle": false,
+ "_integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=",
+ "_location": "/spawn-sync",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "spawn-sync@^1.0.1",
+ "name": "spawn-sync",
+ "escapedName": "spawn-sync",
+ "rawSpec": "^1.0.1",
+ "saveSpec": null,
+ "fetchSpec": "^1.0.1"
+ },
+ "_requiredBy": [
+ "/sync-request"
+ ],
+ "_resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz",
+ "_shasum": "b00799557eb7fb0c8376c29d44e8a1ea67e57476",
+ "_spec": "spawn-sync@^1.0.1",
+ "_where": "E:\\Documents\\GitHub\\s5nical\\node_modules\\sync-request",
+ "author": {
+ "name": "ForbesLindesay"
+ },
+ "bugs": {
+ "url": "https://github.com/ForbesLindesay/spawn-sync/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "concat-stream": "^1.4.7",
+ "os-shim": "^0.1.2"
+ },
+ "deprecated": false,
+ "description": "Prollyfill for child_process.spawnSync",
+ "devDependencies": {
+ "try-thread-sleep": "^1.0.0"
+ },
+ "homepage": "https://github.com/ForbesLindesay/spawn-sync#readme",
+ "keywords": [],
+ "license": "MIT",
+ "name": "spawn-sync",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/ForbesLindesay/spawn-sync.git"
+ },
+ "scripts": {
+ "postinstall": "node postinstall",
+ "prepublish": "node postinstall",
+ "test": "node test/index.js"
+ },
+ "version": "1.0.15"
+}
diff --git a/node_modules/spawn-sync/postinstall.js b/node_modules/spawn-sync/postinstall.js
new file mode 100644
index 0000000..322260e
--- /dev/null
+++ b/node_modules/spawn-sync/postinstall.js
@@ -0,0 +1,42 @@
+'use strict';
+
+function onError(err) {
+ try {
+ var str = '' + (err ? (err.stack || err.message || err) : 'null');
+ require('fs').writeFileSync(__dirname + '/error.log', str);
+ } catch (ex) {
+ }
+}
+try {
+ var fs = require('fs');
+ var cp = require('child_process');
+ var REQUIRES_UPDATE = false;
+ var pkg = JSON.parse(fs.readFileSync(__dirname + '/package.json', 'utf8'));
+ if (cp.spawnSync || __dirname.indexOf('node_modules') === -1) {
+ if(pkg.dependencies['try-thread-sleep']){
+ delete pkg.dependencies['try-thread-sleep'];
+ REQUIRES_UPDATE = true;
+ }
+ } else {
+ if(!pkg.dependencies['try-thread-sleep']){
+ pkg.dependencies['try-thread-sleep'] = "^1.0.0";
+ REQUIRES_UPDATE = true;
+ console.log('Installing native dependencies (this may take up to a minute)');
+ }
+ }
+ if (REQUIRES_UPDATE && __dirname.indexOf('node_modules') !== -1) {
+ fs.writeFileSync(__dirname + '/package.json', JSON.stringify(pkg, null, ' '));
+ cp.exec((process.env.npm_execpath ? ('"' + process.argv[0] + '" "' + process.env.npm_execpath + '"') : 'npm') +
+ ' install --production', {
+ cwd: __dirname
+ }, function (err) {
+ if (err) onError(err);
+ process.exit(0);
+ });
+ setTimeout(function () {
+ process.exit(0);
+ }, 60000);
+ }
+} catch (ex) {
+ onError(ex);
+} \ No newline at end of file
diff --git a/node_modules/spawn-sync/test/index.js b/node_modules/spawn-sync/test/index.js
new file mode 100644
index 0000000..cc12854
--- /dev/null
+++ b/node_modules/spawn-sync/test/index.js
@@ -0,0 +1,91 @@
+'use strict';
+
+var assert = require('assert');
+var vm = require('vm');
+var fs = require('fs');
+var path = require('path');
+var sleep = require('try-thread-sleep');
+
+function testSpawn(spawn) {
+ var result = spawn("node", [__dirname + '/test-spawn.js'], {input: 'my-output'});
+ assert(result.status === 0);
+ assert(Buffer.isBuffer(result.stdout));
+ assert(Buffer.isBuffer(result.stderr));
+ assert(result.stdout.toString() === 'output written');
+ assert(result.stderr.toString() === 'error log exists');
+ assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
+ fs.unlinkSync(__dirname + '/output.txt');
+
+ var result = spawn("node", [__dirname + '/test-spawn.js'], {
+ input: 'my-output',
+ encoding: 'utf-8'
+ });
+ assert(result.status === 0);
+ assert(result.stdout === 'output written');
+ assert(result.stderr === 'error log exists');
+ assert.deepEqual(result.output, [null, 'output written', 'error log exists']);
+ assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
+ fs.unlinkSync(__dirname + '/output.txt');
+
+ var result = spawn("node", [__dirname + '/test-spawn-fail.js'], {input: 'my-output'});
+ assert(result.status === 13);
+ assert(Buffer.isBuffer(result.stdout));
+ assert(Buffer.isBuffer(result.stderr));
+ assert(result.stdout.toString() === 'output written');
+ assert(result.stderr.toString() === 'error log exists');
+ assert(fs.readFileSync(__dirname + '/output.txt', 'utf8') === 'my-output');
+ fs.unlinkSync(__dirname + '/output.txt');
+
+ var result = spawn("node", [__dirname + '/test-empty.js'], {input: 'my-output'});
+ assert(result.status === 0);
+ assert(Buffer.isBuffer(result.stdout));
+ assert(Buffer.isBuffer(result.stderr));
+ assert(result.stdout.toString() === '');
+ assert(result.stderr.toString() === '');
+
+ var result = spawn("node", [__dirname + '/test-empty.js'], { stdio: ['pipe', 'ignore', 'pipe']});
+ assert(result.status === 0);
+ assert(Buffer.isBuffer(result.stderr));
+ assert(result.stdout == null);
+ assert(result.stderr.toString() === '');
+
+ var result = spawn("node", [__dirname + '/test-empty.js'], { stdio: ['pipe', 'pipe', 'ignore']});
+ assert(result.status === 0);
+ assert(Buffer.isBuffer(result.stdout));
+ assert(result.stdout.toString() === '');
+ assert(result.stderr == null);
+
+ var result = spawn("node", [__dirname + '/test-empty.js'], { stdio: ['ignore', 'pipe', 'pipe']});
+ assert(result.status === 0);
+ assert(Buffer.isBuffer(result.stdout));
+ assert(Buffer.isBuffer(result.stderr));
+ assert(result.stdout.toString() === '');
+ assert(result.stderr.toString() === '');
+
+ // This suprisingly fails for the official API
+ /*
+ var start = Date.now();
+ var result = spawn("node", [__dirname + '/test-spawn-timeout.js'], {timeout: 100});
+ console.dir(result);
+ var end = Date.now();
+ assert((end - start) < 200);
+ */
+
+ console.log('test pass');
+}
+
+if (sleep.native) {
+ console.log('Using native thread-sleep');
+} else {
+ console.log('Using busy waiting');
+}
+if (require('child_process').spawnSync) {
+ console.log('# Test built in node API');
+ testSpawn(require('child_process').spawnSync);
+} else {
+ console.log('# SKIP Test built in node API');
+}
+console.log('# Test fallback operation');
+testSpawn(require('../lib/spawn-sync'));
+
+console.log('All tests passed');
diff --git a/node_modules/spawn-sync/test/test-empty.js b/node_modules/spawn-sync/test/test-empty.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/node_modules/spawn-sync/test/test-empty.js
diff --git a/node_modules/spawn-sync/test/test-spawn-fail.js b/node_modules/spawn-sync/test/test-spawn-fail.js
new file mode 100644
index 0000000..4331a01
--- /dev/null
+++ b/node_modules/spawn-sync/test/test-spawn-fail.js
@@ -0,0 +1,9 @@
+'use strict';
+
+process.stdin.pipe(require('fs').createWriteStream(__dirname + '/output.txt')).on('close', function () {
+ setTimeout(function () {
+ process.exit(13);
+ }, 500);
+});
+process.stdout.write('output written');
+process.stderr.write('error log exists');
diff --git a/node_modules/spawn-sync/test/test-spawn-timeout.js b/node_modules/spawn-sync/test/test-spawn-timeout.js
new file mode 100644
index 0000000..226fc21
--- /dev/null
+++ b/node_modules/spawn-sync/test/test-spawn-timeout.js
@@ -0,0 +1,3 @@
+setTimeout(function () {
+ // staying alive
+}, 60000); \ No newline at end of file
diff --git a/node_modules/spawn-sync/test/test-spawn.js b/node_modules/spawn-sync/test/test-spawn.js
new file mode 100644
index 0000000..469a080
--- /dev/null
+++ b/node_modules/spawn-sync/test/test-spawn.js
@@ -0,0 +1,5 @@
+'use strict';
+
+process.stdin.pipe(require('fs').createWriteStream(__dirname + '/output.txt'));
+process.stdout.write('output written');
+process.stderr.write('error log exists'); \ No newline at end of file