summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~')
-rw-r--r--deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~79
1 files changed, 79 insertions, 0 deletions
diff --git a/deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~ b/deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~
new file mode 100644
index 0000000000..76886cec67
--- /dev/null
+++ b/deps/npm/node_modules/find-npm-prefix/test/find-prefix.js~
@@ -0,0 +1,79 @@
+'use strict'
+const Bluebird = require('bluebird')
+const test = require('tap').test
+const requireInject = require('require-inject')
+const findPrefix = requireInject('../find-prefix.js', {
+ fs: {
+ readdir: mockReaddir
+ }
+})
+
+test('find-prefix', t => {
+ const tests = {
+ '/Users/example/code/test1/node_modules': '/Users/example/code/test1',
+ '/Users/example/code/test1/node_modules/node_modules': '/Users/example/code/test1',
+ '/Users/example/code/test1/sub1': '/Users/example/code/test1',
+ '/Users/example/code/test1/sub1/sub1a': '/Users/example/code/test1',
+ '/Users/example/code/test2': '/Users/example/code/test2',
+ '/Users/example/code/test2/sub2': '/Users/example/code/test2',
+ '/Users/example/code': '/Users/example/code',
+ '/Users/example': '/Users/example',
+ '/does/not/exist': '/does/not/exist'
+ }
+ t.plan(Object.keys(tests).length)
+ return Bluebird.map(Object.keys(tests), dir => {
+ return findPrefix(dir).then(pre => {
+ t.is(pre, tests[dir], dir)
+ })
+ })
+})
+
+test('fail-prefix', t => {
+ return findPrefix('/Users/example/eperm').then(pre => {
+ t.fail('no eperm')
+ }).catch(err => {
+ t.is(err.code, 'EPERM', 'got perm error')
+ })
+})
+
+const fixture = {
+ 'Users': {
+ 'example': {
+ 'code': {
+ 'test1': {
+ 'node_modules': {
+ 'node_modules': {}
+ },
+ 'sub1': {
+ 'sub1a': {}
+ }
+ },
+ 'test2': {
+ 'package.json': {},
+ 'sub2': {}
+ }
+ }
+ }
+ }
+}
+
+function mockReaddir (dir, cb) {
+ if (/eperm/.test(dir)) {
+ const err = new Error('Can not read: ' + dir)
+ err.code = 'EPERM'
+ return cb(err)
+ }
+ const parts = dir.split(/\//).slice(1)
+ let cwd = fixture
+ let part
+ while (part = parts.shift()) {
+ if (part in cwd) {
+ cwd = cwd[part]
+ } else {
+ const err = new Error('Does not exist: ' + dir + ' * ' + part)
+ err.code = 'ENOENT'
+ return cb(err)
+ }
+ }
+ return cb(null, Object.keys(cwd))
+}