summaryrefslogtreecommitdiff
path: root/deps/npm/test/tap
diff options
context:
space:
mode:
authorKat Marchán <kzm@zkat.tech>2019-01-29 14:43:00 -0800
committerMyles Borins <mylesborins@google.com>2019-02-12 00:06:29 -0800
commit43dd49c9782848c25e5b03448c8a0f923f13c158 (patch)
treef7ac5d645019b2b844f26be66c291bbae734d097 /deps/npm/test/tap
parentb361f9577fbd72e518438d3fa0b01f7d34d814a5 (diff)
downloadandroid-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.tar.gz
android-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.tar.bz2
android-node-v8-43dd49c9782848c25e5b03448c8a0f923f13c158.zip
deps: upgrade npm to 6.7.0
PR-URL: https://github.com/nodejs/node/pull/25804 Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/npm/test/tap')
-rw-r--r--deps/npm/test/tap/404-private-registry-scoped.js2
-rw-r--r--deps/npm/test/tap/404-private-registry.js2
-rw-r--r--deps/npm/test/tap/access.js50
-rw-r--r--deps/npm/test/tap/all-package-metadata-cache-stream-unit.js125
-rw-r--r--deps/npm/test/tap/all-package-metadata-entry-stream-unit.js195
-rw-r--r--deps/npm/test/tap/all-package-metadata-update-stream-unit.js145
-rw-r--r--deps/npm/test/tap/all-package-metadata-write-stream-unit.js124
-rw-r--r--deps/npm/test/tap/all-package-metadata.js64
-rw-r--r--deps/npm/test/tap/cache-add-unpublished.js2
-rw-r--r--deps/npm/test/tap/config-meta.js19
-rw-r--r--deps/npm/test/tap/dist-tag.js45
-rw-r--r--deps/npm/test/tap/get.js103
-rw-r--r--deps/npm/test/tap/install-dep-classification.js167
-rw-r--r--deps/npm/test/tap/map-to-registry.js166
-rw-r--r--deps/npm/test/tap/org.js136
-rw-r--r--deps/npm/test/tap/ping.js35
-rw-r--r--deps/npm/test/tap/publish-config.js12
-rw-r--r--deps/npm/test/tap/search.all-package-search.js61
-rw-r--r--deps/npm/test/tap/search.esearch.js192
-rw-r--r--deps/npm/test/tap/search.js104
-rw-r--r--deps/npm/test/tap/team.js39
-rw-r--r--deps/npm/test/tap/view.js2
22 files changed, 887 insertions, 903 deletions
diff --git a/deps/npm/test/tap/404-private-registry-scoped.js b/deps/npm/test/tap/404-private-registry-scoped.js
index 48889376ca..f8a8c5b05a 100644
--- a/deps/npm/test/tap/404-private-registry-scoped.js
+++ b/deps/npm/test/tap/404-private-registry-scoped.js
@@ -3,7 +3,7 @@ var path = require('path')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var common = require('../common-tap.js')
-var mr = require('npm-registry-mock')
+var mr = common.fakeRegistry.compat
var server
var testdir = path.join(__dirname, path.basename(__filename, '.js'))
diff --git a/deps/npm/test/tap/404-private-registry.js b/deps/npm/test/tap/404-private-registry.js
index a38fa02c12..da6e446918 100644
--- a/deps/npm/test/tap/404-private-registry.js
+++ b/deps/npm/test/tap/404-private-registry.js
@@ -3,7 +3,7 @@ var path = require('path')
var mkdirp = require('mkdirp')
var rimraf = require('rimraf')
var common = require('../common-tap.js')
-var mr = require('npm-registry-mock')
+var mr = common.fakeRegistry.compat
var server
var packageName = path.basename(__filename, '.js')
diff --git a/deps/npm/test/tap/access.js b/deps/npm/test/tap/access.js
index 4bed4b4b25..6a21ccc8fb 100644
--- a/deps/npm/test/tap/access.js
+++ b/deps/npm/test/tap/access.js
@@ -1,16 +1,18 @@
-var fs = require('fs')
-var path = require('path')
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var mr = require('npm-registry-mock')
+'use strict'
-var test = require('tap').test
-var common = require('../common-tap.js')
+const fs = require('fs')
+const path = require('path')
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const mr = require('npm-registry-mock')
-var pkg = path.resolve(__dirname, 'access')
-var server
+const test = require('tap').test
+const common = require('../common-tap.js')
-var scoped = {
+const pkg = path.resolve(__dirname, 'access')
+let server
+
+const scoped = {
name: '@scoped/pkg',
version: '1.1.1'
}
@@ -160,19 +162,22 @@ test('npm change access on unscoped package', function (t) {
function (er, code, stdout, stderr) {
t.ok(code, 'exited with Error')
t.matches(
- stderr, /access commands are only accessible for scoped packages/)
+ stderr, /only available for scoped packages/)
t.end()
}
)
})
test('npm access grant read-only', function (t) {
- server.put('/-/team/myorg/myteam/package', {
- permissions: 'read-only',
- package: '@scoped/another'
- }).reply(201, {
- accessChaged: true
+ server.filteringRequestBody((body) => {
+ const data = JSON.parse(body)
+ t.deepEqual(data, {
+ permissions: 'read-only',
+ package: '@scoped/another'
+ }, 'got the right body')
+ return true
})
+ server.put('/-/team/myorg/myteam/package', true).reply(201)
common.npm(
[
'access',
@@ -191,12 +196,15 @@ test('npm access grant read-only', function (t) {
})
test('npm access grant read-write', function (t) {
- server.put('/-/team/myorg/myteam/package', {
- permissions: 'read-write',
- package: '@scoped/another'
- }).reply(201, {
- accessChaged: true
+ server.filteringRequestBody((body) => {
+ const data = JSON.parse(body)
+ t.deepEqual(data, {
+ permissions: 'read-write',
+ package: '@scoped/another'
+ }, 'got the right body')
+ return true
})
+ server.put('/-/team/myorg/myteam/package', true).reply(201)
common.npm(
[
'access',
diff --git a/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
index 51be836769..0b4dd0e26d 100644
--- a/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-cache-stream-unit.js
@@ -1,18 +1,20 @@
'use strict'
require('../common-tap.js')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
-var _createCacheEntryStream = require('../../lib/search/all-package-metadata.js')._createCacheEntryStream
+const getStream = require('get-stream')
+const mkdirp = require('mkdirp')
+const path = require('path')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const {test} = require('tap')
-var PKG_DIR = path.resolve(__dirname, 'create-cache-entry-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const {File} = Tacks
+
+const _createCacheEntryStream = require('../../lib/search/all-package-metadata.js')._createCacheEntryStream
+
+const PKG_DIR = path.resolve(__dirname, 'create-cache-entry-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -22,10 +24,10 @@ function cleanup () {
rimraf.sync(PKG_DIR)
}
-test('createCacheEntryStream basic', function (t) {
+test('createCacheEntryStream basic', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': 1234,
bar: {
name: 'bar',
@@ -37,16 +39,13 @@ test('createCacheEntryStream basic', function (t) {
}
}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
+ return _createCacheEntryStream(cachePath, {}).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
+ return getStream.array(stream).then(results => {
t.deepEquals(results, [{
name: 'bar',
version: '1.0.0'
@@ -55,82 +54,54 @@ test('createCacheEntryStream basic', function (t) {
version: '1.0.0'
}])
cleanup()
- t.done()
})
})
})
-test('createCacheEntryStream empty cache', function (t) {
+test('createCacheEntryStream empty cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({}))
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- t.ok(err, 'returned an error because there was no _updated')
- t.match(err.message, /Empty or invalid stream/, 'useful error message')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- cleanup()
- t.done()
- })
+ return _createCacheEntryStream(cachePath, {}).then(
+ () => { throw new Error('should not succeed') },
+ err => {
+ t.ok(err, 'returned an error because there was no _updated')
+ t.match(err.message, /Empty or invalid stream/, 'useful error message')
+ cleanup()
+ }
+ )
})
-test('createCacheEntryStream no entry cache', function (t) {
+test('createCacheEntryStream no entry cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': 1234
}))
fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
+ return _createCacheEntryStream(cachePath, {}).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
+ return getStream.array(stream).then(results => {
t.deepEquals(results, [], 'no results')
cleanup()
- t.done()
})
})
})
-test('createCacheEntryStream missing cache', function (t) {
+test('createCacheEntryStream missing cache', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- t.ok(err, 'returned an error because there was no cache')
- t.equals(err.code, 'ENOENT', 'useful error message')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- cleanup()
- t.done()
- })
-})
-
-test('createCacheEntryStream bad syntax', function (t) {
- setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File('{"_updated": 1234, uh oh'))
- fixture.create(cachePath)
- _createCacheEntryStream(cachePath, function (err, stream, latest) {
- if (err) throw err
- t.equals(latest, 1234, '`latest` correctly extracted')
- t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ok(err, 'stream errored')
- t.match(err.message, /Invalid JSON/i, 'explains there\'s a syntax error')
- t.deepEquals(results, [], 'no results')
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ return _createCacheEntryStream(cachePath, {}).then(
+ () => { throw new Error('should not succeed') },
+ err => {
+ t.ok(err, 'returned an error because there was no cache')
+ t.equals(err.code, 'ENOENT', 'useful error message')
cleanup()
- t.done()
- })
- })
+ }
+ )
})
diff --git a/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js b/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
index 0e02f84824..4e916229cd 100644
--- a/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-entry-stream-unit.js
@@ -1,23 +1,23 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const npm = require('../../')
+const path = require('path')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const test = require('tap').test
-var _createEntryStream = require('../../lib/search/all-package-metadata.js')._createEntryStream
+const {File} = Tacks
-var ALL = common.registry + '/-/all'
-var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const _createEntryStream = require('../../lib/search/all-package-metadata.js')._createEntryStream
-var server
+const PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+
+let server
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -27,10 +27,11 @@ function cleanup () {
rimraf.sync(PKG_DIR)
}
-test('setup', function (t) {
- mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
+test('setup', t => {
+ cleanup()
+ mr({port: common.port, throwOnUnmatched: true}, (err, s) => {
t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+ npm.load({ cache: CACHE_DIR, registry: common.registry }, err => {
t.ifError(err, 'npm loaded successfully')
server = s
t.pass('all set up')
@@ -39,10 +40,10 @@ test('setup', function (t) {
})
})
-test('createEntryStream full request', function (t) {
+test('createEntryStream full request', t => {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var dataTime = +(new Date())
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const dataTime = +(new Date())
server.get('/-/all').once().reply(200, {
'_updated': dataTime,
'bar': { name: 'bar', version: '1.0.0' },
@@ -50,37 +51,36 @@ test('createEntryStream full request', function (t) {
}, {
date: 1234 // should never be used.
})
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, dataTime, '`latest` correctly extracted')
t.ok(newEntries, 'new entries need to be written to cache')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
test('createEntryStream cache only', function (t) {
setup()
- var now = Date.now()
- var cacheTime = now - 100000
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const now = Date.now()
+ const cacheTime = now - 100000
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': cacheTime,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '1.0.0' },
@@ -88,33 +88,32 @@ test('createEntryStream cache only', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, cacheTime, '`latest` is cache time')
t.ok(stream, 'returned a stream')
t.notOk(newEntries, 'cache only means no need to write to cache')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ifError(err, 'stream finished without error')
- t.deepEquals(
- results.map(function (pkg) { return pkg.name }),
- ['bar', 'cool', 'foo', 'other'],
- 'packages deduped and sorted'
- )
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(
+ results.map(function (pkg) { return pkg.name }),
+ ['bar', 'cool', 'foo', 'other'],
+ 'packages deduped and sorted'
+ )
+ server.done()
+ cleanup()
})
})
test('createEntryStream merged stream', function (t) {
setup()
- var now = Date.now()
- var cacheTime = now - 6000000
+ const now = Date.now()
+ const cacheTime = now - 6000000
server.get('/-/all/since?stale=update_after&startkey=' + cacheTime).once().reply(200, {
'bar': { name: 'bar', version: '2.0.0' },
'car': { name: 'car', version: '1.0.0' },
@@ -122,8 +121,8 @@ test('createEntryStream merged stream', function (t) {
}, {
date: (new Date(now)).toISOString()
})
- var cachePath = path.join(CACHE_DIR, '.cache.json')
- var fixture = new Tacks(File({
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ const fixture = new Tacks(File({
'_updated': cacheTime,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '1.0.0' },
@@ -131,50 +130,54 @@ test('createEntryStream merged stream', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
- if (err) throw err
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
t.equals(latest, now, '`latest` correctly extracted from header')
t.ok(stream, 'returned a stream')
t.ok(newEntries, 'cache update means entries should be written')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- t.ifError(err, 'stream finished without error')
- t.deepEquals(
- results.map(function (pkg) { return pkg.name }),
- ['bar', 'car', 'cool', 'foo', 'other'],
- 'packages deduped and sorted'
- )
- t.deepEquals(results[0], {
- name: 'bar',
- version: '2.0.0'
- }, 'update stream version wins on dedupe')
- t.deepEquals(results[3], {
- name: 'foo',
- version: '1.0.0'
- }, 'update stream version wins on dedupe even when the newer one has a lower semver.')
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(
+ results.map(function (pkg) { return pkg.name }),
+ ['bar', 'car', 'cool', 'foo', 'other'],
+ 'packages deduped and sorted'
+ )
+ t.deepEquals(results[0], {
+ name: 'bar',
+ version: '2.0.0'
+ }, 'update stream version wins on dedupe')
+ t.deepEquals(results[3], {
+ name: 'foo',
+ version: '1.0.0'
+ }, 'update stream version wins on dedupe even when the newer one has a lower semver.')
+ server.done()
+ cleanup()
})
})
test('createEntryStream no sources', function (t) {
setup()
- var cachePath = path.join(CACHE_DIR, '.cache.json')
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
server.get('/-/all').once().reply(404, {})
- _createEntryStream(cachePath, ALL, {}, 600, function (err, stream, latest, newEntries) {
+ return _createEntryStream(cachePath, 600, {
+ registry: common.registry
+ }).then(({
+ entryStream: stream,
+ latest,
+ newEntries
+ }) => {
+ throw new Error('should not succeed')
+ }, err => {
t.ok(err, 'no sources, got an error')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
- t.notOk(newEntries, 'no entries need to be written')
t.match(err.message, /No search sources available/, 'useful error message')
+ }).then(() => {
server.done()
cleanup()
- t.end()
})
})
diff --git a/deps/npm/test/tap/all-package-metadata-update-stream-unit.js b/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
index b9cf337eb9..2c08ac347e 100644
--- a/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-update-stream-unit.js
@@ -1,17 +1,16 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const mr = require('npm-registry-mock')
var _createEntryUpdateStream = require('../../lib/search/all-package-metadata.js')._createEntryUpdateStream
-var ALL = common.registry + '/-/all'
var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
@@ -46,27 +45,25 @@ test('createEntryUpdateStream full request', function (t) {
}, {
date: Date.now() // should never be used.
})
- _createEntryUpdateStream(ALL, {}, 600, 0, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -79,27 +76,25 @@ test('createEntryUpdateStream partial update', function (t) {
}, {
date: (new Date(now)).toISOString()
})
- _createEntryUpdateStream(ALL, {}, 600, 1234, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 1234, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, now, '`latest` correctly extracted from header')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -113,27 +108,26 @@ test('createEntryUpdateStream authed request', function (t) {
}, {
date: Date.now() // should never be used.
})
- _createEntryUpdateStream(ALL, { token: token }, 600, 0, function (err, stream, latest) {
- if (err) throw err
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry,
+ token
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.equals(latest, 1234, '`latest` correctly extracted')
t.ok(stream, 'returned a stream')
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
- name: 'bar',
- version: '1.0.0'
- }, {
- name: 'foo',
- version: '1.0.0'
- }])
- server.done()
- cleanup()
- t.end()
- })
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ server.done()
+ cleanup()
})
})
@@ -143,14 +137,17 @@ test('createEntryUpdateStream bad auth', function (t) {
server.get('/-/all', { authorization: 'Bearer ' + token }).once().reply(401, {
error: 'unauthorized search request'
})
- _createEntryUpdateStream(ALL, { token: token }, 600, 0, function (err, stream, latest) {
+ return _createEntryUpdateStream(600, 0, {
+ registry: common.registry,
+ token
+ }).then(() => {
+ throw new Error('should not succeed')
+ }, err => {
t.ok(err, 'got an error from auth failure')
- t.notOk(stream, 'no stream returned')
- t.notOk(latest, 'no latest returned')
t.match(err, /unauthorized/, 'failure message from request used')
+ }).then(() => {
server.done()
cleanup()
- t.end()
})
})
@@ -158,8 +155,12 @@ test('createEntryUpdateStream not stale', function (t) {
setup()
var now = Date.now()
var staleness = 600
- _createEntryUpdateStream(ALL, {}, staleness, now, function (err, stream, latest) {
- t.ifError(err, 'completed successfully')
+ return _createEntryUpdateStream(staleness, now, {
+ registry: common.registry
+ }).then(({
+ updateStream: stream,
+ updatedLatest: latest
+ }) => {
t.notOk(stream, 'no stream returned')
t.notOk(latest, 'no latest returned')
server.done()
diff --git a/deps/npm/test/tap/all-package-metadata-write-stream-unit.js b/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
index 410f7f9e9d..94bb7413f1 100644
--- a/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
+++ b/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
@@ -1,18 +1,19 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var fs = require('fs')
-var ms = require('mississippi')
+const common = require('../common-tap.js')
+const getStream = require('get-stream')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const fs = require('fs')
+const ms = require('mississippi')
-var _createCacheWriteStream = require('../../lib/search/all-package-metadata.js')._createCacheWriteStream
+const _createCacheWriteStream = require('../../lib/search/all-package-metadata.js')._createCacheWriteStream
-var PKG_DIR = path.resolve(__dirname, 'create-cache-write-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const PKG_DIR = path.resolve(__dirname, 'create-cache-write-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
function setup () {
mkdirp.sync(CACHE_DIR)
@@ -46,60 +47,54 @@ test('createCacheEntryStream basic', function (t) {
{ name: 'foo', version: '1.0.0' }
]
var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
- var results = []
- stream.on('data', function (pkg) {
- results.push(pkg)
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- t.deepEquals(results, [{
+ return getStream.array(stream)
+ }).then(results => {
+ t.deepEquals(results, [{
+ name: 'bar',
+ version: '1.0.0'
+ }, {
+ name: 'foo',
+ version: '1.0.0'
+ }])
+ var fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache contents written to the right file')
+ t.deepEquals(fileData, {
+ '_updated': latest,
+ bar: {
name: 'bar',
version: '1.0.0'
- }, {
+ },
+ foo: {
name: 'foo',
version: '1.0.0'
- }])
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache contents written to the right file')
- t.deepEquals(fileData, {
- '_updated': latest,
- bar: {
- name: 'bar',
- version: '1.0.0'
- },
- foo: {
- name: 'foo',
- version: '1.0.0'
- }
- }, 'cache contents based on what was written')
- cleanup()
- t.done()
- })
+ }
+ }, 'cache contents based on what was written')
+ cleanup()
})
})
test('createCacheEntryStream no entries', function (t) {
- cleanup() // wipe out the cache dir
- var cachePath = path.join(CACHE_DIR, '.cache.json')
+ setup()
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
var latest = 12345
- var src = []
- var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ const src = []
+ const srcStream = fromArray(src)
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
stream.resume()
- ms.finished(stream, function (err) {
- if (err) throw err
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache file exists and has stuff in it')
- cleanup()
- t.done()
- })
+ return getStream(stream)
+ }).then(() => {
+ const fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache file exists and has stuff in it')
+ cleanup()
})
})
@@ -109,22 +104,19 @@ test('createCacheEntryStream missing cache dir', function (t) {
var latest = 12345
var src = []
var srcStream = fromArray(src)
- _createCacheWriteStream(cachePath, latest, function (err, stream) {
- if (err) throw err
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
t.ok(stream, 'returned a stream')
stream = ms.pipeline.obj(srcStream, stream)
- stream.on('data', function (pkg) {
- t.notOk(pkg, 'stream should not have output any data')
- })
- ms.finished(stream, function (err) {
- if (err) throw err
- var fileData = JSON.parse(fs.readFileSync(cachePath))
- t.ok(fileData, 'cache contents written to the right file')
- t.deepEquals(fileData, {
- '_updated': latest
- }, 'cache still contains `_updated`')
- cleanup()
- t.done()
- })
+ return getStream.array(stream)
+ }).then(res => {
+ t.deepEqual(res, [], 'no data returned')
+ var fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache contents written to the right file')
+ t.deepEquals(fileData, {
+ '_updated': latest
+ }, 'cache still contains `_updated`')
+ cleanup()
})
})
diff --git a/deps/npm/test/tap/all-package-metadata.js b/deps/npm/test/tap/all-package-metadata.js
index 9b60822e4e..99d3fa26c5 100644
--- a/deps/npm/test/tap/all-package-metadata.js
+++ b/deps/npm/test/tap/all-package-metadata.js
@@ -1,26 +1,26 @@
'use strict'
-var common = require('../common-tap.js')
-var npm = require('../../')
-var test = require('tap').test
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var path = require('path')
-var fs = require('fs')
-var cacheFile = require('npm-cache-filename')
-var mr = require('npm-registry-mock')
-var ms = require('mississippi')
-var Tacks = require('tacks')
-var File = Tacks.File
+const common = require('../common-tap.js')
+const npm = require('../../')
+const test = require('tap').test
+const mkdirp = require('mkdirp')
+const rimraf = require('rimraf')
+const path = require('path')
+const fs = require('fs')
+const cacheFile = require('npm-cache-filename')
+const mr = require('npm-registry-mock')
+const ms = require('mississippi')
+const Tacks = require('tacks')
+const File = Tacks.File
-var allPackageMetadata = require('../../lib/search/all-package-metadata.js')
+const allPackageMetadata = require('../../lib/search/all-package-metadata.js')
-var PKG_DIR = path.resolve(__dirname, 'update-index')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase
-var cachePath
+const PKG_DIR = path.resolve(__dirname, path.basename(__filename, '.js'), 'update-index')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache', '_cacache')
+let cacheBase
+let cachePath
-var server
+let server
function setup () {
mkdirp.sync(cacheBase)
@@ -33,9 +33,9 @@ function cleanup () {
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+ npm.load({ cache: path.dirname(CACHE_DIR), registry: common.registry }, function (err) {
t.ifError(err, 'npm loaded successfully')
- npm.config.set('cache', CACHE_DIR)
+ npm.config.set('cache', path.dirname(CACHE_DIR))
cacheBase = cacheFile(npm.config.get('cache'))(common.registry + '/-/all')
cachePath = path.join(cacheBase, '.cache.json')
server = s
@@ -55,7 +55,11 @@ test('allPackageMetadata full request', function (t) {
}, {
date: updated
})
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -101,7 +105,11 @@ test('allPackageMetadata cache only', function (t) {
}
var fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
- var stream = allPackageMetadata(10000000)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 10000000
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -143,7 +151,11 @@ test('createEntryStream merged stream', function (t) {
other: { name: 'other', version: '1.0.0' }
}))
fixture.create(cachePath)
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
t.ok(stream, 'returned a stream')
var results = []
stream.on('data', function (pkg) {
@@ -184,7 +196,11 @@ test('createEntryStream merged stream', function (t) {
test('allPackageMetadata no sources', function (t) {
setup()
server.get('/-/all').once().reply(404, {})
- var stream = allPackageMetadata(600)
+ var stream = allPackageMetadata({
+ cache: CACHE_DIR,
+ registry: common.registry,
+ staleness: 600
+ })
ms.finished(stream, function (err) {
t.ok(err, 'no sources, got an error')
t.match(err.message, /No search sources available/, 'useful error message')
diff --git a/deps/npm/test/tap/cache-add-unpublished.js b/deps/npm/test/tap/cache-add-unpublished.js
index 8966e43ae4..0e8a9de8bf 100644
--- a/deps/npm/test/tap/cache-add-unpublished.js
+++ b/deps/npm/test/tap/cache-add-unpublished.js
@@ -18,7 +18,7 @@ test('cache add', function (t) {
if (er) throw er
t.ok(c, 'got non-zero exit code')
t.equal(so, '', 'nothing printed to stdout')
- t.similar(se, /404 Not Found: superfoo/, 'got expected error')
+ t.similar(se, /404 Not Found.*superfoo/, 'got expected error')
s.close()
t.end()
}
diff --git a/deps/npm/test/tap/config-meta.js b/deps/npm/test/tap/config-meta.js
index 735c161fb8..97918b8897 100644
--- a/deps/npm/test/tap/config-meta.js
+++ b/deps/npm/test/tap/config-meta.js
@@ -110,25 +110,26 @@ test('check configs', function (t) {
}
}
- for (var c2 in DOC) {
- if (c2 !== 'versions' && c2 !== 'version' && c2 !== 'init.version' && c2 !== 'ham-it-up') {
- t.ok(CONFS[c2], 'config in doc should be used somewhere ' + c2)
- t.ok(types.indexOf(c2) !== -1, 'should be defined in npmconf ' + c2)
- t.ok(defaults.indexOf(c2) !== -1, 'should have default in npmconf ' + c2)
- }
- }
+ // TODO - needs better figgy-pudding introspection
+ // for (var c2 in DOC) {
+ // if (c2 !== 'versions' && c2 !== 'version' && c2 !== 'init.version' && c2 !== 'ham-it-up') {
+ // t.ok(CONFS[c2], 'config in doc should be used somewhere ' + c2)
+ // t.ok(types.indexOf(c2) !== -1, 'should be defined in npmconf ' + c2)
+ // t.ok(defaults.indexOf(c2) !== -1, 'should have default in npmconf ' + c2)
+ // }
+ // }
types.forEach(function (c) {
if (!c.match(/^_/) && c !== 'argv' && !c.match(/^versions?$/) && c !== 'ham-it-up') {
t.ok(DOC[c], 'defined type should be documented ' + c)
- t.ok(CONFS[c], 'defined type should be used ' + c)
+ // t.ok(CONFS[c], 'defined type should be used ' + c)
}
})
defaults.forEach(function (c) {
if (!c.match(/^_/) && c !== 'argv' && !c.match(/^versions?$/) && c !== 'ham-it-up') {
t.ok(DOC[c], 'defaulted type should be documented ' + c)
- t.ok(CONFS[c], 'defaulted type should be used ' + c)
+ // t.ok(CONFS[c], 'defaulted type should be used ' + c)
}
})
diff --git a/deps/npm/test/tap/dist-tag.js b/deps/npm/test/tap/dist-tag.js
index 651639f32a..3631a598e9 100644
--- a/deps/npm/test/tap/dist-tag.js
+++ b/deps/npm/test/tap/dist-tag.js
@@ -20,10 +20,16 @@ function mocks (server) {
server.get('/-/package/@scoped%2fpkg/dist-tags')
.reply(200, { latest: '1.0.0', a: '0.0.1', b: '0.5.0' })
+ server.get('/-/package/@scoped%2fpkg/dist-tags')
+ .reply(200, { latest: '1.0.0', a: '0.0.1', b: '0.5.0' })
+
// ls named package
server.get('/-/package/@scoped%2fanother/dist-tags')
.reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
+ server.get('/-/package/@scoped%2fanother/dist-tags')
+ .reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
+
// add c
server.get('/-/package/@scoped%2fanother/dist-tags')
.reply(200, { latest: '2.0.0', a: '0.0.2', b: '0.6.0' })
@@ -83,6 +89,25 @@ test('npm dist-tags ls in current package', function (t) {
)
})
+test('npm dist-tags ls default in current package', function (t) {
+ common.npm(
+ [
+ 'dist-tags',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.notOk(code, 'exited OK')
+ t.notOk(stderr, 'no error output')
+ t.equal(stdout, 'a: 0.0.1\nb: 0.5.0\nlatest: 1.0.0\n')
+
+ t.end()
+ }
+ )
+})
+
test('npm dist-tags ls on named package', function (t) {
common.npm(
[
@@ -103,6 +128,26 @@ test('npm dist-tags ls on named package', function (t) {
)
})
+test('npm dist-tags ls default, named package', function (t) {
+ common.npm(
+ [
+ 'dist-tags',
+ '@scoped/another',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ],
+ { cwd: pkg },
+ function (er, code, stdout, stderr) {
+ t.ifError(er, 'npm access')
+ t.notOk(code, 'exited OK')
+ t.notOk(stderr, 'no error output')
+ t.equal(stdout, 'a: 0.0.2\nb: 0.6.0\nlatest: 2.0.0\n')
+
+ t.end()
+ }
+ )
+})
+
test('npm dist-tags add @scoped/another@7.7.7 c', function (t) {
common.npm(
[
diff --git a/deps/npm/test/tap/get.js b/deps/npm/test/tap/get.js
deleted file mode 100644
index c939ed071e..0000000000
--- a/deps/npm/test/tap/get.js
+++ /dev/null
@@ -1,103 +0,0 @@
-var common = require('../common-tap.js')
-var test = require('tap').test
-var npm = require('../../')
-var rimraf = require('rimraf')
-var path = require('path')
-var mr = require('npm-registry-mock')
-
-function nop () {}
-
-var URI = 'https://npm.registry:8043/rewrite'
-var TIMEOUT = 3600
-var FOLLOW = false
-var STALE_OK = true
-var TOKEN = 'lolbutts'
-var AUTH = { token: TOKEN }
-var PARAMS = {
- timeout: TIMEOUT,
- follow: FOLLOW,
- staleOk: STALE_OK,
- auth: AUTH
-}
-var PKG_DIR = path.resolve(__dirname, 'get-basic')
-var BIGCO_SAMPLE = {
- name: '@bigco/sample',
- version: '1.2.3'
-}
-
-// mock server reference
-var server
-
-var mocks = {
- 'get': {
- '/@bigco%2fsample/1.2.3': [200, BIGCO_SAMPLE]
- }
-}
-
-test('setup', function (t) {
- mr({port: common.port, mocks: mocks}, function (er, s) {
- t.ifError(er)
- npm.load({registry: common.registry}, function (er) {
- t.ifError(er)
- server = s
- t.end()
- })
- })
-})
-
-test('get call contract', function (t) {
- t.throws(function () {
- npm.registry.get(undefined, PARAMS, nop)
- }, 'requires a URI')
-
- t.throws(function () {
- npm.registry.get([], PARAMS, nop)
- }, 'requires URI to be a string')
-
- t.throws(function () {
- npm.registry.get(URI, undefined, nop)
- }, 'requires params object')
-
- t.throws(function () {
- npm.registry.get(URI, '', nop)
- }, 'params must be object')
-
- t.throws(function () {
- npm.registry.get(URI, PARAMS, undefined)
- }, 'requires callback')
-
- t.throws(function () {
- npm.registry.get(URI, PARAMS, 'callback')
- }, 'callback must be function')
-
- t.end()
-})
-
-test('basic request', function (t) {
- t.plan(6)
-
- var versioned = common.registry + '/underscore/1.3.3'
- npm.registry.get(versioned, PARAMS, function (er, data) {
- t.ifError(er, 'loaded specified version underscore data')
- t.equal(data.version, '1.3.3')
- })
-
- var rollup = common.registry + '/underscore'
- npm.registry.get(rollup, PARAMS, function (er, data) {
- t.ifError(er, 'loaded all metadata')
- t.deepEqual(data.name, 'underscore')
- })
-
- var scoped = common.registry + '/@bigco%2fsample/1.2.3'
- npm.registry.get(scoped, PARAMS, function (er, data) {
- t.ifError(er, 'loaded all metadata')
- t.equal(data.name, '@bigco/sample')
- })
-})
-
-test('cleanup', function (t) {
- server.close()
- rimraf.sync(PKG_DIR)
-
- t.end()
-})
diff --git a/deps/npm/test/tap/install-dep-classification.js b/deps/npm/test/tap/install-dep-classification.js
new file mode 100644
index 0000000000..153a7f3927
--- /dev/null
+++ b/deps/npm/test/tap/install-dep-classification.js
@@ -0,0 +1,167 @@
+'use strict'
+const path = require('path')
+const test = require('tap').test
+const Tacks = require('tacks')
+const File = Tacks.File
+const Dir = Tacks.Dir
+const common = require('../common-tap.js')
+const fs = require('fs')
+
+const basedir = path.join(__dirname, path.basename(__filename, '.js'))
+const testdir = path.join(basedir, 'testdir')
+const cachedir = path.join(basedir, 'cache')
+const globaldir = path.join(basedir, 'global')
+const tmpdir = path.join(basedir, 'tmp')
+const optionaldir = path.join(testdir, 'optional')
+const devdir = path.join(testdir, 'dev')
+
+const env = common.newEnv().extend({
+ npm_config_cache: cachedir,
+ npm_config_tmp: tmpdir,
+ npm_config_prefix: globaldir,
+ npm_config_registry: common.registry,
+ npm_config_loglevel: 'error'
+})
+
+const fixture = new Tacks(Dir({
+ cache: Dir(),
+ global: Dir(),
+ tmp: Dir(),
+ testdir: Dir({
+ 'a-1.0.0.tgz': File(Buffer.from(
+ '1f8b0800000000000003edcfc10e82300c0660ce3ec5d2b38e4eb71d789b' +
+ '010d41e358187890f0ee56493c71319218937d977feb9aa50daebab886f2' +
+ 'b0a43cc7ce671b4344abb558ab3f2934223b198b4a598bdcc707a38f9c5b' +
+ '0fb2668c83eb79946fff597611effc131378772528c0c11e6ed4c7b6f37c' +
+ '53122572a5a640be265fb514a198a0e43729f3f2f06a9043738779defd7a' +
+ '89244992e4630fd69e456800080000',
+ 'hex'
+ )),
+ 'b-1.0.0.tgz': File(Buffer.from(
+ '1f8b08000000000000032b484cce4e4c4fd52f80d07a59c5f9790c540606' +
+ '06066626260ad8c4c1c0d85c81c1d8d4ccc0d0d0cccc00a80ec830353103' +
+ 'd2d4760836505a5c925804740aa5e640bca200a78708a856ca4bcc4d55b2' +
+ '524a52d2512a4b2d2acecccf03f20cf50cf40c946ab906da79a360148c82' +
+ '51300a680400106986b400080000',
+ 'hex'
+ )),
+ dev: Dir({
+ 'package.json': File({
+ name: 'dev',
+ version: '1.0.0',
+ devDependencies: {
+ example: '../example-1.0.0.tgz'
+ }
+ })
+ }),
+ 'example-1.0.0.tgz': File(Buffer.from(
+ '1f8b0800000000000003ed8fc10ac2300c8677f62946cedaa5d8f5e0db64' +
+ '5b1853d795758a38f6ee4607e261370722f4bbfce5cb4f493c9527aa39f3' +
+ '73aa63e85cb23288688d4997fc136d304df6b945adad45e9c923375a72ed' +
+ '4596b884817a59e5db7fe65bd277fe0923386a190ec0376afd99610b57ee' +
+ '43d339715aa14231157b7615bbb2e100871148664a65b47b15d450dfa554' +
+ 'ccb2f890d3b4f9f57d9148241259e60112d8208a00080000',
+ 'hex'
+ )),
+ optional: Dir({
+ 'package.json': File({
+ name: 'optional',
+ version: '1.0.0',
+ optionalDependencies: {
+ example: '../example-1.0.0.tgz'
+ }
+ })
+ })
+ })
+}))
+
+function setup () {
+ cleanup()
+ fixture.create(basedir)
+}
+
+function cleanup () {
+ fixture.remove(basedir)
+}
+
+test('setup', function (t) {
+ setup()
+ return common.fakeRegistry.listen()
+})
+
+test('optional dependency identification', function (t) {
+ return common.npm(['install', '--no-optional'], {cwd: optionaldir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.notOk(fs.existsSync(path.join(optionaldir, 'node_modules')), 'did not install anything')
+ t.similar(JSON.parse(fs.readFileSync(path.join(optionaldir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ optional: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ optional: true
+ },
+ example: {
+ version: '1.0.0',
+ optional: true
+ }
+ }
+ }, 'locks dependencies as optional')
+ })
+})
+
+test('development dependency identification', function (t) {
+ return common.npm(['install', '--only=prod'], {cwd: devdir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.notOk(fs.existsSync(path.join(devdir, 'node_modules')), 'did not install anything')
+ t.similar(JSON.parse(fs.readFileSync(path.join(devdir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ dev: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ dev: true
+ },
+ example: {
+ version: '1.0.0',
+ dev: true
+ }
+ }
+ }, 'locks dependencies as dev')
+ })
+})
+
+test('default dependency identification', function (t) {
+ return common.npm(['install'], {cwd: optionaldir, env}).then(([code, stdout, stderr]) => {
+ t.is(code, 0, 'no error code')
+ t.is(stderr, '', 'no error output')
+ t.similar(JSON.parse(fs.readFileSync(path.join(optionaldir, 'package-lock.json'), 'utf8')), {
+ dependencies: {
+ a: {
+ version: 'file:../a-1.0.0.tgz',
+ optional: true
+ },
+ b: {
+ version: 'file:../b-1.0.0.tgz',
+ optional: true
+ },
+ example: {
+ version: '1.0.0',
+ optional: true
+ }
+ }
+ }, 'locks dependencies as optional')
+ })
+})
+
+test('cleanup', function (t) {
+ common.fakeRegistry.close()
+ cleanup()
+ t.done()
+})
diff --git a/deps/npm/test/tap/map-to-registry.js b/deps/npm/test/tap/map-to-registry.js
deleted file mode 100644
index f6fdef5f10..0000000000
--- a/deps/npm/test/tap/map-to-registry.js
+++ /dev/null
@@ -1,166 +0,0 @@
-var test = require('tap').test
-var npm = require('../../')
-
-var common = require('../common-tap.js')
-var mapRegistry = require('../../lib/utils/map-to-registry.js')
-
-var creds = {
- '//registry.npmjs.org/:username': 'u',
- '//registry.npmjs.org/:_password': Buffer.from('p').toString('base64'),
- '//registry.npmjs.org/:email': 'e',
- cache: common.npm_config_cache
-}
-test('setup', function (t) {
- npm.load(creds, function (err) {
- t.ifError(err)
- t.end()
- })
-})
-
-test('mapRegistryToURI', function (t) {
- t.plan(16)
-
- mapRegistry('basic', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://registry.npmjs.org/basic')
- t.deepEqual(auth, {
- scope: '//registry.npmjs.org/',
- token: undefined,
- username: 'u',
- password: 'p',
- email: 'e',
- auth: 'dTpw',
- alwaysAuth: false
- })
- t.equal(registry, 'https://registry.npmjs.org/')
- })
-
- npm.config.set('scope', 'test')
- npm.config.set('@test:registry', 'http://reg.npm/design/-/rewrite/')
- npm.config.set('//reg.npm/design/-/rewrite/:_authToken', 'a-token')
- mapRegistry('simple', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/design/-/rewrite/simple')
- t.deepEqual(auth, {
- scope: '//reg.npm/design/-/rewrite/',
- token: 'a-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/design/-/rewrite/')
- })
-
- npm.config.set('scope', '')
- npm.config.set('@test2:registry', 'http://reg.npm/-/rewrite/')
- npm.config.set('//reg.npm/-/rewrite/:_authToken', 'b-token')
- mapRegistry('@test2/easy', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/-/rewrite/@test2%2feasy')
- t.deepEqual(auth, {
- scope: '//reg.npm/-/rewrite/',
- token: 'b-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/-/rewrite/')
- })
-
- npm.config.set('scope', 'test')
- npm.config.set('@test3:registry', 'http://reg.npm/design/-/rewrite/relative')
- npm.config.set('//reg.npm/design/-/rewrite/:_authToken', 'c-token')
- mapRegistry('@test3/basic', npm.config, function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'http://reg.npm/design/-/rewrite/relative/@test3%2fbasic')
- t.deepEqual(auth, {
- scope: '//reg.npm/design/-/rewrite/',
- token: 'c-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'http://reg.npm/design/-/rewrite/relative/')
- })
-})
-
-test('mapToRegistry token scoping', function (t) {
- npm.config.set('scope', '')
- npm.config.set('registry', 'https://reg.npm/')
- npm.config.set('//reg.npm/:_authToken', 'r-token')
-
- t.test('pass token to registry host', function (t) {
- mapRegistry(
- 'https://reg.npm/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://reg.npm/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: 'r-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.test("don't pass token to non-registry host", function (t) {
- mapRegistry(
- 'https://butts.lol/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: undefined,
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: false
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.test('pass token to non-registry host with always-auth', function (t) {
- npm.config.set('always-auth', true)
- mapRegistry(
- 'https://butts.lol/packages/e/easy-1.0.0.tgz',
- npm.config,
- function (er, uri, auth, registry) {
- t.ifError(er, 'mapRegistryToURI worked')
- t.equal(uri, 'https://butts.lol/packages/e/easy-1.0.0.tgz')
- t.deepEqual(auth, {
- scope: '//reg.npm/',
- token: 'r-token',
- username: undefined,
- password: undefined,
- email: undefined,
- auth: undefined,
- alwaysAuth: true
- })
- t.equal(registry, 'https://reg.npm/')
- }
- )
- t.end()
- })
-
- t.end()
-})
diff --git a/deps/npm/test/tap/org.js b/deps/npm/test/tap/org.js
new file mode 100644
index 0000000000..7315cf0b6f
--- /dev/null
+++ b/deps/npm/test/tap/org.js
@@ -0,0 +1,136 @@
+'use strict'
+
+var test = require('tap').test
+var common = require('../common-tap.js')
+
+var mr = common.fakeRegistry.compat
+
+var server
+
+test('setup', function (t) {
+ mr({port: common.port}, function (err, s) {
+ t.ifError(err, 'registry mocked successfully')
+ server = s
+ t.end()
+ })
+})
+
+const names = ['add', 'set']
+const roles = ['developer', 'admin', 'owner']
+
+names.forEach(function (name) {
+ test('org ' + name + ' [orgname] [username]: defaults to developer', function (t) {
+ const membershipData = {
+ org: {
+ name: 'myorg',
+ size: 1
+ },
+ user: 'myuser',
+ role: 'developer'
+ }
+ server.put('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(200, membershipData)
+ common.npm([
+ 'org', 'add', 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+
+ t.same(JSON.parse(stdout), membershipData)
+ t.end()
+ })
+ })
+
+ roles.forEach(function (role) {
+ test('org ' + name + ' [orgname] [username]: accepts role ' + role, function (t) {
+ const membershipData = {
+ org: {
+ name: 'myorg',
+ size: 1
+ },
+ user: 'myuser',
+ role: role
+ }
+ server.put('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(200, membershipData)
+ common.npm([
+ 'org', name, 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+
+ t.same(JSON.parse(stdout), membershipData)
+ t.end()
+ })
+ })
+ })
+})
+
+test('org rm [orgname] [username]', function (t) {
+ const membershipData = {
+ otheruser: 'admin'
+ }
+ server.delete('/-/org/myorg/user', JSON.stringify({
+ user: 'myuser'
+ })).reply(204, {})
+ server.get('/-/org/myorg/user')
+ .reply(200, membershipData)
+ common.npm([
+ 'org', 'rm', 'myorg', 'myuser',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.deepEqual(JSON.parse(stdout), {
+ user: 'myuser',
+ org: 'myorg',
+ deleted: true,
+ userCount: 1
+ }, 'got useful info')
+ t.end()
+ })
+})
+
+test('org ls [orgname]', function (t) {
+ const membershipData = {
+ username: 'admin',
+ username2: 'foo'
+ }
+ server.get('/-/org/myorg/user')
+ .reply(200, membershipData)
+ common.npm([
+ 'org', 'ls', 'myorg',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'silent'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'npm org')
+ t.equal(code, 0, 'exited OK')
+ t.equal(stderr, '', 'no error output')
+ t.same(JSON.parse(stdout), membershipData, 'outputs members')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ t.pass('cleaned up')
+ server.done()
+ server.close()
+ t.end()
+})
diff --git a/deps/npm/test/tap/ping.js b/deps/npm/test/tap/ping.js
index 76d115a482..3562f25a3b 100644
--- a/deps/npm/test/tap/ping.js
+++ b/deps/npm/test/tap/ping.js
@@ -40,14 +40,41 @@ test('npm ping', function (t) {
common.npm([
'ping',
'--registry', common.registry,
- '--loglevel', 'silent',
+ '--loglevel', 'notice',
'--userconfig', outfile
- ], opts, function (err, code, stdout) {
+ ], opts, function (err, code, stdout, stderr) {
s.close()
- t.ifError(err, 'no error output')
+ t.ifError(err, 'command completed')
t.notOk(code, 'exited OK')
- t.same(stdout, 'Ping success: ' + JSON.stringify(pingResponse) + '\n')
+ t.match(stderr, /PING/, 'ping notification output')
+ t.match(stderr, /PONG/, 'pong response output')
+ t.end()
+ })
+ })
+})
+
+test('npm ping --json', function (t) {
+ mr({ port: common.port, plugin: mocks }, function (err, s) {
+ if (err) throw err
+
+ common.npm([
+ 'ping',
+ '--json',
+ '--registry', common.registry,
+ '--loglevel', 'notice',
+ '--userconfig', outfile
+ ], opts, function (err, code, stdout, stderr) {
+ s.close()
+ t.ifError(err, 'command completed')
+ t.notOk(code, 'exited OK')
+
+ const json = JSON.parse(stdout.trim())
+ t.similar(json, {
+ registry: common.registry,
+ details: pingResponse
+ }, 'JSON info returned')
+ t.equal(typeof json.time, 'number', 'got a timestamp')
t.end()
})
})
diff --git a/deps/npm/test/tap/publish-config.js b/deps/npm/test/tap/publish-config.js
index 0566795dbe..14fd40311a 100644
--- a/deps/npm/test/tap/publish-config.js
+++ b/deps/npm/test/tap/publish-config.js
@@ -47,9 +47,13 @@ test(function (t) {
// itself functions normally.
//
// Make sure that we don't sit around waiting for lock files
- child = common.npm(['publish', '--userconfig=' + pkg + '/fixture_npmrc', '--tag=beta'], {
+ child = common.npm([
+ 'publish',
+ '--userconfig=' + pkg + '/fixture_npmrc',
+ '--tag=beta',
+ '--loglevel', 'error'
+ ], {
cwd: pkg,
- stdio: 'inherit',
env: {
'npm_config_cache_lock_stale': 1000,
'npm_config_cache_lock_wait': 1000,
@@ -58,7 +62,9 @@ test(function (t) {
PATH: process.env.PATH,
USERPROFILE: osenv.home()
}
- }, function (err, code) {
+ }, function (err, code, stdout, stderr) {
+ t.comment(stdout)
+ t.comment(stderr)
t.ifError(err, 'publish command finished successfully')
t.notOk(code, 'npm install exited with code 0')
})
diff --git a/deps/npm/test/tap/search.all-package-search.js b/deps/npm/test/tap/search.all-package-search.js
index c70f4f8e7e..51c1ffcf90 100644
--- a/deps/npm/test/tap/search.all-package-search.js
+++ b/deps/npm/test/tap/search.all-package-search.js
@@ -1,21 +1,25 @@
-var path = require('path')
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var osenv = require('osenv')
-var rimraf = require('rimraf')
-var cacheFile = require('npm-cache-filename')
-var test = require('tap').test
-var Tacks = require('tacks')
-var File = Tacks.File
+'use strict'
-var common = require('../common-tap.js')
+const cacheFile = require('npm-cache-filename')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const osenv = require('osenv')
+const path = require('path')
+const qs = require('querystring')
+const rimraf = require('rimraf')
+const Tacks = require('tacks')
+const test = require('tap').test
-var PKG_DIR = path.resolve(__dirname, 'search')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
-var cachePath = path.join(cacheBase, '.cache.json')
+const {File} = Tacks
-var server
+const common = require('../common-tap.js')
+
+const PKG_DIR = path.resolve(__dirname, 'search')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
+const cachePath = path.join(cacheBase, '.cache.json')
+
+let server
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
@@ -26,7 +30,7 @@ test('setup', function (t) {
})
})
-var searches = [
+const searches = [
{
term: 'cool',
description: 'non-regex search',
@@ -139,19 +143,26 @@ var searches = [
searches.forEach(function (search) {
test(search.description, function (t) {
setup()
- server.get('/-/v1/search?text=' + encodeURIComponent(search.term) + '&size=20').once().reply(404, {})
- var now = Date.now()
- var cacheContents = {
+ const query = qs.stringify({
+ text: search.term,
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(404, {})
+ const now = Date.now()
+ const cacheContents = {
'_updated': now,
bar: { name: 'bar', version: '1.0.0' },
cool: { name: 'cool', version: '5.0.0' },
foo: { name: 'foo', version: '2.0.0' },
other: { name: 'other', version: '1.0.0' }
}
- for (var k in search.inject) {
+ for (let k in search.inject) {
cacheContents[k] = search.inject[k]
}
- var fixture = new Tacks(File(cacheContents))
+ const fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
common.npm([
'search', search.term,
@@ -167,12 +178,12 @@ searches.forEach(function (search) {
t.equal(code, 0, 'search finished successfully')
t.ifErr(err, 'search finished successfully')
// \033 == \u001B
- var markStart = '\u001B\\[[0-9][0-9]m'
- var markEnd = '\u001B\\[0m'
+ const markStart = '\u001B\\[[0-9][0-9]m'
+ const markEnd = '\u001B\\[0m'
- var re = new RegExp(markStart + '.*?' + markEnd)
+ const re = new RegExp(markStart + '.*?' + markEnd)
- var cnt = stdout.search(re)
+ const cnt = stdout.search(re)
t.equal(
cnt,
search.location,
diff --git a/deps/npm/test/tap/search.esearch.js b/deps/npm/test/tap/search.esearch.js
deleted file mode 100644
index d892aec957..0000000000
--- a/deps/npm/test/tap/search.esearch.js
+++ /dev/null
@@ -1,192 +0,0 @@
-var common = require('../common-tap.js')
-var finished = require('mississippi').finished
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var npm = require('../../')
-var osenv = require('osenv')
-var path = require('path')
-var rimraf = require('rimraf')
-var test = require('tap').test
-
-var SEARCH = '/-/v1/search'
-var PKG_DIR = path.resolve(__dirname, 'create-entry-update-stream')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-
-var esearch = require('../../lib/search/esearch')
-
-var server
-
-function setup () {
- cleanup()
- mkdirp.sync(CACHE_DIR)
- process.chdir(CACHE_DIR)
-}
-
-function cleanup () {
- process.chdir(osenv.tmpdir())
- rimraf.sync(PKG_DIR)
-}
-
-test('setup', function (t) {
- mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
- t.ifError(err, 'registry mocked successfully')
- npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
- t.ifError(err, 'npm loaded successfully')
- server = s
- t.pass('all set up')
- t.done()
- })
- })
-})
-
-test('basic test', function (t) {
- setup()
- server.get(SEARCH + '?text=oo&size=1').once().reply(200, {
- objects: [
- { package: { name: 'cool', version: '1.0.0' } },
- { package: { name: 'foo', version: '2.0.0' } }
- ]
- })
- var results = []
- var s = esearch({
- include: ['oo'],
- limit: 1
- })
- t.ok(s, 'got a stream')
- s.on('data', function (d) {
- results.push(d)
- })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'stream finished without error')
- t.deepEquals(results, [{
- name: 'cool',
- version: '1.0.0',
- description: null,
- maintainers: null,
- keywords: null,
- date: null
- }, {
- name: 'foo',
- version: '2.0.0',
- description: null,
- maintainers: null,
- keywords: null,
- date: null
- }])
- server.done()
- t.done()
- })
-})
-
-test('only returns certain fields for each package', function (t) {
- setup()
- var date = new Date()
- server.get(SEARCH + '?text=oo&size=1').once().reply(200, {
- objects: [{
- package: {
- name: 'cool',
- version: '1.0.0',
- description: 'desc',
- maintainers: [
- {username: 'x', email: 'a@b.c'},
- {username: 'y', email: 'c@b.a'}
- ],
- keywords: ['a', 'b', 'c'],
- date: date.toISOString(),
- extra: 'lol'
- }
- }]
- })
- var results = []
- var s = esearch({
- include: ['oo'],
- limit: 1
- })
- t.ok(s, 'got a stream')
- s.on('data', function (d) {
- results.push(d)
- })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'stream finished without error')
- t.deepEquals(results, [{
- name: 'cool',
- version: '1.0.0',
- description: 'desc',
- maintainers: [
- {username: 'x', email: 'a@b.c'},
- {username: 'y', email: 'c@b.a'}
- ],
- keywords: ['a', 'b', 'c'],
- date: date
- }])
- server.done()
- t.done()
- })
-})
-
-test('accepts a limit option', function (t) {
- setup()
- server.get(SEARCH + '?text=oo&size=3').once().reply(200, {
- objects: [
- { package: { name: 'cool', version: '1.0.0' } },
- { package: { name: 'cool', version: '1.0.0' } }
- ]
- })
- var results = 0
- var s = esearch({
- include: ['oo'],
- limit: 3
- })
- s.on('data', function () { results++ })
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct size')
- t.equal(results, 2, 'behaves fine with fewer results than size')
- server.done()
- t.done()
- })
-})
-
-test('passes foo:bar syntax params directly', function (t) {
- setup()
- server.get(SEARCH + '?text=foo%3Abar&size=1').once().reply(200, {
- objects: []
- })
- var s = esearch({
- include: ['foo:bar'],
- limit: 1
- })
- s.on('data', function () {})
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct params')
- server.done()
- t.done()
- })
-})
-
-test('space-separates and URI-encodes multiple search params', function (t) {
- setup()
- server.get(SEARCH + '?text=foo%20bar%3Abaz%20quux%3F%3D&size=1').once().reply(200, {
- objects: []
- })
- var s = esearch({
- include: ['foo', 'bar:baz', 'quux?='],
- limit: 1
- })
- s.on('data', function () {})
- finished(s, function (err) {
- if (err) { throw err }
- t.ok(true, 'request sent with correct params')
- server.done()
- t.done()
- })
-})
-
-test('cleanup', function (t) {
- server.close()
- cleanup()
- t.done()
-})
diff --git a/deps/npm/test/tap/search.js b/deps/npm/test/tap/search.js
index df7ff0fe37..bbd293c3a1 100644
--- a/deps/npm/test/tap/search.js
+++ b/deps/npm/test/tap/search.js
@@ -1,21 +1,25 @@
-var path = require('path')
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var osenv = require('osenv')
-var rimraf = require('rimraf')
-var cacheFile = require('npm-cache-filename')
-var test = require('tap').test
-var Tacks = require('tacks')
-var File = Tacks.File
+'use strict'
-var common = require('../common-tap.js')
+const cacheFile = require('npm-cache-filename')
+const mkdirp = require('mkdirp')
+const mr = require('npm-registry-mock')
+const osenv = require('osenv')
+const path = require('path')
+const qs = require('querystring')
+const rimraf = require('rimraf')
+const test = require('tap').test
-var PKG_DIR = path.resolve(__dirname, 'search')
-var CACHE_DIR = path.resolve(PKG_DIR, 'cache')
-var cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
-var cachePath = path.join(cacheBase, '.cache.json')
+const Tacks = require('tacks')
+const File = Tacks.File
-var server
+const common = require('../common-tap.js')
+
+const PKG_DIR = path.resolve(__dirname, 'search')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+const cacheBase = cacheFile(CACHE_DIR)(common.registry + '/-/all')
+const cachePath = path.join(cacheBase, '.cache.json')
+
+let server
test('setup', function (t) {
mr({port: common.port, throwOnUnmatched: true}, function (err, s) {
@@ -28,7 +32,14 @@ test('setup', function (t) {
test('notifies when there are no results', function (t) {
setup()
- server.get('/-/v1/search?text=none&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'none',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
@@ -46,10 +57,17 @@ test('notifies when there are no results', function (t) {
test('spits out a useful error when no cache nor network', function (t) {
setup()
- server.get('/-/v1/search?text=foo&size=20').once().reply(404, {})
+ const query = qs.stringify({
+ text: 'foo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(404, {})
server.get('/-/all').many().reply(404, {})
- var cacheContents = {}
- var fixture = new Tacks(File(cacheContents))
+ const cacheContents = {}
+ const fixture = new Tacks(File(cacheContents))
fixture.create(cachePath)
common.npm([
'search', 'foo',
@@ -70,7 +88,14 @@ test('spits out a useful error when no cache nor network', function (t) {
test('can switch to JSON mode', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: [
{ package: { name: 'cool', version: '1.0.0' } },
{ package: { name: 'foo', version: '2.0.0' } }
@@ -86,9 +111,15 @@ test('can switch to JSON mode', function (t) {
if (err) throw err
t.equal(stderr, '', 'no error output')
t.equal(code, 0, 'search gives 0 error code even if no matches')
- t.deepEquals(JSON.parse(stdout), [
- { name: 'cool', version: '1.0.0', date: null },
- { name: 'foo', version: '2.0.0', date: null }
+ t.similar(JSON.parse(stdout), [
+ {
+ name: 'cool',
+ version: '1.0.0'
+ },
+ {
+ name: 'foo',
+ version: '2.0.0'
+ }
], 'results returned as valid json')
t.done()
})
@@ -96,7 +127,14 @@ test('can switch to JSON mode', function (t) {
test('JSON mode does not notify on empty', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
@@ -116,7 +154,14 @@ test('JSON mode does not notify on empty', function (t) {
test('can switch to tab separated mode', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: [
{ package: { name: 'cool', version: '1.0.0' } },
{ package: { name: 'foo', description: 'this\thas\ttabs', version: '2.0.0' } }
@@ -139,7 +184,14 @@ test('can switch to tab separated mode', function (t) {
test('tab mode does not notify on empty', function (t) {
setup()
- server.get('/-/v1/search?text=oo&size=20').once().reply(200, {
+ const query = qs.stringify({
+ text: 'oo',
+ size: 20,
+ quality: 0.65,
+ popularity: 0.98,
+ maintenance: 0.5
+ })
+ server.get(`/-/v1/search?${query}`).once().reply(200, {
objects: []
})
common.npm([
diff --git a/deps/npm/test/tap/team.js b/deps/npm/test/tap/team.js
index 38caadde53..939da45b77 100644
--- a/deps/npm/test/tap/team.js
+++ b/deps/npm/test/tap/team.js
@@ -22,17 +22,19 @@ test('team create basic', function (t) {
deleted: null
}
server.put('/-/org/myorg/team', JSON.stringify({
- name: teamData.name
+ name: teamData.name,
+ description: null
})).reply(200, teamData)
common.npm([
'team', 'create', 'myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'error',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {created: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -46,17 +48,19 @@ test('team create (allow optional @ prefix on scope)', function (t) {
deleted: null
}
server.put('/-/org/myorg/team', JSON.stringify({
- name: teamData.name
+ name: teamData.name,
+ description: null
})).reply(200, teamData)
common.npm([
'team', 'create', '@myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {created: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -73,12 +77,13 @@ test('team destroy', function (t) {
common.npm([
'team', 'destroy', 'myorg:' + teamData.name,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), teamData)
+ t.same(JSON.parse(stdout), {deleted: true, team: `myorg:${teamData.name}`})
t.end()
})
})
@@ -87,11 +92,12 @@ test('team add', function (t) {
var user = 'zkat'
server.put('/-/team/myorg/myteam/user', JSON.stringify({
user: user
- })).reply(200)
+ })).reply(200, {})
common.npm([
'team', 'add', 'myorg:myteam', user,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'error',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -104,11 +110,12 @@ test('team rm', function (t) {
var user = 'zkat'
server.delete('/-/team/myorg/myteam/user', JSON.stringify({
user: user
- })).reply(200)
+ })).reply(200, {})
common.npm([
'team', 'rm', 'myorg:myteam', user,
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -123,7 +130,8 @@ test('team ls (on org)', function (t) {
common.npm([
'team', 'ls', 'myorg',
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
@@ -139,12 +147,13 @@ test('team ls (on team)', function (t) {
common.npm([
'team', 'ls', 'myorg:myteam',
'--registry', common.registry,
- '--loglevel', 'silent'
+ '--loglevel', 'silent',
+ '--json'
], {}, function (err, code, stdout, stderr) {
t.ifError(err, 'npm team')
t.equal(code, 0, 'exited OK')
t.equal(stderr, '', 'no error output')
- t.same(JSON.parse(stdout), users)
+ t.same(JSON.parse(stdout).sort(), users.sort())
t.end()
})
})
diff --git a/deps/npm/test/tap/view.js b/deps/npm/test/tap/view.js
index 30ccdb471c..a01fa903a2 100644
--- a/deps/npm/test/tap/view.js
+++ b/deps/npm/test/tap/view.js
@@ -97,7 +97,7 @@ test('npm view . with no published package', function (t) {
], { 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)
+ t.similar(stderr, /not in the npm registry/m)
t.end()
})
})