• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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