• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var fs = require('fs')
2var path = require('path')
3
4var mr = require('npm-registry-mock')
5var test = require('tap').test
6
7var common = require('../common-tap.js')
8
9var pkg = common.pkg
10
11var opts = [
12  '--cache', common.cache,
13  '--registry', common.registry
14]
15
16var desired = {
17  name: 'npm-test-shrinkwrap-dev-dependency',
18  version: '0.0.0',
19  dependencies: {
20    request: {
21      version: '0.9.0',
22      resolved: common.registry + '/request/-/request-0.9.0.tgz',
23      integrity: 'sha1-EEn1mm9GWI5tAwkh+7hMovDCcU4='
24    },
25    underscore: {
26      version: '1.3.1',
27      resolved: common.registry + '/underscore/-/underscore-1.3.1.tgz',
28      integrity: 'sha1-bLiq0Od+tdu/tUsivNhpcwnPlkE='
29    }
30  }
31}
32
33var json = {
34  author: 'Domenic Denicola',
35  name: 'npm-test-shrinkwrap-dev-dependency',
36  version: '0.0.0',
37  dependencies: {
38    request: '0.9.0',
39    underscore: '1.3.1'
40  },
41  devDependencies: {
42    underscore: '1.5.1'
43  }
44}
45
46test("shrinkwrap doesn't strip out the dependency", function (t) {
47  t.plan(3)
48
49  fs.writeFileSync(path.join(pkg, 'package.json'), JSON.stringify(json, null, 2))
50  process.chdir(pkg)
51
52  mr({port: common.port}, function (er, s) {
53    common.npm(opts.concat(['install', '.']), {stdio: [0, 'pipe', 2]}, function (err, code) {
54      if (err) throw err
55      if (!t.is(code, 0)) return (s.close(), t.end())
56      common.npm(opts.concat(['shrinkwrap']), {stdio: [0, 2, 2]}, function (err, code) {
57        if (err) throw err
58        t.is(code, 0)
59        try {
60          var results = JSON.parse(fs.readFileSync(path.join(pkg, 'npm-shrinkwrap.json')))
61        } catch (ex) {
62          t.comment(ex)
63        }
64        t.deepEqual(results.dependencies, desired.dependencies)
65        s.close()
66        t.end()
67      })
68    })
69  })
70})
71