aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Dylan Conway <35280289+dylan-conway@users.noreply.github.com> 2023-06-12 21:43:45 -0700
committerGravatar GitHub <noreply@github.com> 2023-06-12 21:43:45 -0700
commit067a0235e49c52ac66df10cf2240b7ecb22eb599 (patch)
tree2a69492b64a994920b5d7e5ec45b5fd640df17bb /test
parentdbb2416542ee391fac5a11ba56090bf946117b9d (diff)
downloadbun-067a0235e49c52ac66df10cf2240b7ecb22eb599.tar.gz
bun-067a0235e49c52ac66df10cf2240b7ecb22eb599.tar.zst
bun-067a0235e49c52ac66df10cf2240b7ecb22eb599.zip
handle unwrapping `require` in any expression (#3292)
Diffstat (limited to 'test')
-rw-r--r--test/bundler/bundler_cjs2esm.test.ts64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/bundler/bundler_cjs2esm.test.ts b/test/bundler/bundler_cjs2esm.test.ts
index 2c498a4c6..01a17356b 100644
--- a/test/bundler/bundler_cjs2esm.test.ts
+++ b/test/bundler/bundler_cjs2esm.test.ts
@@ -3,6 +3,19 @@ import dedent from "dedent";
import { itBundled, testForFile } from "./expectBundled";
var { describe, test, expect } = testForFile(import.meta.path);
+const fakeReactNodeModules = {
+ "/node_modules/react/index.js": /* js */ `
+ module.exports = { react: "react" }
+ `,
+ "/node_modules/react/package.json": /* json */ `
+ {
+ "name": "react",
+ "version": "2.0.0",
+ "main": "index.js"
+ }
+ `,
+};
+
describe("bundler", () => {
itBundled("cjs2esm/ModuleExportsFunction", {
files: {
@@ -222,4 +235,55 @@ describe("bundler", () => {
stdout: "development",
},
});
+ itBundled("cjs2esm/UnwrappedModuleRequireAssigned", {
+ files: {
+ "/entry.js": /* js */ `
+ const react = require("react");
+ console.log(react.react);
+
+ const react1 = (console.log(require("react").react), require("react"));
+ console.log(react1.react);
+
+ const react2 = (require("react"), console.log(require("react").react));
+ console.log(react2);
+
+ let x = {};
+ x.react = require("react");
+ console.log(x.react.react);
+
+ console.log(require("react").react);
+
+ let y = {};
+ y[require("react")] = require("react");
+ console.log(y[require("react")].react);
+
+ let r = require("react");
+ console.log(r.react);
+ r = require("react");
+ console.log(r.react);
+
+ let n = 1;
+ n = require("react");
+ console.log(n.react);
+
+ let m = 1,
+ o = require("react");
+ console.log(m, o.react);
+
+ let h = Math.random() > 0.5;
+ let p = require(h ? "react" : "react");
+ console.log(p.react);
+
+ console.log(require(h ? "react" : "react").react);
+ `,
+ ...fakeReactNodeModules,
+ },
+ onAfterBundle: api => {
+ const code = api.readFile("out.js");
+ expect(code).toContain("__toESM(");
+ },
+ run: {
+ stdout: "react\nreact\nreact\nreact\nundefined\nreact\nreact\nreact\nreact\nreact\nreact\n1 react\nreact\nreact",
+ },
+ });
});