diff options
author | 2023-06-15 01:18:23 -0700 | |
---|---|---|
committer | 2023-06-15 01:18:23 -0700 | |
commit | dc06caccaa6bd8fd273e16cff2c2e0c10f32c58e (patch) | |
tree | ee62eff2b60d567a337d3442ed703cf6f547bd76 /bench/snippets | |
parent | e6d4b3a89ac6631f54276a21d82d41f91fd41c76 (diff) | |
download | bun-dc06caccaa6bd8fd273e16cff2c2e0c10f32c58e.tar.gz bun-dc06caccaa6bd8fd273e16cff2c2e0c10f32c58e.tar.zst bun-dc06caccaa6bd8fd273e16cff2c2e0c10f32c58e.zip |
Tweak CommonJS output (#3320)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'bench/snippets')
-rw-r--r-- | bench/snippets/module-exports-putter.cjs | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/bench/snippets/module-exports-putter.cjs b/bench/snippets/module-exports-putter.cjs new file mode 100644 index 000000000..9bef17b90 --- /dev/null +++ b/bench/snippets/module-exports-putter.cjs @@ -0,0 +1,65 @@ +// This is a stress test of some internals in How Bun does the module.exports assignment. +// If it crashes or throws then this fails +import("./runner.mjs").then(({ bench, run }) => { + bench("Object.defineProperty(module, 'exports', { get() { return 42; } })", () => { + Object.defineProperty(module, "exports", { + get() { + return 42; + }, + set() { + throw new Error("bad"); + }, + configurable: true, + }); + if (module.exports !== 42) throw new Error("bad"); + if (!Object.getOwnPropertyDescriptor(module, "exports").get) throw new Error("bad"); + }); + + bench("Object.defineProperty(module.exports = {})", () => { + Object.defineProperty(module, "exports", { + value: { abc: 123 }, + }); + + if (!module.exports.abc) throw new Error("bad"); + if (Object.getOwnPropertyDescriptor(module, "exports").value !== module.exports) throw new Error("bad"); + }); + + bench("module.exports = {}", () => { + module.exports = { abc: 123 }; + + if (!module.exports.abc) throw new Error("bad"); + if (Object.getOwnPropertyDescriptor(module, "exports").value !== module.exports) throw new Error("bad"); + }); + + run().then(() => { + module.exports = { + a: 1, + }; + + console.log( + module?.exports, + require.cache[module.id].exports, + module?.exports === require.cache[module.id], + __dirname, + Object.keys(require(module.id)), + require(module.id), + ); + + module.exports = function lol() { + return 42; + }; + + console.log(module.exports, module.exports()); + + queueMicrotask(() => { + console.log( + module?.exports, + require.cache[module.id].exports, + module?.exports === require.cache[module.id]?.exports, + __dirname, + Object.keys(require(module.id)), + require(module.id), + ); + }); + }); +}); |