aboutsummaryrefslogtreecommitdiff
path: root/deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js')
-rw-r--r--deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js122
1 files changed, 122 insertions, 0 deletions
diff --git a/deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js b/deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
new file mode 100644
index 00000000..94bb7413
--- /dev/null
+++ b/deps/node/deps/npm/test/tap/all-package-metadata-write-stream-unit.js
@@ -0,0 +1,122 @@
+'use strict'
+
+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')
+
+const _createCacheWriteStream = require('../../lib/search/all-package-metadata.js')._createCacheWriteStream
+
+const PKG_DIR = path.resolve(__dirname, 'create-cache-write-stream')
+const CACHE_DIR = path.resolve(PKG_DIR, 'cache')
+
+function setup () {
+ mkdirp.sync(CACHE_DIR)
+}
+
+function cleanup () {
+ rimraf.sync(PKG_DIR)
+}
+
+function fromArray (array) {
+ var idx = 0
+ return ms.from.obj(function (size, next) {
+ next(null, array[idx++] || null)
+ })
+}
+
+test('setup', function (t) {
+ // This is pretty much only used for `getCacheStat` in the implementation
+ npm.load({ cache: CACHE_DIR, registry: common.registry }, function (err) {
+ t.ifError(err, 'npm successfully loaded')
+ t.done()
+ })
+})
+
+test('createCacheEntryStream basic', function (t) {
+ setup()
+ var cachePath = path.join(CACHE_DIR, '.cache.json')
+ var latest = 12345
+ var src = [
+ { name: 'bar', version: '1.0.0' },
+ { name: 'foo', version: '1.0.0' }
+ ]
+ var srcStream = fromArray(src)
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
+ t.ok(stream, 'returned a stream')
+ stream = ms.pipeline.obj(srcStream, stream)
+ 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'
+ }
+ }, 'cache contents based on what was written')
+ cleanup()
+ })
+})
+
+test('createCacheEntryStream no entries', function (t) {
+ setup()
+ const cachePath = path.join(CACHE_DIR, '.cache.json')
+ var latest = 12345
+ 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()
+ return getStream(stream)
+ }).then(() => {
+ const fileData = JSON.parse(fs.readFileSync(cachePath))
+ t.ok(fileData, 'cache file exists and has stuff in it')
+ cleanup()
+ })
+})
+
+test('createCacheEntryStream missing cache dir', function (t) {
+ setup()
+ var cachePath = path.join(CACHE_DIR, '.cache.json')
+ var latest = 12345
+ var src = []
+ var srcStream = fromArray(src)
+ return _createCacheWriteStream(cachePath, latest, {
+ cache: CACHE_DIR
+ }).then(stream => {
+ t.ok(stream, 'returned a stream')
+ stream = ms.pipeline.obj(srcStream, stream)
+ 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()
+ })
+})