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 .@", 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 .@ --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 ", 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 --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 --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 " }, "should have the same maintainer") } catch (er) { t.fail("Unable to parse JSON") } }) }) }) test("npm view ", 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() })