aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/js/node/module/node-module-module.test.js13
-rw-r--r--test/js/node/module/resolveFilenameOverwrite-fixture.cjs1
-rw-r--r--test/js/node/module/resolveFilenameOverwrite.cjs14
3 files changed, 28 insertions, 0 deletions
diff --git a/test/js/node/module/node-module-module.test.js b/test/js/node/module/node-module-module.test.js
index 08955a7b7..e5e21c981 100644
--- a/test/js/node/module/node-module-module.test.js
+++ b/test/js/node/module/node-module-module.test.js
@@ -1,6 +1,8 @@
import { expect, test } from "bun:test";
+import { bunEnv, bunExe } from "harness";
import { _nodeModulePaths, builtinModules, isBuiltin, wrap } from "module";
import Module from "module";
+import path from "path";
test("builtinModules exists", () => {
expect(Array.isArray(builtinModules)).toBe(true);
@@ -57,3 +59,14 @@ test("Module.wrap", () => {
expect(mod.exports.foo).toBe(1);
expect(wrap()).toBe("(function (exports, require, module, __filename, __dirname) { undefined\n});");
});
+
+test("Overwriting _resolveFilename", () => {
+ const { stdout, exitCode } = Bun.spawnSync({
+ cmd: [bunExe(), "run", path.join(import.meta.dir, "resolveFilenameOverwrite.cjs")],
+ env: bunEnv,
+ stderr: "inherit",
+ });
+
+ expect(stdout.toString().trim().endsWith("--pass--")).toBe(true);
+ expect(exitCode).toBe(0);
+});
diff --git a/test/js/node/module/resolveFilenameOverwrite-fixture.cjs b/test/js/node/module/resolveFilenameOverwrite-fixture.cjs
new file mode 100644
index 000000000..adae3dd6e
--- /dev/null
+++ b/test/js/node/module/resolveFilenameOverwrite-fixture.cjs
@@ -0,0 +1 @@
+module.exports = "winner";
diff --git a/test/js/node/module/resolveFilenameOverwrite.cjs b/test/js/node/module/resolveFilenameOverwrite.cjs
new file mode 100644
index 000000000..e2d1327a7
--- /dev/null
+++ b/test/js/node/module/resolveFilenameOverwrite.cjs
@@ -0,0 +1,14 @@
+// This behavior is required for Next.js to work
+const eql = require("assert").strictEqual;
+const path = require("path");
+const Module = require("module");
+
+const original = Module._resolveFilename;
+Module._resolveFilename = str => {
+ eql(str.endsWith("💔"), true);
+ return path.join(__dirname, "./resolveFilenameOverwrite-fixture.cjs");
+};
+eql(require("overwriting _resolveFilename broke 💔"), "winner");
+Module._resolveFilename = original;
+
+console.log("--pass--");