UNPKG

npm-run

Version:

Run executables for locally-installed packages without using ./node_modules/.bin

95 lines (84 loc) 2.19 kB
'use strict' var test = require('tape') var bl = require('bl') var path = require('path') var npmRun = require('../') var level0 = path.join(__dirname, 'fixtures', 'level0') var level1 = path.join(level0, 'node_modules', 'level1') var level2 = path.join(level1, 'node_modules', 'level2') var level = [level0, level1, level2] test('spawn', function (t) { t.plan(5) var child = npmRun.spawn( 'level1', 'here are some arguments'.split(' '), {cwd: level[0]} ) var stdout = bl(function (err, data) { t.ifError(err) t.equal(data.toString().trim(), 'level1') }) var stderr = bl(function (err, data) { t.ifError(err) t.equal(data.toString().trim(), 'here are some arguments') }) child.stdout.pipe(stdout) child.stderr.pipe(stderr) child.on('close', function (errCode) { t.equal(errCode, 0) }) }) test('spawn nested', function (t) { t.plan(5) var child = npmRun.spawn( 'level1', 'here are some arguments'.split(' '), {cwd: level[1]} ) var stdout = bl(function (err, data) { t.ifError(err) t.equal(data.toString().trim(), 'level1') }) var stderr = bl(function (err, data) { t.ifError(err) t.equal(data.toString().trim(), 'here are some arguments') }) child.stdout.pipe(stdout) child.stderr.pipe(stderr) child.on('close', function (errCode) { t.equal(errCode, 0) }) }) test('spawn bad command', function (t) { var badPath = 'not-exist-adsjk' npmRun.spawn( badPath, 'here are some arguments'.split(' '), {cwd: level[1]} ).on('error', function (err) { t.ok(err, 'has error') t.equal(err.code, 'ENOENT') t.end() }) }) test('spawnSync', function (t) { var child = npmRun.spawnSync( 'level1', 'here are some arguments'.split(' '), {cwd: level[0]} ) t.equal(child.stdout.toString().trim(), 'level1') t.equal(child.stderr.toString().trim(), 'here are some arguments') t.equal(child.status, 0) t.end() }) test('spawnSync bad command', function (t) { var badPath = 'not-exist-adsjk' var child = npmRun.spawnSync( badPath, 'here are some arguments'.split(' '), {cwd: level[1]} ) t.notEqual(child.status, 0) t.end() })