From 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Sun, 28 May 2017 00:38:50 +0200 Subject: add linting (and some initial fixes) --- node_modules/spawn-wrap/test/basic.js | 419 ++++++++++++++++++++++++++++++++++ 1 file changed, 419 insertions(+) create mode 100644 node_modules/spawn-wrap/test/basic.js (limited to 'node_modules/spawn-wrap/test/basic.js') diff --git a/node_modules/spawn-wrap/test/basic.js b/node_modules/spawn-wrap/test/basic.js new file mode 100644 index 000000000..969310088 --- /dev/null +++ b/node_modules/spawn-wrap/test/basic.js @@ -0,0 +1,419 @@ +var sw = require('../') +var isWindows = require('../lib/is-windows.js')() +var winNoShebang = isWindows && 'no shebang execution on windows' +var winNoSig = isWindows && 'no signals get through cmd' + +var onExit = require('signal-exit') +var cp = require('child_process') +var fixture = require.resolve('./fixtures/script.js') +var npmFixture = require.resolve('./fixtures/npm') +var fs = require('fs') +var path = require('path') + +if (process.argv[2] === 'parent') { + // hang up once + process.once('SIGHUP', function onHup () { + console.log('SIGHUP') + }) + // handle sigints forever + process.on('SIGINT', function onInt () { + console.log('SIGINT') + }) + onExit(function (code, signal) { + console.log('EXIT %j', [code, signal]) + }) + var argv = process.argv.slice(3).map(function (arg) { + if (arg === fixture) { + return '{{FIXTURE}}' + } + return arg + }) + console.log('WRAP %j', process.execArgv.concat(argv)) + sw.runMain() + return +} + +var t = require('tap') +var unwrap = sw([__filename, 'parent']) + +var expect = 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'EXIT [0,null]\n' + +// dummy for node v0.10 +if (!cp.spawnSync) { + cp.spawnSync = function () { + return { + status: 0, + signal: null, + stdout: expect + } + } +} + +t.test('spawn execPath', function (t) { + t.plan(4) + + t.test('basic', function (t) { + var child = cp.spawn(process.execPath, [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + t.end() + }) + }) + + t.test('basic sync', function (t) { + var child = cp.spawnSync(process.execPath, [fixture, 'xyz']) + + t.equal(child.status, 0) + t.equal(child.signal, null) + t.equal(child.stdout.toString(), expect) + t.end() + }) + + t.test('SIGINT', { skip: winNoSig }, function (t) { + var child = cp.spawn(process.execPath, [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.stdout.once('data', function () { + child.kill('SIGINT') + }) + child.stderr.on('data', function (t) { + console.error(t) + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGINT\n' + + 'EXIT [0,null]\n') + t.end() + }) + }) + + t.test('SIGHUP', { skip: winNoSig }, function (t) { + var child = cp.spawn(process.execPath, [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + child.kill('SIGHUP') + }) + child.on('close', function (code, signal) { + t.equal(signal, 'SIGHUP') + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGHUP\n' + + 'EXIT [null,"SIGHUP"]\n') + t.end() + }) + }) +}) + +t.test('spawn node', function (t) { + t.plan(4) + + t.test('basic', function (t) { + var child = cp.spawn('node', [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + t.end() + }) + }) + + t.test('basic sync', function (t) { + var child = cp.spawnSync('node', [fixture, 'xyz']) + + t.equal(child.status, 0) + t.equal(child.signal, null) + t.equal(child.stdout.toString(), expect) + t.end() + }) + + t.test('SIGINT', { skip: winNoSig }, function (t) { + var child = cp.spawn('node', [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.stdout.once('data', function () { + child.kill('SIGINT') + }) + child.stderr.on('data', function (t) { + console.error(t) + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGINT\n' + + 'EXIT [0,null]\n') + t.end() + }) + }) + + t.test('SIGHUP', { skip: winNoSig }, function (t) { + var child = cp.spawn('node', [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + child.kill('SIGHUP') + }) + child.on('close', function (code, signal) { + t.equal(signal, 'SIGHUP') + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGHUP\n' + + 'EXIT [null,"SIGHUP"]\n') + t.end() + }) + }) +}) + +t.test('exec execPath', function (t) { + t.plan(4) + + t.test('basic', function (t) { + var opt = isWindows ? null : { shell: '/bin/bash' } + var child = cp.exec(process.execPath + ' ' + fixture + ' xyz', opt) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + t.end() + }) + }) + + t.test('execPath wrapped with quotes', function (t) { + var opt = isWindows ? null : { shell: '/bin/bash' } + var child = cp.exec(JSON.stringify(process.execPath) + ' ' + fixture + + ' xyz', opt) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + t.end() + }) + }) + + t.test('SIGINT', { skip: winNoSig }, function (t) { + var child = cp.exec(process.execPath + ' ' + fixture + ' xyz', { shell: '/bin/bash' }) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.stdout.once('data', function () { + child.kill('SIGINT') + }) + child.stderr.on('data', function (t) { + console.error(t) + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGINT\n' + + 'EXIT [0,null]\n') + t.end() + }) + }) + + t.test('SIGHUP', { skip: winNoSig }, function (t) { + var child = cp.exec(process.execPath + ' ' + fixture + ' xyz', { shell: '/bin/bash' }) + + var out = '' + child.stdout.on('data', function (c) { + out += c + child.kill('SIGHUP') + }) + child.on('close', function (code, signal) { + t.equal(signal, 'SIGHUP') + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGHUP\n' + + 'EXIT [null,"SIGHUP"]\n') + t.end() + }) + }) +}) + +t.test('exec shebang', { skip: winNoShebang }, function (t) { + t.plan(3) + + t.test('basic', function (t) { + var child = cp.exec(fixture + ' xyz', { shell: '/bin/bash' }) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + t.end() + }) + }) + + t.test('SIGHUP', function (t) { + var child = cp.exec(fixture + ' xyz', { shell: '/bin/bash' }) + + var out = '' + child.stdout.on('data', function (c) { + out += c + child.kill('SIGHUP') + }) + child.on('close', function (code, signal) { + t.equal(signal, 'SIGHUP') + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGHUP\n' + + 'EXIT [null,"SIGHUP"]\n') + t.end() + }) + }) + + t.test('SIGINT', function (t) { + var child = cp.exec(fixture + ' xyz', { shell: '/bin/bash' }) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.stdout.once('data', function () { + child.kill('SIGINT') + }) + child.stderr.on('data', function (t) { + console.error(t) + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, 'WRAP ["{{FIXTURE}}","xyz"]\n' + + '[]\n' + + '["xyz"]\n' + + 'SIGINT\n' + + 'EXIT [0,null]\n') + t.end() + }) + }) +}) + +// see: https://github.com/bcoe/nyc/issues/190 +t.test('Node 5.8.x + npm 3.7.x - spawn', { skip: winNoShebang }, function (t) { + var npmdir = path.dirname(npmFixture) + process.env.PATH = npmdir + ':' + (process.env.PATH || '') + var child = cp.spawn('npm', ['xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.true(~out.indexOf('xyz')) + t.end() + }) +}) + +t.test('Node 5.8.x + npm 3.7.x - shell', { skip: winNoShebang }, function (t) { + var npmdir = path.dirname(npmFixture) + process.env.PATH = npmdir + ':' + (process.env.PATH || '') + var child = cp.exec('npm xyz') + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.true(~out.indexOf('xyz')) + t.end() + }) +}) + +t.test('--harmony', function (t) { + var node = process.execPath + var child = cp.spawn(node, ['--harmony', fixture, 'xyz']) + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, 'WRAP ["--harmony","{{FIXTURE}}","xyz"]\n' + + '["--harmony"]\n' + + '["xyz"]\n' + + 'EXIT [0,null]\n') + t.end() + }) +}) + +t.test('node exe with different name', function(t) { + var fp = path.join(__dirname, 'fixtures', 'exething.exe') + var data = fs.readFileSync(process.execPath) + fs.writeFileSync(fp, data) + fs.chmodSync(fp, '0775') + var child = cp.spawn(process.execPath, [fixture, 'xyz']) + + var out = '' + child.stdout.on('data', function (c) { + out += c + }) + child.on('close', function (code, signal) { + t.equal(code, 0) + t.equal(signal, null) + t.equal(out, expect) + fs.unlinkSync(fp) + t.end() + }) +}) + +t.test('unwrap', function (t) { + unwrap() + t.end() +}) -- cgit v1.2.3