diff options
author | 2021-11-01 20:05:38 -0700 | |
---|---|---|
committer | 2021-11-01 20:05:38 -0700 | |
commit | 92b174b3156f317ae942f0be4ca89f05df99a4c6 (patch) | |
tree | 42f1db372a0ffa3c2fcebb04baad090c728e767e /integration/scripts/bun.js | |
parent | 0ba9784be2fd56700652e85c563f931c6a2bb112 (diff) | |
download | bun-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.js | 85 |
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`); |