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:
authorKat Marchán <kzm@sykosomatic.org>2015-07-31 02:01:09 +0300
committerForrest L Norvell <forrest@npmjs.com>2015-08-28 02:54:09 +0300
commit4c1bcea9831f3ed57347b9a801e94a8b404e75f9 (patch)
tree9f45fa22ab4c239872172418f3b120d271e5da30 /test
parent4aae4ded5cb76e66dfa23b9cf13007b169081f53 (diff)
tests: check that preferGlobal is warning properly
PR-URL: https://github.com/npm/npm/pull/9409
Diffstat (limited to 'test')
-rw-r--r--test/tap/install-preferglobal-warnings.js131
1 files changed, 131 insertions, 0 deletions
diff --git a/test/tap/install-preferglobal-warnings.js b/test/tap/install-preferglobal-warnings.js
new file mode 100644
index 000000000..9cd2644c5
--- /dev/null
+++ b/test/tap/install-preferglobal-warnings.js
@@ -0,0 +1,131 @@
+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 preferGlobalJson = {
+ name: 'npm-test-preferglobal-dep',
+ version: '0.0.0',
+ preferGlobal: true
+}
+
+var dependenciesJson = {
+ name: 'npm-test-preferglobal-dependency-check',
+ version: '0.0.0',
+ dependencies: {
+ 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
+ }
+}
+
+var devDependenciesJson = {
+ name: 'npm-test-preferglobal-devDependency-check',
+ version: '0.0.0',
+ devDependencies: {
+ 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
+ }
+}
+
+var emptyPackage = {
+ name: 'npm-test-preferglobal-empty-package',
+ version: '0.0.0'
+}
+
+test('install a preferGlobal dependency without warning', function (t) {
+ setup(dependenciesJson)
+ common.npm([
+ 'install',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.notMatch(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should not warn when dependency is preferGlobal')
+ t.end()
+ })
+})
+
+test('install a preferGlobal dependency without warning', function (t) {
+ setup(devDependenciesJson)
+ common.npm([
+ 'install',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.notMatch(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should not warn when devDependency is preferGlobal')
+ t.end()
+ })
+})
+
+test('warn if a preferGlobal package is being installed direct', function (t) {
+ setup(emptyPackage)
+ common.npm([
+ 'install',
+ 'file:../' + preferGlobalJson.name,
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.match(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should warn when new package is preferGlobal')
+ t.end()
+ })
+})
+
+test('warn if a preferGlobal package is being saved', function (t) {
+ setup(emptyPackage)
+ common.npm([
+ 'install',
+ 'file:../' + preferGlobalJson.name,
+ '--save',
+ '--loglevel=warn'
+ ], {}, function (err, code, stdout, stderr) {
+ t.ifError(err, 'packages were installed')
+ t.match(
+ stderr,
+ /WARN.*prefer global/,
+ 'install should warn when new package is preferGlobal')
+ t.end()
+ })
+})
+
+test('cleanup', function (t) {
+ cleanup()
+ t.end()
+})
+
+function setup (json) {
+ cleanup()
+ mkPkg(preferGlobalJson)
+ process.chdir(mkPkg(json))
+}
+
+function cleanup () {
+ process.chdir(osenv.tmpdir())
+ var pkgs = [preferGlobalJson,
+ dependenciesJson,
+ devDependenciesJson,
+ emptyPackage]
+ pkgs.forEach(function (json) {
+ rimraf.sync(path.resolve(__dirname, json.name))
+ })
+}
+
+function mkPkg (json) {
+ var pkgPath = path.resolve(__dirname, json.name)
+ mkdirp.sync(pkgPath)
+ fs.writeFileSync(
+ path.join(pkgPath, 'package.json'),
+ JSON.stringify(json, null, 2)
+ )
+ return pkgPath
+}