| var fs = require('graceful-fs') |
| var path = require('path') |
| |
| var mkdirp = require('mkdirp') |
| var osenv = require('osenv') |
| var rimraf = require('rimraf') |
| var test = require('tap').test |
| |
| var common = require('../common-tap.js') |
| |
| var pkg = path.join(__dirname, 'install-shrinkwrap-equals-ls') |
| |
| var EXEC_OPTS = {cwd: pkg} |
| |
| var json = { |
| "name": "install-shrinkwrap-equals-ls", |
| "version": "1.0.0", |
| "dependencies": { |
| "react": "^0.14.0", |
| "react-bootstrap": "^0.28.1", |
| "react-dom": "^0.14.0" |
| } |
| } |
| |
| var shrinkwrap = { |
| "name": "install-shrinkwrap-equals-ls", |
| "version": "1.0.0", |
| "dependencies": { |
| "react": { |
| "version": "0.14.8", |
| "from": "react@>=0.14.0 <0.15.0", |
| "resolved": "https://registry.npmjs.org/react/-/react-0.14.8.tgz", |
| "dependencies": { |
| "envify": { |
| "version": "3.4.0", |
| "from": "envify@>=3.0.0 <4.0.0", |
| "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", |
| "dependencies": { |
| "through": { |
| "version": "2.3.8", |
| "from": "through@>=2.3.4 <2.4.0", |
| "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" |
| }, |
| "jstransform": { |
| "version": "10.1.0", |
| "from": "jstransform@>=10.0.1 <11.0.0", |
| "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", |
| "dependencies": { |
| "base62": { |
| "version": "0.1.1", |
| "from": "base62@0.1.1", |
| "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" |
| }, |
| "esprima-fb": { |
| "version": "13001.1001.0-dev-harmony-fb", |
| "from": "esprima-fb@13001.1001.0-dev-harmony-fb", |
| "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" |
| }, |
| "source-map": { |
| "version": "0.1.31", |
| "from": "source-map@0.1.31", |
| "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", |
| "dependencies": { |
| "amdefine": { |
| "version": "1.0.0", |
| "from": "amdefine@>=0.0.4", |
| "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "fbjs": { |
| "version": "0.6.1", |
| "from": "fbjs@>=0.6.1 <0.7.0", |
| "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", |
| "dependencies": { |
| "core-js": { |
| "version": "1.2.6", |
| "from": "core-js@>=1.0.0 <2.0.0", |
| "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz" |
| }, |
| "loose-envify": { |
| "version": "1.1.0", |
| "from": "loose-envify@>=1.0.0 <2.0.0", |
| "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz", |
| "dependencies": { |
| "js-tokens": { |
| "version": "1.0.3", |
| "from": "js-tokens@>=1.0.1 <2.0.0", |
| "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz" |
| } |
| } |
| }, |
| "promise": { |
| "version": "7.1.1", |
| "from": "promise@>=7.0.3 <8.0.0", |
| "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", |
| "dependencies": { |
| "asap": { |
| "version": "2.0.3", |
| "from": "asap@>=2.0.3 <2.1.0", |
| "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz" |
| } |
| } |
| }, |
| "ua-parser-js": { |
| "version": "0.7.10", |
| "from": "ua-parser-js@>=0.7.9 <0.8.0", |
| "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz" |
| }, |
| "whatwg-fetch": { |
| "version": "0.9.0", |
| "from": "whatwg-fetch@>=0.9.0 <0.10.0", |
| "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz" |
| } |
| } |
| } |
| } |
| }, |
| "react-bootstrap": { |
| "version": "0.28.5", |
| "from": "react-bootstrap@>=0.28.1 <0.29.0", |
| "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.28.5.tgz", |
| "dependencies": { |
| "babel-runtime": { |
| "version": "5.8.38", |
| "from": "babel-runtime@>=5.8.25 <6.0.0", |
| "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", |
| "dependencies": { |
| "core-js": { |
| "version": "1.2.6", |
| "from": "core-js@>=1.0.0 <2.0.0", |
| "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.6.tgz" |
| } |
| } |
| }, |
| "classnames": { |
| "version": "2.2.3", |
| "from": "classnames@>=2.1.5 <3.0.0", |
| "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.3.tgz" |
| }, |
| "dom-helpers": { |
| "version": "2.4.0", |
| "from": "dom-helpers@>=2.4.0 <3.0.0", |
| "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" |
| }, |
| "invariant": { |
| "version": "2.2.1", |
| "from": "invariant@>=2.1.2 <3.0.0", |
| "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.1.tgz", |
| "dependencies": { |
| "loose-envify": { |
| "version": "1.1.0", |
| "from": "loose-envify@>=1.0.0 <2.0.0", |
| "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz", |
| "dependencies": { |
| "js-tokens": { |
| "version": "1.0.3", |
| "from": "js-tokens@>=1.0.1 <2.0.0", |
| "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz" |
| } |
| } |
| } |
| } |
| }, |
| "keycode": { |
| "version": "2.1.1", |
| "from": "keycode@>=2.1.0 <3.0.0", |
| "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.1.tgz" |
| }, |
| "lodash-compat": { |
| "version": "3.10.2", |
| "from": "lodash-compat@>=3.10.1 <4.0.0", |
| "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.2.tgz" |
| }, |
| "react-overlays": { |
| "version": "0.6.3", |
| "from": "react-overlays@>=0.6.0 <0.7.0", |
| "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.6.3.tgz", |
| "dependencies": { |
| "react-prop-types": { |
| "version": "0.2.2", |
| "from": "react-prop-types@>=0.2.1 <0.3.0", |
| "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" |
| } |
| } |
| }, |
| "react-prop-types": { |
| "version": "0.3.0", |
| "from": "react-prop-types@>=0.3.0 <0.4.0", |
| "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz" |
| }, |
| "uncontrollable": { |
| "version": "3.2.3", |
| "from": "uncontrollable@>=3.1.3 <4.0.0", |
| "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.2.3.tgz" |
| }, |
| "warning": { |
| "version": "2.1.0", |
| "from": "warning@>=2.1.0 <3.0.0", |
| "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", |
| "dependencies": { |
| "loose-envify": { |
| "version": "1.1.0", |
| "from": "loose-envify@>=1.0.0 <2.0.0", |
| "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.1.0.tgz", |
| "dependencies": { |
| "js-tokens": { |
| "version": "1.0.3", |
| "from": "js-tokens@>=1.0.1 <2.0.0", |
| "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.3.tgz" |
| } |
| } |
| } |
| } |
| } |
| } |
| }, |
| "react-dom": { |
| "version": "0.14.8", |
| "from": "react-dom@>=0.14.0 <0.15.0", |
| "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.8.tgz" |
| } |
| } |
| } |
| |
| |
| test('setup', function (t) { |
| setup() |
| t.end() |
| }) |
| |
| test('An npm install with shrinkwrap equals npm ls --json', function (t) { |
| common.npm( |
| [ |
| '--loglevel', 'silent', |
| 'install' |
| ], |
| EXEC_OPTS, |
| function (err, code) { |
| t.ifError(err, 'npm install ran without issue') |
| t.notOk(code, 'npm install exited with code 0') |
| common.npm( |
| [ |
| '--loglevel', 'silent', |
| 'ls', '--json' |
| ], |
| EXEC_OPTS, |
| function (err, code, out) { |
| t.ifError(err, 'npm ls --json ran without issue') |
| t.notOk(code, 'npm ls --json exited with code 0') |
| var actual = common.rmFromInShrinkwrap(JSON.parse(out)) |
| var expected = common.rmFromInShrinkwrap( |
| JSON.parse(JSON.stringify(shrinkwrap)) |
| ) |
| t.deepEqual(actual, expected) |
| t.end() |
| }) |
| } |
| ) |
| }) |
| |
| test('cleanup', function (t) { |
| cleanup() |
| t.end() |
| }) |
| |
| function cleanup () { |
| process.chdir(__dirname) |
| rimraf.sync(pkg) |
| } |
| |
| function setup () { |
| cleanup() |
| mkdirp.sync(pkg) |
| process.chdir(pkg) |
| fs.writeFileSync( |
| 'package.json', |
| JSON.stringify(json, null, 2) |
| ) |
| fs.writeFileSync( |
| 'npm-shrinkwrap.json', |
| JSON.stringify(shrinkwrap, null, 2) |
| ) |
| } |