aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-28 01:33:00 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-28 01:33:00 -0700
commite110ccf84d8d9034e82a79bf7abf1fa92b2370be (patch)
treea4be8d322c2c61b767abce74ad670eeb65620b2e /test/js
parentc2a744f0cc1af080b2803e8b3b678bdaa4a1d14f (diff)
downloadbun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.tar.gz
bun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.tar.zst
bun-e110ccf84d8d9034e82a79bf7abf1fa92b2370be.zip
Fixes #3795 (#3856)
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'test/js')
-rw-r--r--test/js/web/crypto/keeps-alive-fixture.js12
-rw-r--r--test/js/web/crypto/web-crypto.test.ts25
2 files changed, 37 insertions, 0 deletions
diff --git a/test/js/web/crypto/keeps-alive-fixture.js b/test/js/web/crypto/keeps-alive-fixture.js
new file mode 100644
index 000000000..0740923a5
--- /dev/null
+++ b/test/js/web/crypto/keeps-alive-fixture.js
@@ -0,0 +1,12 @@
+const algorithms = ["SHA-1", "SHA-256", "SHA-384", "SHA-512"];
+const data = [
+ "Hello World!",
+ "Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World!",
+];
+for (let bytes of data) {
+ for (const algorithm of algorithms) {
+ crypto.subtle.digest(algorithm, Buffer.from(bytes)).then(data => {
+ console.log(Buffer.from(data).toString("hex"));
+ });
+ }
+}
diff --git a/test/js/web/crypto/web-crypto.test.ts b/test/js/web/crypto/web-crypto.test.ts
index b8155c3ba..006d48851 100644
--- a/test/js/web/crypto/web-crypto.test.ts
+++ b/test/js/web/crypto/web-crypto.test.ts
@@ -1,6 +1,31 @@
+import { spawnSync } from "bun";
import { describe, expect, it } from "bun:test";
+import { bunEnv, bunExe } from "harness";
describe("Web Crypto", () => {
+ // https://github.com/oven-sh/bun/issues/3795
+ it("keeps event loop alive", () => {
+ const { stdout, exitCode } = spawnSync({
+ cmd: [bunExe(), import.meta.resolveSync("./keeps-alive-fixture.js")],
+ env: bunEnv,
+ });
+
+ const lines = stdout.toString().trim().split("\n").sort();
+ const results = [
+ "2ef7bde608ce5404e97d5f042f95f89f1c232871",
+ "6b3e626d70787e3dc3f0bca509a7e1e5f6802643fde54a18d4353aa9b24ccb2fb874bbc8a70ff587df2bd6ed41471f82",
+ "7dc2af5ef620a4b1c8871371526b664512b82193",
+ "7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069",
+ "861844d6704e8573fec34d967e20bcfef3d424cf48be04e6dc08f2bd58c729743371015ead891cc3cf1c9d34b49264b510751b1ff9e537937bc46b5d6ff4ecc8",
+ "bf6873609ce720ec489bb2f5ae116716058c06cda7dc9a7e1dadee90da98e71aee22519505af61adbecd5b94bbefa855c2ede623e8b383bb179b150e25861441",
+ "bfd76c0ebbd006fee583410547c1887b0292be76d582d96c242d2a792723e3fd6fd061f9d5cfd13b8f961358e6adba4a",
+ "e1061f7858d68c3818ec9967ea1f7bf8e3c65f5603af95004bdfcb64b9ea4148",
+ ];
+
+ expect(exitCode).toBe(0);
+ expect(lines).toStrictEqual(results);
+ });
+
it("has globals", () => {
expect(crypto.subtle !== undefined).toBe(true);
expect(CryptoKey.name).toBe("CryptoKey");