diff options
author | Kat Marchán <kzm@sykosomatic.org> | 2015-07-31 02:01:09 +0300 |
---|---|---|
committer | Forrest L Norvell <forrest@npmjs.com> | 2015-08-28 02:54:09 +0300 |
commit | 4c1bcea9831f3ed57347b9a801e94a8b404e75f9 (patch) | |
tree | 9f45fa22ab4c239872172418f3b120d271e5da30 /test | |
parent | 4aae4ded5cb76e66dfa23b9cf13007b169081f53 (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.js | 131 |
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 +} |