mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
8.4 KiB
317 lines
8.4 KiB
var common = require("../common-tap.js")
|
|
var test = require("tap").test
|
|
var osenv = require("osenv")
|
|
var path = require("path")
|
|
var fs = require("fs")
|
|
var rimraf = require("rimraf")
|
|
var mkdirp = require("mkdirp")
|
|
var tmp = osenv.tmpdir()
|
|
var t1dir = path.resolve(tmp, "view-local-no-pkg")
|
|
var t2dir = path.resolve(tmp, "view-local-notmine")
|
|
var t3dir = path.resolve(tmp, "view-local-mine")
|
|
var mr = require("npm-registry-mock")
|
|
|
|
test("setup", function (t) {
|
|
mkdirp.sync(t1dir)
|
|
mkdirp.sync(t2dir)
|
|
mkdirp.sync(t3dir)
|
|
|
|
fs.writeFileSync(t2dir + "/package.json", JSON.stringify({
|
|
author: "Evan Lucas"
|
|
, name: "test-repo-url-https"
|
|
, version: "0.0.1"
|
|
}), "utf8")
|
|
|
|
fs.writeFileSync(t3dir + "/package.json", JSON.stringify({
|
|
author: "Evan Lucas"
|
|
, name: "biscuits"
|
|
, version: "0.0.1"
|
|
}), "utf8")
|
|
|
|
t.pass("created fixtures")
|
|
t.end()
|
|
})
|
|
|
|
function plugin (server) {
|
|
server
|
|
.get("/biscuits")
|
|
.many()
|
|
.reply(404, {"error": "version not found"})
|
|
}
|
|
|
|
test("npm view . in global mode", function (t) {
|
|
process.chdir(t1dir)
|
|
common.npm([
|
|
"view"
|
|
, "."
|
|
, "--registry=" + common.registry
|
|
, "--global"
|
|
], { cwd: t1dir }, function (err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
t.similar(stderr, /Cannot use view command in global mode./m)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test("npm view --global", function(t) {
|
|
process.chdir(t1dir)
|
|
common.npm([
|
|
"view"
|
|
, "--registry=" + common.registry
|
|
, "--global"
|
|
], { cwd: t1dir }, function(err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
t.similar(stderr, /Cannot use view command in global mode./m)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test("npm view . with no package.json", function(t) {
|
|
process.chdir(t1dir)
|
|
common.npm([
|
|
"view"
|
|
, "."
|
|
, "--registry=" + common.registry
|
|
], { cwd: t1dir }, function (err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
t.similar(stderr, /Invalid package.json/m)
|
|
t.end()
|
|
})
|
|
})
|
|
|
|
test("npm view . with no published package", function (t) {
|
|
process.chdir(t3dir)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "."
|
|
, "--registry=" + common.registry
|
|
], { cwd: t3dir }, function (err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
t.similar(stderr, /version not found/m)
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view .", function (t) {
|
|
process.chdir(t2dir)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "."
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
var re = new RegExp("name: 'test-repo-url-https'")
|
|
t.similar(stdout, re)
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view . select fields", function (t) {
|
|
process.chdir(t2dir)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "."
|
|
, "main"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
t.equal(stdout.trim(), "index.js", "should print `index.js`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view .@<version>", function (t) {
|
|
process.chdir(t2dir)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, ".@0.0.0"
|
|
, "version"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
t.equal(stdout.trim(), "0.0.0", "should print `0.0.0`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view .@<version> --json", function (t) {
|
|
process.chdir(t2dir)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, ".@0.0.0"
|
|
, "version"
|
|
, "--json"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
t.equal(stdout.trim(), "\"0.0.0\"", "should print `\"0.0.0\"`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view <package name>", function (t) {
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "underscore"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
var re = new RegExp("name: 'underscore'")
|
|
t.similar(stdout, re, "should have name `underscore`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view <package name> --global", function(t) {
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "underscore"
|
|
, "--global"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function(err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
var re = new RegExp("name: 'underscore'")
|
|
t.similar(stdout, re, "should have name `underscore`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view <package name> --json", function(t) {
|
|
t.plan(3)
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "underscore"
|
|
, "--json"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
s.close()
|
|
try {
|
|
var out = JSON.parse(stdout.trim())
|
|
t.similar(out, {
|
|
maintainers: "jashkenas <jashkenas@gmail.com>"
|
|
}, "should have the same maintainer")
|
|
}
|
|
catch (er) {
|
|
t.fail("Unable to parse JSON")
|
|
}
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view <package name> <field>", function (t) {
|
|
mr({port : common.port, plugin : plugin}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "underscore"
|
|
, "homepage"
|
|
, "--registry=" + common.registry
|
|
], { cwd: t2dir }, function (err, code, stdout) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 0, "exit ok")
|
|
t.equal(stdout.trim(), "http://underscorejs.org",
|
|
"homepage should equal `http://underscorejs.org`")
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("npm view with invalid package name", function (t) {
|
|
var invalidName = "InvalidPackage"
|
|
obj = {}
|
|
obj["/" + invalidName] = [404, {"error": "not found"}]
|
|
|
|
mr({port : common.port, mocks: {"get": obj}}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, invalidName
|
|
, "--registry=" + common.registry
|
|
], {}, function (err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
|
|
t.similar(stderr, new RegExp("is not in the npm registry"),
|
|
"Package should NOT be found")
|
|
|
|
t.dissimilar(stderr, new RegExp("use the name yourself!"),
|
|
"Suggestion should not be there")
|
|
|
|
t.similar(stderr, new RegExp("name can no longer contain capital letters"),
|
|
"Suggestion about Capital letter should be there")
|
|
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
|
|
test("npm view with valid but non existent package name", function (t) {
|
|
mr({port : common.port, mocks: {
|
|
"get": {
|
|
"/valid-but-non-existent-package" : [404, {"error": "not found"}]
|
|
}
|
|
}}, function (er, s) {
|
|
common.npm([
|
|
"view"
|
|
, "valid-but-non-existent-package"
|
|
, "--registry=" + common.registry
|
|
], {}, function (err, code, stdout, stderr) {
|
|
t.ifError(err, "view command finished successfully")
|
|
t.equal(code, 1, "exit not ok")
|
|
|
|
t.similar(stderr,
|
|
new RegExp("'valid-but-non-existent-package' is not in the npm registry\."),
|
|
"Package should NOT be found")
|
|
|
|
t.similar(stderr, new RegExp("use the name yourself!"),
|
|
"Suggestion should be there")
|
|
|
|
s.close()
|
|
t.end()
|
|
})
|
|
})
|
|
})
|
|
|
|
test("cleanup", function (t) {
|
|
process.chdir(osenv.tmpdir())
|
|
rimraf.sync(t1dir)
|
|
rimraf.sync(t2dir)
|
|
rimraf.sync(t3dir)
|
|
t.pass("cleaned up")
|
|
t.end()
|
|
})
|
|
|