aboutsummaryrefslogtreecommitdiff
path: root/test/js/node/module
diff options
context:
space:
mode:
Diffstat (limited to 'test/js/node/module')
-rw-r--r--test/js/node/module/modulePrototypeOverwrite-fixture.cjs1
-rw-r--r--test/js/node/module/modulePrototypeOverwrite.cjs17
-rw-r--r--test/js/node/module/node-module-module.test.js11
3 files changed, 29 insertions, 0 deletions
diff --git a/test/js/node/module/modulePrototypeOverwrite-fixture.cjs b/test/js/node/module/modulePrototypeOverwrite-fixture.cjs
new file mode 100644
index 000000000..eecab81c1
--- /dev/null
+++ b/test/js/node/module/modulePrototypeOverwrite-fixture.cjs
@@ -0,0 +1 @@
+module.exports = require("hook");
diff --git a/test/js/node/module/modulePrototypeOverwrite.cjs b/test/js/node/module/modulePrototypeOverwrite.cjs
new file mode 100644
index 000000000..4e84026a6
--- /dev/null
+++ b/test/js/node/module/modulePrototypeOverwrite.cjs
@@ -0,0 +1,17 @@
+// This behavior is required for Next.js to work
+const eql = require("assert").deepStrictEqual;
+const Module = require("module");
+
+const old = Module.prototype.require;
+Module.prototype.require = function (str) {
+ if (str === "hook") return "winner";
+ return {
+ wrap: old.call(this, str),
+ };
+};
+
+// this context has the new require
+const result = require("./modulePrototypeOverwrite-fixture.cjs");
+eql(result, { wrap: "winner" });
+
+console.log("--pass--");
diff --git a/test/js/node/module/node-module-module.test.js b/test/js/node/module/node-module-module.test.js
index 26fbb6fab..5ac48d426 100644
--- a/test/js/node/module/node-module-module.test.js
+++ b/test/js/node/module/node-module-module.test.js
@@ -71,6 +71,17 @@ test("Overwriting _resolveFilename", () => {
expect(exitCode).toBe(0);
});
+test("Overwriting Module.prototype.require", () => {
+ const { stdout, exitCode } = Bun.spawnSync({
+ cmd: [bunExe(), "run", path.join(import.meta.dir, "modulePrototypeOverwrite.cjs")],
+ env: bunEnv,
+ stderr: "inherit",
+ });
+
+ expect(stdout.toString().trim().endsWith("--pass--")).toBe(true);
+ expect(exitCode).toBe(0);
+});
+
test("Module.prototype._compile", () => {
const module = new Module("module id goes here");
const starting_exports = module.exports;