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
diff options
context:
space:
mode:
authorForrest L Norvell <forrest@npmjs.com>2015-04-11 21:17:28 +0300
committerForrest L Norvell <forrest@npmjs.com>2015-04-11 21:17:28 +0300
commit649e31ae4fd02568bae5dc6b4ea783431ce3d63e (patch)
tree756b8222e6a56c4b1b84b4de847ab278ece22806
parentb0273190c71eba14395ddfdd1d9f7ba625297523 (diff)
install: use a more robust method for testing for scope
-rw-r--r--lib/install.js8
-rw-r--r--test/tap/install-scoped-with-peer-dependency.js68
-rw-r--r--test/tap/install-scoped-with-peer-dependency/package/package.json7
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": "*"
- }
-}