aboutsummaryrefslogtreecommitdiff
path: root/node_modules/spawn-wrap/test/abs-shebang.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/spawn-wrap/test/abs-shebang.js')
-rw-r--r--node_modules/spawn-wrap/test/abs-shebang.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/node_modules/spawn-wrap/test/abs-shebang.js b/node_modules/spawn-wrap/test/abs-shebang.js
new file mode 100644
index 000000000..f254683df
--- /dev/null
+++ b/node_modules/spawn-wrap/test/abs-shebang.js
@@ -0,0 +1,68 @@
+var path = require('path')
+var fs = require('fs')
+var spawn = require('child_process').spawn
+var t = require('tap')
+var node = process.execPath
+var wrap = require.resolve('./fixtures/wrap.js')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var fs = require('fs')
+
+if (process.platform === 'win32') {
+ t.plan(0, 'No proper shebang support on windows, so skip this')
+ process.exit(0)
+}
+
+var expect =
+ 'before in shim\n' +
+ 'shebang main foo,bar\n' +
+ 'after in shim\n' +
+ 'before in shim\n' +
+ 'shebang main foo,bar\n' +
+ 'after in shim\n'
+
+var fixdir = path.resolve(__dirname, 'fixtures', 'shebangs')
+
+t.test('setup', function (t) {
+ rimraf.sync(fixdir)
+ mkdirp.sync(fixdir)
+ t.end()
+})
+
+t.test('absolute', function (t) {
+ var file = path.resolve(fixdir, 'absolute.js')
+ runTest(file, process.execPath, t)
+})
+
+t.test('env', function (t) {
+ var file = path.resolve(fixdir, 'env.js')
+ runTest(file, '/usr/bin/env node', t)
+})
+
+function runTest (file, shebang, t) {
+ var content = '#!' + shebang + '\n' +
+ 'console.log("shebang main " + process.argv.slice(2))\n'
+ fs.writeFileSync(file, content, 'utf8')
+ fs.chmodSync(file, '0755')
+ var child = spawn(node, [wrap, file, 'foo', 'bar'])
+ var out = ''
+ var err = ''
+ child.stdout.on('data', function (c) {
+ out += c
+ })
+ child.stderr.on('data', function (c) {
+ err += c
+ })
+ child.on('close', function (code, signal) {
+ t.equal(code, 0)
+ t.equal(signal, null)
+ t.equal(out, expect)
+ // console.error(err)
+ t.end()
+ })
+}
+
+t.test('cleanup', function (t) {
+ rimraf.sync(fixdir)
+ t.end()
+})