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

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()
})