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