From 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 18:09:58 +0800
Subject: [PATCH] 上报转运调试
---
node_modules/resolve/test/mock.js | 44 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/node_modules/resolve/test/mock.js b/node_modules/resolve/test/mock.js
index 6116275..2b95e38 100644
--- a/node_modules/resolve/test/mock.js
+++ b/node_modules/resolve/test/mock.js
@@ -239,7 +239,7 @@
});
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 @@
});
});
- 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 @@
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);
+ });
});
--
Gitblit v1.9.3