var common = require("../common-tap") , test = require("tap").test , path = require("path") , rimraf = require("rimraf") , mkdirp = require("mkdirp") , pkg = path.resolve(__dirname, "startstop") , cache = path.resolve(pkg, "cache") , tmp = path.resolve(pkg, "tmp") , opts = { cwd: pkg } function testOutput (t, command, er, code, stdout, stderr) { t.notOk(code, "npm " + command + " exited with code 0") if (stderr) throw new Error("npm " + command + " stderr: " + stderr.toString()) stdout = stdout.trim().split(/\n|\r/) stdout = stdout[stdout.length - 1] t.equal(stdout, command) t.end() } function cleanup () { rimraf.sync(cache) rimraf.sync(tmp) } test("setup", function (t) { cleanup() mkdirp.sync(cache) mkdirp.sync(tmp) t.end() }) test("npm start", function (t) { common.npm(["start"], opts, testOutput.bind(null, t, "start")) }) test("npm stop", function (t) { common.npm(["stop"], opts, testOutput.bind(null, t, "stop")) }) test("npm restart", function (t) { common.npm(["restart"], opts, function (er, c, stdout) { if (er) throw er var output = stdout.split("\n").filter(function (val) { return val.match(/^s/) }) t.same(output.sort(), ["start", "stop"].sort()) t.end() }) }) test("cleanup", function (t) { cleanup() t.end() })