1var fs = require('graceful-fs') 2var path = require('path') 3 4var mkdirp = require('mkdirp') 5var test = require('tap').test 6 7var common = require('../common-tap') 8 9var pkg = common.pkg 10 11var EXEC_OPTS = { cwd: pkg } 12 13var json = { 14 name: 'startstop', 15 version: '1.2.3', 16 scripts: { 17 start: 'node -e "console.log(\'start\')"', 18 stop: 'node -e "console.log(\'stop\')"' 19 } 20} 21 22function testOutput (t, command, er, code, stdout, stderr) { 23 t.notOk(code, 'npm ' + command + ' exited with code 0') 24 25 if (stderr) throw new Error('npm ' + command + ' stderr: ' + stderr.toString()) 26 27 stdout = stdout.trim().split(/\n|\r/) 28 stdout = stdout[stdout.length - 1] 29 t.equal(stdout, command) 30 t.end() 31} 32 33test('setup', function (t) { 34 mkdirp.sync(pkg) 35 fs.writeFileSync( 36 path.join(pkg, 'package.json'), 37 JSON.stringify(json, null, 2) 38 ) 39 t.end() 40}) 41 42test('npm start', function (t) { 43 common.npm(['start'], EXEC_OPTS, testOutput.bind(null, t, 'start')) 44}) 45 46test('npm stop', function (t) { 47 common.npm(['stop'], EXEC_OPTS, testOutput.bind(null, t, 'stop')) 48}) 49 50test('npm restart', function (t) { 51 common.npm(['restart'], EXEC_OPTS, function (er, c, stdout) { 52 if (er) throw er 53 54 var output = stdout.split('\n').filter(function (val) { 55 return val.match(/^s/) 56 }) 57 58 t.same(output.sort(), ['start', 'stop'].sort()) 59 t.end() 60 }) 61}) 62