UEA-PRODEM
This commit is contained in:
+41
-3
@@ -239,7 +239,7 @@ test('symlinked', function (t) {
|
||||
});
|
||||
|
||||
test('readPackage', function (t) {
|
||||
t.plan(3);
|
||||
t.plan(4);
|
||||
|
||||
var files = {};
|
||||
files[path.resolve('/foo/node_modules/bar/something-else.js')] = 'beep';
|
||||
@@ -281,14 +281,14 @@ test('readPackage', function (t) {
|
||||
});
|
||||
});
|
||||
|
||||
var readPackage = function (readFile, file, cb) {
|
||||
function readPackage(readFile, file, cb) {
|
||||
var barPackage = path.join('bar', 'package.json');
|
||||
if (file.slice(-barPackage.length) === barPackage) {
|
||||
cb(null, { main: './something-else.js' });
|
||||
} else {
|
||||
cb(null, JSON.parse(files[path.resolve(file)]));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
t.test('with readPackage', function (st) {
|
||||
st.plan(3);
|
||||
@@ -312,4 +312,42 @@ test('readPackage', function (t) {
|
||||
st.throws(function () { throw err; }, TypeError, 'errors when both readFile and readPackage are provided');
|
||||
});
|
||||
});
|
||||
|
||||
t.test('readPackage error in loadpkg does not invoke callback twice', function (st) {
|
||||
st.plan(1);
|
||||
|
||||
var callCount = 0;
|
||||
var readPackageError = new Error('read package error');
|
||||
|
||||
function failReadPackage(rf, file, cb) {
|
||||
cb(readPackageError);
|
||||
}
|
||||
|
||||
var relFiles = {};
|
||||
relFiles[path.resolve('/foo/bar/baz.js')] = 'beep';
|
||||
relFiles[path.resolve('/foo/bar/package.json')] = '{}';
|
||||
|
||||
var relDirs = {};
|
||||
relDirs[path.resolve('/foo/bar')] = true;
|
||||
|
||||
resolve('./baz', {
|
||||
basedir: path.resolve('/foo/bar'),
|
||||
isFile: function (file, cb) {
|
||||
cb(null, Object.prototype.hasOwnProperty.call(relFiles, path.resolve(file)));
|
||||
},
|
||||
isDirectory: function (dir, cb) {
|
||||
cb(null, !!relDirs[path.resolve(dir)]);
|
||||
},
|
||||
readPackage: failReadPackage,
|
||||
realpath: function (file, cb) {
|
||||
cb(null, file);
|
||||
}
|
||||
}, function () {
|
||||
callCount += 1;
|
||||
});
|
||||
|
||||
setTimeout(function () {
|
||||
st.equal(callCount, 1, 'callback is invoked exactly once');
|
||||
}, 50);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user