diff options
Diffstat (limited to 'node_modules/spawn-wrap/test/abs-shebang.js')
-rw-r--r-- | node_modules/spawn-wrap/test/abs-shebang.js | 68 |
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() +}) |