diff options
Diffstat (limited to 'deps/npm/test/tap/install-before.js')
-rw-r--r-- | deps/npm/test/tap/install-before.js | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/deps/npm/test/tap/install-before.js b/deps/npm/test/tap/install-before.js new file mode 100644 index 0000000000..c99b996c43 --- /dev/null +++ b/deps/npm/test/tap/install-before.js @@ -0,0 +1,89 @@ +'use strict' + +const BB = require('bluebird') + +const common = require('../common-tap.js') +const mockTar = require('../util/mock-tarball.js') +const mr = common.fakeRegistry.compat +const path = require('path') +const rimraf = BB.promisify(require('rimraf')) +const Tacks = require('tacks') +const { test } = require('tap') + +const { Dir, File } = Tacks + +const testDir = path.join(__dirname, path.basename(__filename, '.js')) + +let server +test('setup', t => { + mr({}, (err, s) => { + t.ifError(err, 'registry mocked successfully') + server = s + t.end() + }) +}) + +test('installs an npm package before a certain date', t => { + const fixture = new Tacks(Dir({ + 'package.json': File({}) + })) + fixture.create(testDir) + const packument = { + name: 'foo', + 'dist-tags': { latest: '1.2.4' }, + versions: { + '1.2.3': { + name: 'foo', + version: '1.2.3', + dist: { + tarball: `${server.registry}/foo/-/foo-1.2.3.tgz` + } + }, + '1.2.4': { + name: 'foo', + version: '1.2.4', + dist: { + tarball: `${server.registry}/foo/-/foo-1.2.4.tgz` + } + } + }, + time: { + created: '2017-01-01T00:00:01.000Z', + modified: '2018-01-01T00:00:01.000Z', + '1.2.3': '2017-01-01T00:00:01.000Z', + '1.2.4': '2018-01-01T00:00:01.000Z' + } + } + server.get('/foo').reply(200, packument) + return mockTar({ + 'package.json': JSON.stringify({ + name: 'foo', + version: '1.2.3' + }) + }).then(tarball => { + server.get('/foo/-/foo-1.2.3.tgz').reply(200, tarball) + server.get('/foo/-/foo-1.2.4.tgz').reply(500) + return common.npm([ + 'install', 'foo', + '--before', '2018', + '--json', + '--cache', path.join(testDir, 'npmcache'), + '--registry', server.registry + ], { cwd: testDir }) + }).then(([code, stdout, stderr]) => { + t.comment(stdout) + t.comment(stderr) + t.like(JSON.parse(stdout), { + added: [{ + action: 'add', + name: 'foo', + version: '1.2.3' + }] + }, 'installed the 2017 version of the package') + }) +}) + +test('cleanup', t => { + server.close() + return rimraf(testDir) +}) |