1 var fs = require('graceful-fs')
2 var path = require('path')
4 var mkdirp = require('mkdirp')
5 var osenv = require('osenv')
6 var rimraf = require('rimraf')
7 var test = require('tap').test
9 var common = require('../common-tap.js')
11 var pkg = path.join(__dirname, 'install-shrinkwrap-equals-ls')
13 var EXEC_OPTS = {cwd: pkg}
16 "name": "install-shrinkwrap-equals-ls",
20 "react-bootstrap": "^0.28.1",
21 "react-dom": "^0.14.0"
26 "name": "install-shrinkwrap-equals-ls",
31 "from": "react@>=0.14.0 <0.15.0",
32 "resolved": "https://registry.npmjs.org/react/-/react-0.14.8.tgz",
36 "from": "envify@>=3.0.0 <4.0.0",
37 "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz",
41 "from": "through@>=2.3.4 <2.4.0",
42 "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
46 "from": "jstransform@>=10.0.1 <11.0.0",
47 "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz",
51 "from": "base62@0.1.1",
52 "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz"
55 "version": "13001.1001.0-dev-harmony-fb",
56 "from": "esprima-fb@13001.1001.0-dev-harmony-fb",
57 "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz"
61 "from": "source-map@0.1.31",
62 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz",
66 "from": "amdefine@>=0.0.4",
67 "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz"
77 "from": "fbjs@>=0.6.1 <0.7.0",
78 "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz",
82 "from": "core-js@>=1.0.0 <2.0.0",
83 "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz"
87 "from": "loose-envify@>=1.0.0 <2.0.0",
88 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz",
92 "from": "js-tokens@>=1.0.1 <2.0.0",
93 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz"
99 "from": "promise@>=7.0.3 <8.0.0",
100 "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz",
104 "from": "asap@>=2.0.3 <2.1.0",
105 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz"
111 "from": "ua-parser-js@>=0.7.9 <0.8.0",
112 "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz"
116 "from": "whatwg-fetch@>=0.9.0 <0.10.0",
117 "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz"
125 "from": "react-bootstrap@>=0.28.1 <0.29.0",
126 "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.28.5.tgz",
130 "from": "babel-runtime@>=5.8.25 <6.0.0",
131 "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz",
135 "from": "core-js@>=1.0.0 <2.0.0",
136 "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz"
142 "from": "classnames@>=2.1.5 <3.0.0",
143 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.3.tgz"
147 "from": "dom-helpers@>=2.4.0 <3.0.0",
148 "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz"
152 "from": "invariant@>=2.1.2 <3.0.0",
153 "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.1.tgz",
157 "from": "loose-envify@>=1.0.0 <2.0.0",
158 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz",
162 "from": "js-tokens@>=1.0.1 <2.0.0",
163 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz"
171 "from": "keycode@>=2.1.0 <3.0.0",
172 "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.1.tgz"
176 "from": "lodash-compat@>=3.10.1 <4.0.0",
177 "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.2.tgz"
181 "from": "react-overlays@>=0.6.0 <0.7.0",
182 "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.3.tgz",
184 "react-prop-types": {
186 "from": "react-prop-types@>=0.2.1 <0.3.0",
187 "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz"
191 "react-prop-types": {
193 "from": "react-prop-types@>=0.3.0 <0.4.0",
194 "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz"
198 "from": "uncontrollable@>=3.1.3 <4.0.0",
199 "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.2.3.tgz"
203 "from": "warning@>=2.1.0 <3.0.0",
204 "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz",
208 "from": "loose-envify@>=1.0.0 <2.0.0",
209 "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz",
213 "from": "js-tokens@>=1.0.1 <2.0.0",
214 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz"
224 "from": "react-dom@>=0.14.0 <0.15.0",
225 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.8.tgz"
231 test('setup', function (t) {
236 test('An npm install with shrinkwrap equals npm ls --json', function (t) {
239 '--loglevel', 'silent',
243 function (err, code) {
244 t.ifError(err, 'npm install ran without issue')
245 t.notOk(code, 'npm install exited with code 0')
248 '--loglevel', 'silent',
252 function (err, code, out) {
253 t.ifError(err, 'npm ls --json ran without issue')
254 t.notOk(code, 'npm ls --json exited with code 0')
255 var actual = common.rmFromInShrinkwrap(JSON.parse(out))
256 var expected = common.rmFromInShrinkwrap(
257 JSON.parse(JSON.stringify(shrinkwrap))
259 t.deepEqual(actual, expected)
266 test('cleanup', function (t) {
271 function cleanup () {
272 process.chdir(__dirname)
282 JSON.stringify(json, null, 2)
285 'npm-shrinkwrap.json',
286 JSON.stringify(shrinkwrap, null, 2)