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