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.
253 lines
6.4 KiB
253 lines
6.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()
|
|
})
|
|
|
|
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(common.port, function (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(common.port, function (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(common.port, function (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(common.port, function (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(common.port, function (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(common.port, function (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(common.port, function(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(common.port, function (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(common.port, function (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("cleanup", function (t) {
|
|
process.chdir(osenv.tmpdir())
|
|
rimraf.sync(t1dir)
|
|
rimraf.sync(t2dir)
|
|
rimraf.sync(t3dir)
|
|
t.pass("cleaned up")
|
|
t.end()
|
|
})
|
|
|