aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/test/tap/view.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/test/tap/view.js')
-rw-r--r--deps/node/deps/npm/test/tap/view.js388
1 files changed, 388 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/view.js b/deps/node/deps/npm/test/tap/view.js
new file mode 100644
index 00000000..a01fa903
--- /dev/null
+++ b/deps/node/deps/npm/test/tap/view.js
@@ -0,0 +1,388 @@
+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')
+
+var server
+
+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')
+
+ mr({ port: common.port, plugin: plugin }, function (er, s) {
+ server = s
+ 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)
+ 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, /not in the npm registry/m)
+ t.end()
+ })
+})
+
+test('npm view .', function (t) {
+ process.chdir(t2dir)
+ 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')
+ t.matches(stdout, /test-repo-url-https/, 'has the right package')
+ t.end()
+ })
+})
+
+test('npm view . select fields', function (t) {
+ process.chdir(t2dir)
+ 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`')
+ t.end()
+ })
+})
+
+test('npm view .@<version>', function (t) {
+ process.chdir(t2dir)
+ 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`')
+ t.end()
+ })
+})
+
+test('npm view .@<version> version --json', function (t) {
+ process.chdir(t2dir)
+ 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"`')
+ t.end()
+ })
+})
+
+test('npm view . --json author name version', function (t) {
+ process.chdir(t2dir)
+ common.npm([
+ 'view',
+ '.',
+ 'author',
+ 'name',
+ 'version',
+ '--json',
+ '--registry=' + common.registry
+ ], { cwd: t2dir }, function (err, code, stdout) {
+ var expected = JSON.stringify({
+ author: 'Evan Lucas <evanlucas@me.com>',
+ name: 'test-repo-url-https',
+ version: '0.0.1'
+ }, null, 2)
+ t.ifError(err, 'view command finished successfully')
+ t.equal(code, 0, 'exit ok')
+ t.equal(stdout.trim(), expected, 'should print ' + expected)
+ t.end()
+ })
+})
+
+test('npm view .@<version> --json author name version', function (t) {
+ process.chdir(t2dir)
+ common.npm([
+ 'view',
+ '.@0.0.0',
+ 'author',
+ 'name',
+ 'version',
+ '--json',
+ '--registry=' + common.registry
+ ], { cwd: t2dir }, function (err, code, stdout) {
+ var expected = JSON.stringify({
+ author: 'Evan Lucas <evanlucas@me.com>',
+ name: 'test-repo-url-https',
+ version: '0.0.0'
+ }, null, 2)
+ t.ifError(err, 'view command finished successfully')
+ t.equal(code, 0, 'exit ok')
+ t.equal(stdout.trim(), expected, 'should print ' + expected)
+ t.end()
+ })
+})
+
+test('npm view <package name>', function (t) {
+ 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')
+ t.matches(stdout, /underscore/, 'should have name `underscore`')
+ t.end()
+ })
+})
+
+test('npm view <package name> --global', function (t) {
+ 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')
+ t.matches(stdout, /underscore/, 'should have name `underscore`')
+ t.end()
+ })
+})
+
+test('npm view <package name>@<semver range> versions', function (t) {
+ common.npm([
+ 'view',
+ 'underscore@^1.5.0',
+ 'versions',
+ '--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('1.5.0')
+ t.similar(stdout, re, 'should have version `1.5.0`')
+ t.end()
+ })
+})
+
+test('npm view <package name>@<semver range> version --json', function (t) {
+ common.npm([
+ 'view',
+ 'underscore@~1.5.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(), JSON.stringify([
+ '1.5.0',
+ '1.5.1'
+ ], null, 2), 'should have three versions')
+ t.end()
+ })
+})
+
+test('npm view <package name> --json', function (t) {
+ t.plan(3)
+ 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')
+ 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>@<invalid version>', function (t) {
+ common.npm([
+ 'view',
+ 'underscore@12345',
+ '--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(), '', 'should return empty')
+ t.end()
+ })
+})
+
+test('npm view <package name>@<invalid version> --json', function (t) {
+ common.npm([
+ 'view',
+ 'underscore@12345',
+ '--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(), '', 'should return empty')
+ t.end()
+ })
+})
+
+test('npm view <package name> <field>', function (t) {
+ 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`')
+ t.end()
+ })
+})
+
+test('npm view with invalid package name', function (t) {
+ var invalidName = 'InvalidPackage'
+
+ server.get('/' + invalidName).reply('404', {'error': 'not found'})
+ 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')
+
+ t.end()
+ })
+})
+
+test('npm view with valid but non existent package name', function (t) {
+ server.get('/valid-but-non-existent-package').reply(404, {'error': 'not found'})
+ 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')
+
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ process.chdir(osenv.tmpdir())
+ rimraf.sync(t1dir)
+ rimraf.sync(t2dir)
+ rimraf.sync(t3dir)
+ t.pass('cleaned up')
+ server.close()
+ t.end()
+})