1 var fs = require('graceful-fs')
2 var path = require('path')
4 var mkdirp = require('mkdirp')
5 var osenv = require('osenv')
6 var rimraf = require('rimraf')
7 var test = require('tap').test
9 var common = require('../common-tap')
11 var pkg = path.resolve(__dirname, 'startstop')
13 var EXEC_OPTS = { cwd: pkg }
19 start: 'node -e \"console.log(\'start\')\"',
20 stop: 'node -e \"console.log(\'stop\')\"'
24 function testOutput (t, command, er, code, stdout, stderr) {
25 t.notOk(code, 'npm ' + command + ' exited with code 0')
27 if (stderr) throw new Error('npm ' + command + ' stderr: ' + stderr.toString())
29 stdout = stdout.trim().split(/\n|\r/)
30 stdout = stdout[stdout.length - 1]
31 t.equal(stdout, command)
35 test('setup', function (t) {
39 path.join(pkg, 'package.json'),
40 JSON.stringify(json, null, 2)
45 test('npm start', function (t) {
46 common.npm(['start'], EXEC_OPTS, testOutput.bind(null, t, 'start'))
49 test('npm stop', function (t) {
50 common.npm(['stop'], EXEC_OPTS, testOutput.bind(null, t, 'stop'))
53 test('npm restart', function (t) {
54 common.npm(['restart'], EXEC_OPTS, function (er, c, stdout) {
57 var output = stdout.split('\n').filter(function (val) {
58 return val.match(/^s/)
61 t.same(output.sort(), ['start', 'stop'].sort())
66 test('cleanup', function (t) {
72 process.chdir(osenv.tmpdir())