diff options
-rw-r--r-- | test/js/node/module/node-module-module.test.js | 13 | ||||
-rw-r--r-- | test/js/node/module/resolveFilenameOverwrite-fixture.cjs | 1 | ||||
-rw-r--r-- | test/js/node/module/resolveFilenameOverwrite.cjs | 14 |
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--"); |