1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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)
})
|