1 var fs = require('graceful-fs')
2 var path = require('path')
4 var mkdirp = require('mkdirp')
5 var mr = require('npm-registry-mock')
6 var osenv = require('osenv')
7 var rimraf = require('rimraf')
8 var test = require('tap').test
10 var common = require('../common-tap.js')
13 var pkg = path.join(__dirname, 'install-save-exact')
15 var EXEC_OPTS = { cwd: pkg }
18 name: 'install-save-exact',
20 description: 'fixture'
23 test('setup', function (t) {
25 mr({ port: common.port }, function (er, s) {
31 test('\'npm install --save --save-exact\' should install local pkg', function (t) {
34 '--loglevel', 'silent',
35 '--registry', common.registry,
38 'install', 'underscore@1.3.1'
41 function (err, code) {
42 t.ifError(err, 'npm ran without issue')
43 t.notOk(code, 'npm install exited without raising an error code')
45 var p = path.resolve(pkg, 'node_modules/underscore/package.json')
46 t.ok(JSON.parse(fs.readFileSync(p)))
48 p = path.resolve(pkg, 'package.json')
49 var pkgJson = JSON.parse(fs.readFileSync(p, 'utf8'))
53 { 'underscore': '1.3.1' },
54 'underscore dependency should specify exactly 1.3.1'
62 test('\'npm install --save-dev --save-exact\' should install local pkg', function (t) {
67 '--loglevel', 'silent',
68 '--registry', common.registry,
71 'install', 'underscore@1.3.1'
74 function (err, code) {
75 t.ifError(err, 'npm ran without issue')
76 t.notOk(code, 'npm install exited without raising an error code')
78 var p = path.resolve(pkg, 'node_modules/underscore/package.json')
79 t.ok(JSON.parse(fs.readFileSync(p)))
81 p = path.resolve(pkg, 'package.json')
82 var pkgJson = JSON.parse(fs.readFileSync(p, 'utf8'))
85 pkgJson.devDependencies,
86 { 'underscore': '1.3.1' },
87 'underscore dependency should specify exactly 1.3.1'
95 test('cleanup', function (t) {
101 function cleanup () {
102 process.chdir(osenv.tmpdir())
108 mkdirp.sync(path.resolve(pkg, 'node_modules'))
110 path.join(pkg, 'package.json'),
111 JSON.stringify(json, null, 2)