summaryrefslogtreecommitdiff
path: root/deps/npm/test/tap/registry.js
blob: 8ea1c2f2daf00bf1140c9d9c3311dd8937661c10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Run all the tests in the `npm-registry-couchapp` suite
// This verifies that the server-side stuff still works.

var test = require("tap").test

var spawn = require("child_process").spawn
var npmExec = require.resolve("../../bin/npm-cli.js")
var path = require("path")
var ca = path.resolve(__dirname, "../../node_modules/npm-registry-couchapp")

var which = require("which")
var hasCouch = false

which("couchdb", function(er, couch) {
  if (er) {
    return test("need couchdb", function (t) {
      t.fail("need couch to run test: " + er.message)
      t.end()
    })
  } else {
    runTests()
  }
})

function runTests () {
  spawn(process.execPath, [
    npmExec, "install"
  ], {
    cwd: ca,
    stdio: "inherit"
  }).on("close", function (code, sig) {
    if (code || sig) {
      return test("need install to work", function (t) {
        t.fail("install failed with: " (code || sig))
        t.end()
      })

    } else {
      var env = {}
      for (var i in process.env) env[i] = process.env[i]
      env.npm = npmExec

      spawn(process.execPath, [
        npmExec, "test"
      ], {
        cwd: ca,
        env: env,
        stdio: "inherit"
      }).on("close", function (code, sig) {
        process.exit(code || sig)
      })
    }

  })
}