Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTim Oxley <secoif@gmail.com>2014-02-21 03:00:04 +0400
committerisaacs <i@izs.me>2014-02-21 05:40:56 +0400
commit17f07df8ad8e594304c2445bf7489cb53346f2c5 (patch)
treed76c39abc09210ead02917adb2395c98c26b5153 /test
parent2ddd06037e9bd58cd95a380a9381ff90bea47f0d (diff)
Add --save-exact config for --save[-dev|-optional].
Related: https://github.com/npm/npm/issues/4713 https://github.com/npm/npm/issues/4587
Diffstat (limited to 'test')
-rw-r--r--test/tap/install-save-exact.js92
-rw-r--r--test/tap/install-save-exact/README.md1
-rw-r--r--test/tap/install-save-exact/index.js1
-rw-r--r--test/tap/install-save-exact/package.json7
4 files changed, 101 insertions, 0 deletions
diff --git a/test/tap/install-save-exact.js b/test/tap/install-save-exact.js
new file mode 100644
index 000000000..cf25b779b
--- /dev/null
+++ b/test/tap/install-save-exact.js
@@ -0,0 +1,92 @@
+var common = require('../common-tap.js')
+var test = require('tap').test
+var npm = require('../../')
+var osenv = require('osenv')
+var path = require('path')
+var fs = require('fs')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var pkg = path.join(__dirname, 'install-save-exact')
+var mr = require("npm-registry-mock")
+
+test("setup", function (t) {
+ mkdirp.sync(pkg)
+ mkdirp.sync(path.resolve(pkg, 'node_modules'))
+ process.chdir(pkg)
+ t.end()
+})
+
+test('"npm install --save --save-exact should install local pkg', function(t) {
+ resetPackageJSON(pkg)
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save', true)
+ npm.config.set('save-exact', true)
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ t.deepEqual(pkgJson.dependencies, {
+ 'underscore': '1.3.1'
+ }, 'Underscore dependency should specify exactly 1.3.1')
+ npm.config.set('save', undefined)
+ npm.config.set('save-exact', undefined)
+ s.close()
+ t.end()
+ })
+ })
+ })
+})
+
+test('"npm install --save-dev --save-exact should install local pkg', function(t) {
+ resetPackageJSON(pkg)
+
+ mr(common.port, function (s) {
+ npm.load({
+ cache: pkg + "/cache",
+ loglevel: 'silent',
+ registry: common.registry }, function(err) {
+ t.ifError(err)
+ npm.config.set('save-dev', true)
+ npm.config.set('save-exact', true)
+ npm.commands.install(['underscore@1.3.1'], function(err) {
+ t.ifError(err)
+ var p = path.resolve(pkg, 'node_modules/underscore/package.json')
+ t.ok(JSON.parse(fs.readFileSync(p)))
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ console.log(pkgJson)
+ t.deepEqual(pkgJson.devDependencies, {
+ 'underscore': '1.3.1'
+ }, 'underscore devDependency should specify exactly 1.3.1')
+ s.close()
+ npm.config.set('save-dev', undefined)
+ npm.config.set('save-exact', undefined)
+ t.end()
+ })
+ })
+ })
+})
+
+test('cleanup', function(t) {
+ process.chdir(__dirname)
+ rimraf.sync(path.resolve(pkg, 'node_modules'))
+ rimraf.sync(path.resolve(pkg, 'cache'))
+ resetPackageJSON(pkg)
+ t.end()
+})
+
+function resetPackageJSON(pkg) {
+ var pkgJson = JSON.parse(fs.readFileSync(pkg + '/package.json', 'utf8'))
+ delete pkgJson.dependencies
+ delete pkgJson.devDependencies
+ delete pkgJson.optionalDependencies
+ var json = JSON.stringify(pkgJson, null, 2) + "\n"
+ fs.writeFileSync(pkg + '/package.json', json, "ascii")
+}
+
+
diff --git a/test/tap/install-save-exact/README.md b/test/tap/install-save-exact/README.md
new file mode 100644
index 000000000..aca67ff17
--- /dev/null
+++ b/test/tap/install-save-exact/README.md
@@ -0,0 +1 @@
+# just a test
diff --git a/test/tap/install-save-exact/index.js b/test/tap/install-save-exact/index.js
new file mode 100644
index 000000000..33c1891f8
--- /dev/null
+++ b/test/tap/install-save-exact/index.js
@@ -0,0 +1 @@
+module.exports = true
diff --git a/test/tap/install-save-exact/package.json b/test/tap/install-save-exact/package.json
new file mode 100644
index 000000000..84789fc22
--- /dev/null
+++ b/test/tap/install-save-exact/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "bla",
+ "description": "fixture",
+ "version": "0.0.1",
+ "main": "index.js",
+ "repository": "git://github.com/robertkowalski/bogusfixture"
+}