blob: fef099f0af8092c1cc570ce9f4ebce9cafeb2754 [file] [log] [blame]
// Run all the tests in the `npm-registry-couchapp` suite
// This verifies that the server-side stuff still works.
var common = require("../common-tap")
var test = require("tap").test
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 v = process.versions.node.split(".").map(function (n) { return parseInt(n, 10) })
if (v[0] === 0 && v[1] < 10) {
console.error(
"WARNING: need a recent Node for npm-registry-couchapp tests to run, have",
process.versions.node
)
}
else {
which("couchdb", function (er) {
if (er) {
console.error("WARNING: need couch to run test: " + er.message)
}
else {
runTests()
}
})
}
function runTests () {
var env = { TAP: 1 }
for (var i in process.env) env[i] = process.env[i]
env.npm = npmExec
var opts = {
cwd: ca,
stdio: "inherit"
}
common.npm(["install"], opts, function (err, code, stdout, stderr) {
if (err) { throw err }
if (code) {
return test("need install to work", function (t) {
t.fail(
"install failed with: " + code +
'\nstdout: ' + stdout +
'\nstderr: ' + stderr)
t.end()
})
} else {
opts = {
cwd: ca,
env: env,
stdio: "inherit"
}
common.npm(
[
"test", "--", "-Rtap"
],
opts,
function (err, code, stdout, stderr) {
if (err) { throw err }
if (code) {
return test("need test to work", function (t) {
t.fail(
"test failed with: " + code +
'\nstdout: ' + stdout +
'\nstderr: ' + stderr)
t.end()
})
}
opts = {
cwd: ca,
env: env,
stdio: "inherit"
}
common.npm(["prune", "--production"], opts, function (err, code) {
if (err) { throw err }
process.exit(code || 0)
})
})
}
})
}