wallet-core/node_modules/spawn-wrap/test/abs-shebang.js
2017-05-28 00:40:43 +02:00

69 lines
1.6 KiB
JavaScript

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()
})