1 var fs = require('graceful-fs')
2 var path = require('path')
4 var mkdirp = require('mkdirp')
5 var osenv = require('osenv')
6 var rimraf = require('rimraf')
7 var test = require('tap').test
9 var common = require('../common-tap.js')
11 var preferGlobalJson = {
12 name: 'npm-test-preferglobal-dep',
17 var dependenciesJson = {
18 name: 'npm-test-preferglobal-dependency-check',
21 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
25 var devDependenciesJson = {
26 name: 'npm-test-preferglobal-devDependency-check',
29 'npm-test-preferglobal-dep': 'file:../' + preferGlobalJson.name
34 name: 'npm-test-preferglobal-empty-package',
38 test('install a preferGlobal dependency without warning', function (t) {
39 setup(dependenciesJson)
43 ], {}, function (err, code, stdout, stderr) {
44 t.ifError(err, 'packages were installed')
47 /WARN.*prefer global/,
48 'install should not warn when dependency is preferGlobal')
53 test('install a preferGlobal dependency without warning', function (t) {
54 setup(devDependenciesJson)
58 ], {}, function (err, code, stdout, stderr) {
59 t.ifError(err, 'packages were installed')
62 /WARN.*prefer global/,
63 'install should not warn when devDependency is preferGlobal')
68 test('warn if a preferGlobal package is being installed direct', function (t) {
72 'file:../' + preferGlobalJson.name,
74 ], {}, function (err, code, stdout, stderr) {
75 t.ifError(err, 'packages were installed')
78 /WARN.*prefer global/,
79 'install should warn when new package is preferGlobal')
84 test('warn if a preferGlobal package is being saved', function (t) {
88 'file:../' + preferGlobalJson.name,
91 ], {}, function (err, code, stdout, stderr) {
92 t.ifError(err, 'packages were installed')
95 /WARN.*prefer global/,
96 'install should warn when new package is preferGlobal')
101 test('cleanup', function (t) {
106 function setup (json) {
108 mkPkg(preferGlobalJson)
109 process.chdir(mkPkg(json))
112 function cleanup () {
113 process.chdir(osenv.tmpdir())
114 var pkgs = [preferGlobalJson,
118 pkgs.forEach(function (json) {
119 rimraf.sync(path.resolve(__dirname, json.name))
123 function mkPkg (json) {
124 var pkgPath = path.resolve(__dirname, json.name)
127 path.join(pkgPath, 'package.json'),
128 JSON.stringify(json, null, 2)