aboutsummaryrefslogtreecommitdiff
path: root/integration/scripts/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-11-01 20:05:38 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-11-01 20:05:38 -0700
commit92b174b3156f317ae942f0be4ca89f05df99a4c6 (patch)
tree42f1db372a0ffa3c2fcebb04baad090c728e767e /integration/scripts/bun.js
parent0ba9784be2fd56700652e85c563f931c6a2bb112 (diff)
downloadbun-92b174b3156f317ae942f0be4ca89f05df99a4c6.tar.gz
bun-92b174b3156f317ae942f0be4ca89f05df99a4c6.tar.zst
bun-92b174b3156f317ae942f0be4ca89f05df99a4c6.zip
Add Bun.js integration tests, but don't run them yet.
Diffstat (limited to 'integration/scripts/bun.js')
-rw-r--r--integration/scripts/bun.js85
1 files changed, 85 insertions, 0 deletions
diff --git a/integration/scripts/bun.js b/integration/scripts/bun.js
new file mode 100644
index 000000000..d22785787
--- /dev/null
+++ b/integration/scripts/bun.js
@@ -0,0 +1,85 @@
+import snippets from "./snippets.json";
+
+globalThis.console.assert = (condition, ...content) => {
+ if (!condition) {
+ throw new Error(content.join(" "));
+ }
+};
+globalThis.getModuleScriptSrc = async (name) => {
+ const response = await fetch(name, {
+ cache: "force-cache",
+ });
+
+ if (response.ok) {
+ return await response.text();
+ } else {
+ throw new Error(`Failed to get module script ${name}`);
+ }
+};
+
+globalThis.runTest = async (name) => {
+ testSuccess = false;
+ var Namespace = await import(name);
+ var testFunction = Namespace.test;
+
+ if (
+ !("test" in Namespace) &&
+ "default" in Namespace &&
+ typeof Namespace.default === "function"
+ ) {
+ Namespace = Namespace.default();
+ testFunction = Namespace.test;
+ }
+
+ if (!testFunction) {
+ throw new Error("No test function found in " + name);
+ }
+
+ if (typeof testFunction !== "function") {
+ throw new Error(
+ `Expected (await import(\"${name}\"")) to have a test function.\nReceived: ${Object.keys(
+ Namespace
+ ).join(", ")} `
+ );
+ }
+
+ if (globalThis.BUN_DEBUG_MODE) {
+ try {
+ await testFunction();
+ if (!testSuccess) {
+ throw new Error("Test failed");
+ }
+ } catch (exception) {
+ console.error(exception);
+ debugger;
+ throw exception;
+ }
+ } else {
+ await testFunction();
+ if (!testSuccess) {
+ throw new Error("Test failed");
+ }
+ }
+};
+
+var testSuccess = false;
+globalThis.testDone = () => {
+ testSuccess = true;
+};
+
+let fail = 0;
+for (let snippet of snippets) {
+ try {
+ await runTest("../snippets/" + snippet.substring(1));
+ console.log("✅", snippet);
+ } catch (exception) {
+ console.error(`❌ ${snippet}`);
+ console.error(exception);
+
+ fail++;
+ }
+}
+
+if (fail) throw new Error(`❌ browser test failed (${fail})`);
+
+console.log(`✅ bun.js test passed`);