diff options
author | Forrest L Norvell <forrest@npmjs.com> | 2015-04-11 21:17:28 +0300 |
---|---|---|
committer | Forrest L Norvell <forrest@npmjs.com> | 2015-04-11 21:17:28 +0300 |
commit | 649e31ae4fd02568bae5dc6b4ea783431ce3d63e (patch) | |
tree | 756b8222e6a56c4b1b84b4de847ab278ece22806 | |
parent | b0273190c71eba14395ddfdd1d9f7ba625297523 (diff) |
install: use a more robust method for testing for scope
-rw-r--r-- | lib/install.js | 8 | ||||
-rw-r--r-- | test/tap/install-scoped-with-peer-dependency.js | 68 | ||||
-rw-r--r-- | test/tap/install-scoped-with-peer-dependency/package/package.json | 7 |
3 files changed, 54 insertions, 29 deletions
diff --git a/lib/install.js b/lib/install.js index 6f3f4cf6b..799f0de94 100644 --- a/lib/install.js +++ b/lib/install.js @@ -1131,8 +1131,12 @@ function write (target, targetFolder, context, cb_) { // Package scopes cause an addditional tree level which needs to be // considered when resolving a peerDependency's target folder. - var pdTargetFolder = path.resolve(targetFolder, - (target.name[0] === "@" ? "../../.." : "../..")) + var pdTargetFolder + if (npa(target.name).scope) { + pdTargetFolder = path.resolve(targetFolder, '../../..') + } else { + pdTargetFolder = path.resolve(targetFolder, '../..') + } var pdContext = context if (peerDeps.length > 0) { diff --git a/test/tap/install-scoped-with-peer-dependency.js b/test/tap/install-scoped-with-peer-dependency.js index e546719d9..3a54b9a11 100644 --- a/test/tap/install-scoped-with-peer-dependency.js +++ b/test/tap/install-scoped-with-peer-dependency.js @@ -1,32 +1,60 @@ -var common = require("../common-tap.js") -var test = require("tap").test -var path = require("path") -var fs = require("fs") -var rimraf = require("rimraf") -var mkdirp = require("mkdirp") -var pkg = path.join(__dirname, "install-scoped-with-peer-dependency") +var fs = require('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 pkg = path.join(__dirname, 'install-scoped-with-peer-dependency') +var local = path.join(pkg, 'package') var EXEC_OPTS = { } -test("setup", function (t) { - mkdirp.sync(pkg) - mkdirp.sync(path.resolve(pkg, "node_modules")) - process.chdir(pkg) +var json = { + name: '@scope/package', + version: '0.0.0', + peerDependencies: { + underscore: '*' + } +} + +test('setup', function (t) { + setup() + t.end() }) -test("it should install peerDependencies in same tree level as the parent package", function(t) { - common.npm(["install", "./package"], EXEC_OPTS, function(err, code) { - var p = path.resolve(pkg, "node_modules/underscore/package.json") - t.ifError(err, "install local package successful") - t.equal(code, 0, "npm install exited with code") - t.ok(JSON.parse(fs.readFileSync(p, "utf8"))) +test('it should install peerDependencies in same tree level as the parent package', function (t) { + common.npm(['install', './package'], EXEC_OPTS, function (err, code, stdout, stderr) { + t.ifError(err, 'install local package successful') + t.equal(code, 0, 'npm install exited with code') + t.notOk(stderr, 'npm install exited without any error output') + + var p = path.resolve(pkg, 'node_modules/underscore/package.json') + t.ok(JSON.parse(fs.readFileSync(p, 'utf8'))) t.end() }) }) -test("cleanup", function(t) { - process.chdir(__dirname) - rimraf.sync(path.resolve(pkg, "node_modules")) +test('cleanup', function (t) { + cleanup() t.end() }) + +function setup () { + cleanup() + mkdirp.sync(local) + mkdirp.sync(path.resolve(pkg, 'node_modules')) + fs.writeFileSync( + path.join(local, 'package.json'), + JSON.stringify(json, null, 2) + ) + process.chdir(pkg) +} + +function cleanup () { + process.chdir(osenv.tmpdir()) + rimraf.sync(pkg) +} diff --git a/test/tap/install-scoped-with-peer-dependency/package/package.json b/test/tap/install-scoped-with-peer-dependency/package/package.json deleted file mode 100644 index 77e6b128c..000000000 --- a/test/tap/install-scoped-with-peer-dependency/package/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@scope/package", - "version": "0.0.0", - "peerDependencies": { - "underscore": "*" - } -} |