mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.2 KiB
84 lines
3.2 KiB
var path = require('path')
|
|
var test = require('tap').test
|
|
var npm = require('../../lib/npm.js')
|
|
var requireInject = require('require-inject')
|
|
|
|
var realizePackageSpecifier = requireInject('realize-package-specifier', {
|
|
'fs': {
|
|
stat: function (file, cb) {
|
|
process.nextTick(function () {
|
|
switch (file) {
|
|
case path.resolve('named'):
|
|
cb(new Error('ENOENT'))
|
|
break
|
|
case path.resolve('file.tgz'):
|
|
cb(null, { isDirectory: function () { return false } })
|
|
break
|
|
case path.resolve('dir-no-package'):
|
|
cb(null, { isDirectory: function () { return true } })
|
|
break
|
|
case path.resolve('dir-no-package/package.json'):
|
|
cb(new Error('ENOENT'))
|
|
break
|
|
case path.resolve('dir-with-package'):
|
|
cb(null, { isDirectory: function () { return true } })
|
|
break
|
|
case path.resolve('dir-with-package/package.json'):
|
|
cb(null, {})
|
|
break
|
|
case path.resolve(__dirname, 'dir-with-package'):
|
|
cb(null, { isDirectory: function () { return true } })
|
|
break
|
|
case path.join(__dirname, 'dir-with-package', 'package.json'):
|
|
cb(null, {})
|
|
break
|
|
case path.resolve(__dirname, 'file.tgz'):
|
|
cb(null, { isDirectory: function () { return false } })
|
|
break
|
|
default:
|
|
throw new Error('Unknown test file passed to stat: ' + file)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
})
|
|
|
|
npm.load({ loglevel: 'silent' }, function () {
|
|
var cache = requireInject('../../lib/cache.js', {
|
|
'realize-package-specifier': realizePackageSpecifier,
|
|
'../../lib/cache/add-named.js': function addNamed (name, version, data, cb) {
|
|
cb(null, 'addNamed')
|
|
},
|
|
'../../lib/cache/add-local.js': function addLocal (name, data, cb) {
|
|
cb(null, 'addLocal')
|
|
}
|
|
})
|
|
|
|
test('npm install localdir fallback', function (t) {
|
|
t.plan(12)
|
|
cache.add('named', null, null, false, function (er, which) {
|
|
t.ifError(er, 'named was cached')
|
|
t.is(which, 'addNamed', 'registry package name')
|
|
})
|
|
cache.add('file.tgz', null, null, false, function (er, which) {
|
|
t.ifError(er, 'file.tgz was cached')
|
|
t.is(which, 'addLocal', 'local file')
|
|
})
|
|
cache.add('dir-no-package', null, null, false, function (er, which) {
|
|
t.ifError(er, 'local directory was cached')
|
|
t.is(which, 'addNamed', 'local directory w/o package.json')
|
|
})
|
|
cache.add('dir-with-package', null, null, false, function (er, which) {
|
|
t.ifError(er, 'local directory with package was cached')
|
|
t.is(which, 'addLocal', 'local directory with package.json')
|
|
})
|
|
cache.add('file:./dir-with-package', null, __dirname, false, function (er, which) {
|
|
t.ifError(er, 'local directory (as URI) with package was cached')
|
|
t.is(which, 'addLocal', 'file: URI to local directory with package.json')
|
|
})
|
|
cache.add('file:./file.tgz', null, __dirname, false, function (er, which) {
|
|
t.ifError(er, 'local file (as URI) with package was cached')
|
|
t.is(which, 'addLocal', 'file: URI to local file with package.json')
|
|
})
|
|
})
|
|
})
|
|
|