From 345b4f61762eac8eb17f0c1a9c4da1530a1bf29e Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 13 May 2024 19:07:04 -0700 Subject: [PATCH 01/15] node:http: allow setting response.statusCode and statusMessage --- src/js/node/http.ts | 7 +++++ test/harness.ts | 12 +++++++ test/js/third_party/msw.test.ts | 55 +++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 test/js/third_party/msw.test.ts diff --git a/src/js/node/http.ts b/src/js/node/http.ts index bdd5e88f1ab7f4..bbf36a79761f3c 100644 --- a/src/js/node/http.ts +++ b/src/js/node/http.ts @@ -818,12 +818,19 @@ Object.defineProperty(IncomingMessage.prototype, "statusCode", { get() { return this[reqSymbol].status; }, + set(v) { + if (!(v in STATUS_CODES)) return; + this[reqSymbol].status = v; + }, }); Object.defineProperty(IncomingMessage.prototype, "statusMessage", { get() { return STATUS_CODES[this[reqSymbol].status]; }, + set(v) { + //noop + }, }); Object.defineProperty(IncomingMessage.prototype, "httpVersion", { diff --git a/test/harness.ts b/test/harness.ts index 48f5ad2bed6410..1ff63e203f0949 100644 --- a/test/harness.ts +++ b/test/harness.ts @@ -763,3 +763,15 @@ export function mergeWindowEnvs(envs: Record[]) { export function tmpdirSync(pattern: string = "bun.test.") { return fs.mkdtempSync(join(fs.realpathSync(os.tmpdir()), pattern)); } + +export async function runBunAdd(env: NodeJS.ProcessEnv, cwd: string, specifier: string) { + const { exited } = Bun.spawn({ + cmd: [bunExe(), "add", specifier], + cwd, + stdout: "inherit", + stdin: "ignore", + stderr: "inherit", + env, + }); + expect(await exited).toBe(0); +} diff --git a/test/js/third_party/msw.test.ts b/test/js/third_party/msw.test.ts new file mode 100644 index 00000000000000..0c67864979387a --- /dev/null +++ b/test/js/third_party/msw.test.ts @@ -0,0 +1,55 @@ +import { bunExe } from "bun:harness"; +import { bunEnv, runBunAdd, tmpdirSync } from "harness"; +import { expect, it } from "bun:test"; +import * as path from "node:path"; + +it("works", async () => { + const package_dir = tmpdirSync("bun-test-"); + + await runBunAdd(bunEnv, package_dir, "axios@1.6.8"); + + await runBunAdd(bunEnv, package_dir, "msw@2.3.0"); + + const fixture_path = path.join(package_dir, "index.ts"); + const fixture_data = ` + import axios from 'axios'; + import { http, passthrough, HttpResponse } from 'msw' + + import { setupServer } from 'msw/node' + + const server = setupServer(...[ + http.get('https://swapi.dev/api/people/', () => { + // return passthrough() + return HttpResponse.json({ results: [{}, {}] }) + }), + ]) + server.listen({ + onUnhandledRequest: 'warn', + }); + + axios.get('https://swapi.dev/api/people/?page=2') + .then(function (response) { + // handle success + console.log(response.data.results.length); + }) + .catch(function (error) { + // handle error + console.log(error?.message); + }); + `; + await Bun.write(fixture_path, fixture_data); + + let { stdout, stderr, exited } = Bun.spawn({ + cmd: [bunExe(), "run", fixture_path], + cwd: package_dir, + stdout: "pipe", + stdin: "ignore", + stderr: "pipe", + env: bunEnv, + }); + let err = await new Response(stderr).text(); + expect(err).toBeEmpty(); + let out = await new Response(stdout).text(); + expect(out).toEqual("2\n"); + expect(await exited).toBe(0); +}); From 0e1dae9808a80cb3ec0ebe3e8507f70aaa0aa67d Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 13 May 2024 20:32:56 -0700 Subject: [PATCH 02/15] change helper to run bun install --- test/harness.ts | 14 +++++++++----- test/js/third_party/msw.test.ts | 7 +++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/test/harness.ts b/test/harness.ts index 1ff63e203f0949..e6b743af7c60d4 100644 --- a/test/harness.ts +++ b/test/harness.ts @@ -764,14 +764,18 @@ export function tmpdirSync(pattern: string = "bun.test.") { return fs.mkdtempSync(join(fs.realpathSync(os.tmpdir()), pattern)); } -export async function runBunAdd(env: NodeJS.ProcessEnv, cwd: string, specifier: string) { - const { exited } = Bun.spawn({ - cmd: [bunExe(), "add", specifier], +export async function runBunInstall(env: NodeJS.ProcessEnv, cwd: string) { + const { stderr, exited } = Bun.spawn({ + cmd: [bunExe(), "install"], cwd, - stdout: "inherit", + stdout: "pipe", stdin: "ignore", - stderr: "inherit", + stderr: "pipe", env, }); + let err = await new Response(stderr).text(); + expect(err).not.toContain("panic:"); + expect(err).not.toContain("error:"); + expect(err).not.toContain("warn:"); expect(await exited).toBe(0); } diff --git a/test/js/third_party/msw.test.ts b/test/js/third_party/msw.test.ts index 0c67864979387a..37316cd5f17ae1 100644 --- a/test/js/third_party/msw.test.ts +++ b/test/js/third_party/msw.test.ts @@ -1,14 +1,13 @@ import { bunExe } from "bun:harness"; -import { bunEnv, runBunAdd, tmpdirSync } from "harness"; +import { bunEnv, runBunInstall, tmpdirSync } from "harness"; import { expect, it } from "bun:test"; import * as path from "node:path"; it("works", async () => { const package_dir = tmpdirSync("bun-test-"); - await runBunAdd(bunEnv, package_dir, "axios@1.6.8"); - - await runBunAdd(bunEnv, package_dir, "msw@2.3.0"); + await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "axios": "1.6.8", "msw": "2.3.0" } }`); + await runBunInstall(bunEnv, package_dir); const fixture_path = path.join(package_dir, "index.ts"); const fixture_data = ` From 96475468b8465319e4305655c32c243c2e3c74a6 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Mon, 13 May 2024 20:33:10 -0700 Subject: [PATCH 03/15] make sure its not connecting to a remote --- test/js/third_party/msw.test.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/js/third_party/msw.test.ts b/test/js/third_party/msw.test.ts index 37316cd5f17ae1..c01d15e0e8b81d 100644 --- a/test/js/third_party/msw.test.ts +++ b/test/js/third_party/msw.test.ts @@ -13,11 +13,10 @@ it("works", async () => { const fixture_data = ` import axios from 'axios'; import { http, passthrough, HttpResponse } from 'msw' - import { setupServer } from 'msw/node' const server = setupServer(...[ - http.get('https://swapi.dev/api/people/', () => { + http.get('http://localhost/', () => { // return passthrough() return HttpResponse.json({ results: [{}, {}] }) }), @@ -26,7 +25,7 @@ it("works", async () => { onUnhandledRequest: 'warn', }); - axios.get('https://swapi.dev/api/people/?page=2') + axios.get('http://localhost/?page=2') .then(function (response) { // handle success console.log(response.data.results.length); @@ -35,7 +34,7 @@ it("works", async () => { // handle error console.log(error?.message); }); - `; + `; await Bun.write(fixture_path, fixture_data); let { stdout, stderr, exited } = Bun.spawn({ From d12c5b85543d512343a5020cc60d625dd30f1887 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:20:27 -0700 Subject: [PATCH 04/15] use helper in other tests too --- test/js/third_party/st.test.ts | 24 ++++++--------------- test/js/third_party/stripe.test.ts | 34 ++++++------------------------ 2 files changed, 13 insertions(+), 45 deletions(-) diff --git a/test/js/third_party/st.test.ts b/test/js/third_party/st.test.ts index f77b4e552eb202..59435eb9c743da 100644 --- a/test/js/third_party/st.test.ts +++ b/test/js/third_party/st.test.ts @@ -1,25 +1,13 @@ import { bunExe } from "bun:harness"; -import { bunEnv, tmpdirSync } from "harness"; +import { bunEnv, runBunInstall, tmpdirSync } from "harness"; import { expect, it } from "bun:test"; import * as path from "node:path"; it("works", async () => { const package_dir = tmpdirSync(); - let { stdout, stderr, exited } = Bun.spawn({ - cmd: [bunExe(), "add", "st@3.0.0"], - cwd: package_dir, - stdout: "pipe", - stdin: "ignore", - stderr: "pipe", - env: bunEnv, - }); - let err = await new Response(stderr).text(); - expect(err).not.toContain("panic:"); - expect(err).not.toContain("error:"); - expect(err).not.toContain("warn:"); - let out = await new Response(stdout).text(); - expect(await exited).toBe(0); + await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "st": "3.0.0" } }`); + await runBunInstall(bunEnv, package_dir); const fixture_path = path.join(package_dir, "index.ts"); const fixture_data = ` @@ -44,17 +32,17 @@ it("works", async () => { `; await Bun.write(fixture_path, fixture_data); - ({ stdout, stderr, exited } = Bun.spawn({ + let { stdout, stderr } = Bun.spawn({ cmd: [bunExe(), "run", fixture_path], cwd: package_dir, stdout: "pipe", stdin: "ignore", stderr: "pipe", env: bunEnv, - })); + }); // err = await new Response(stderr).text(); // expect(err).toBeEmpty(); - out = await new Response(stdout).text(); + let out = await new Response(stdout).text(); expect(out).toEqual(fixture_data + "\n"); expect(await exited).toBe(0); }); diff --git a/test/js/third_party/stripe.test.ts b/test/js/third_party/stripe.test.ts index 4c400afe54468e..778213b089e12f 100644 --- a/test/js/third_party/stripe.test.ts +++ b/test/js/third_party/stripe.test.ts @@ -1,33 +1,13 @@ import { bunExe } from "bun:harness"; -import { bunEnv, tmpdirSync } from "harness"; +import { bunEnv, runBunInstall, tmpdirSync } from "harness"; import * as path from "node:path"; import { expect, it } from "bun:test"; it.skipIf(!process.env.TEST_INFO_STRIPE)("should be able to query a charge", async () => { const package_dir = tmpdirSync(); - await Bun.write( - path.join(package_dir, "package.json"), - JSON.stringify({ - "dependencies": { - "stripe": "^15.4.0", - }, - }), - ); - - let { stdout, stderr } = Bun.spawn({ - cmd: [bunExe(), "install"], - cwd: package_dir, - stdout: "pipe", - stdin: "ignore", - stderr: "pipe", - env: bunEnv, - }); - let err = await new Response(stderr).text(); - expect(err).not.toContain("panic:"); - expect(err).not.toContain("error:"); - expect(err).not.toContain("warn:"); - let out = await new Response(stdout).text(); + await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "stripe": "15.4.0" } }`); + await runBunInstall(bunEnv, package_dir); // prettier-ignore const [access_token, charge_id, account_id] = process.env.TEST_INFO_STRIPE?.split(","); @@ -49,16 +29,16 @@ it.skipIf(!process.env.TEST_INFO_STRIPE)("should be able to query a charge", asy `, ); - ({ stdout, stderr } = Bun.spawn({ + let { stdout, stderr } = Bun.spawn({ cmd: [bunExe(), "run", fixture_path], cwd: package_dir, stdout: "pipe", stdin: "ignore", stderr: "pipe", env: bunEnv, - })); - out = await new Response(stdout).text(); + }); + let out = await new Response(stdout).text(); expect(out).toBeEmpty(); - err = await new Response(stderr).text(); + let err = await new Response(stderr).text(); expect(err).toContain(`error: No such charge: '${charge_id}'\n`); }); From 8a7a68e9d3cbe88e5ecaaf6d83f8d01974ad73aa Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:21:04 -0700 Subject: [PATCH 05/15] use helper in more places --- test/cli/install/bun-link.test.ts | 18 ++-------- test/cli/install/bun-workspaces.test.ts | 47 ++++--------------------- test/harness.ts | 7 +++- 3 files changed, 15 insertions(+), 57 deletions(-) diff --git a/test/cli/install/bun-link.test.ts b/test/cli/install/bun-link.test.ts index 0174dad5b83b47..cf87a26c0f006e 100644 --- a/test/cli/install/bun-link.test.ts +++ b/test/cli/install/bun-link.test.ts @@ -55,19 +55,8 @@ it("should link and unlink workspace package", async () => { version: "0.0.1", }), ); - var { stdout, stderr, exited } = spawn({ - cmd: [bunExe(), "install"], - cwd: link_dir, - stdout: "pipe", - stdin: "pipe", - stderr: "pipe", - env, - }); - expect(stderr).toBeDefined(); - var err = await new Response(stderr).text(); + let { out, err } = await runBunInstall(env, link_dir); expect(err.replace(/^(.*?) v[^\n]+/, "$1").split(/\r?\n/)).toEqual(["bun install", " Saved lockfile", ""]); - expect(stdout).toBeDefined(); - var out = await new Response(stdout).text(); expect(out.replace(/\s*\[[0-9\.]+ms\]\s*$/, "").split(/\r?\n/)).toEqual([ "", ` + boba@workspace:packages/boba`, @@ -75,16 +64,15 @@ it("should link and unlink workspace package", async () => { "", " 2 packages installed", ]); - expect(await exited).toBe(0); - ({ stdout, stderr, exited } = spawn({ + let { stdout, stderr, exited } = spawn({ cmd: [bunExe(), "link"], cwd: join(link_dir, "packages", "moo"), stdout: "pipe", stdin: "pipe", stderr: "pipe", env, - })); + }); expect(stderr).toBeDefined(); err = await new Response(stderr).text(); diff --git a/test/cli/install/bun-workspaces.test.ts b/test/cli/install/bun-workspaces.test.ts index f8e02cf4fa7f8f..3f9c5910c5f44c 100644 --- a/test/cli/install/bun-workspaces.test.ts +++ b/test/cli/install/bun-workspaces.test.ts @@ -1,5 +1,5 @@ import { spawnSync } from "bun"; -import { bunExe, bunEnv as env, tmpdirSync, toMatchNodeModulesAt } from "harness"; +import { bunExe, bunEnv as env, runBunInstall, tmpdirSync, toMatchNodeModulesAt } from "harness"; import { join } from "path"; import { writeFileSync, mkdirSync, rmSync } from "fs"; import { beforeEach, test, expect } from "bun:test"; @@ -27,7 +27,7 @@ cache = false ); }); -test("dependency on workspace without version in package.json", () => { +test("dependency on workspace without version in package.json", async () => { writeFileSync( join(packageDir, "package.json"), JSON.stringify({ @@ -77,19 +77,10 @@ test("dependency on workspace without version in package.json", () => { }), ); - const { stdout, exitCode } = spawnSync({ - cmd: [bunExe(), "install"], - cwd: packageDir, - stderr: "inherit", - stdout: "pipe", - env, - }); - + const { out } = await runBunInstall(env, packageDir); const lockfile = parseLockfile(packageDir); expect(lockfile).toMatchNodeModulesAt(packageDir); expect(lockfile).toMatchSnapshot(`version: ${version}`); - - const out = stdout.toString(); expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ "", " + bar@workspace:packages/bar", @@ -97,9 +88,6 @@ test("dependency on workspace without version in package.json", () => { "", " 2 packages installed", ]); - - expect(exitCode).toBe(0); - rmSync(join(packageDir, "node_modules"), { recursive: true, force: true }); rmSync(join(packageDir, "bun.lockb"), { recursive: true, force: true }); } @@ -118,19 +106,10 @@ test("dependency on workspace without version in package.json", () => { }), ); - const { exitCode, stdout } = spawnSync({ - cmd: [bunExe(), "install"], - cwd: packageDir, - stderr: "inherit", - stdout: "pipe", - env, - }); - + const { out } = await runBunInstall(env, packageDir); const lockfile = parseLockfile(packageDir); expect(lockfile).toMatchNodeModulesAt(packageDir); expect(lockfile).toMatchSnapshot(`version: ${version}`); - - const out = stdout.toString(); expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ "", " + bar@workspace:packages/bar", @@ -138,16 +117,13 @@ test("dependency on workspace without version in package.json", () => { "", " 3 packages installed", ]); - - expect(exitCode).toBe(0); - rmSync(join(packageDir, "node_modules"), { recursive: true, force: true }); rmSync(join(packageDir, "packages", "bar", "node_modules"), { recursive: true, force: true }); rmSync(join(packageDir, "bun.lockb"), { recursive: true, force: true }); } }, 20_000); -test("dependency on same name as workspace and dist-tag", () => { +test("dependency on same name as workspace and dist-tag", async () => { writeFileSync( join(packageDir, "package.json"), JSON.stringify({ @@ -177,19 +153,10 @@ test("dependency on same name as workspace and dist-tag", () => { }), ); - const { stdout, exitCode } = spawnSync({ - cmd: [bunExe(), "install"], - cwd: packageDir, - stderr: "inherit", - stdout: "pipe", - env, - }); - + const { out } = await runBunInstall(env, packageDir); const lockfile = parseLockfile(packageDir); expect(lockfile).toMatchSnapshot("with version"); expect(lockfile).toMatchNodeModulesAt(packageDir); - - const out = stdout.toString(); expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ "", " + bar@workspace:packages/bar", @@ -197,6 +164,4 @@ test("dependency on same name as workspace and dist-tag", () => { "", " 3 packages installed", ]); - - expect(exitCode).toBe(0); }); diff --git a/test/harness.ts b/test/harness.ts index e6b743af7c60d4..bcca18648b5d32 100644 --- a/test/harness.ts +++ b/test/harness.ts @@ -765,7 +765,7 @@ export function tmpdirSync(pattern: string = "bun.test.") { } export async function runBunInstall(env: NodeJS.ProcessEnv, cwd: string) { - const { stderr, exited } = Bun.spawn({ + const { stdout, stderr, exited } = Bun.spawn({ cmd: [bunExe(), "install"], cwd, stdout: "pipe", @@ -773,9 +773,14 @@ export async function runBunInstall(env: NodeJS.ProcessEnv, cwd: string) { stderr: "pipe", env, }); + expect(stdout).toBeDefined(); + expect(stderr).toBeDefined(); let err = await new Response(stderr).text(); expect(err).not.toContain("panic:"); expect(err).not.toContain("error:"); expect(err).not.toContain("warn:"); + expect(err).toContain("Saved lockfile"); + let out = await new Response(stdout).text(); expect(await exited).toBe(0); + return { out, err, exited }; } From 64d1084299431fb2d1a464e5a9b54040160dc70a Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 17:28:44 -0700 Subject: [PATCH 06/15] test: msw: install dependencies ahead of time --- test/bun.lockb | Bin 299438 -> 312628 bytes test/js/third_party/_fixtures/msw.ts | 26 +++++++++++++++++++ test/js/third_party/msw.test.ts | 36 +-------------------------- test/package.json | 8 +++--- 4 files changed, 32 insertions(+), 38 deletions(-) create mode 100644 test/js/third_party/_fixtures/msw.ts diff --git a/test/bun.lockb b/test/bun.lockb index 83e8ffb24ace853806c42e48bcd900687836271f..e57aaa6a360a99bf74814128e7a93cfce270d0b7 100755 GIT binary patch delta 30486 zcmeHwcU)B0+V#ww0T~nl1p!5Aij^vYiX!&jgS~-(VgaStq8Zev5lhrjw_xurb`7yb zvG;E5EuzM#Sg=Hm=38rKk52M>^XA_7{=UCFKNjnG)_!(5`|PvNp2Hl@+QmgSXB3^{ zUp{+XzweGcnm?fM+eK9#4emItVX3GXyWCq#h8;WUy}0C&Z0x3;oE|*fbGFY!4BYF$lzb3v zX2VABQK<@ohk@xQf(wCTB%61j4SY6mDQac>kEo4tVbEEzFPIJLiu&ADU#QaS!YB^m zDfWUHTO3rWDuKNvKR=*S`NKa1ral|&2kr+B05=1Bg8L^W_DYJ4Q3W40Ty`p@w>xI4 zr}%M|$_>deDM^W_K~?Igse|7@XNR^tVQOEW!6{5u^%)#(M?S7s+ zrd6eToHp1NyQ_~Ll90q*OTT8SZvdF(EHX7TJyUY`8>Zt>UvdDr7~+b6OM+itH+AGq z$%nwM&^Lfxz;nSIxnrcBfpXEo`t+z=(*dd?*;(>$w@n3K1-m2TRqUISAl)NlfW!E z15SOk7Rp6Lj;Yy0El?51R5h?OxICEp@n@z2z4HxOuBB`>&rR~v{7rjYeVz2`;BJ>LT>j}!PLc2z z-J4B2y3%d>wPEe5)-O1ym;U^X_Z7b{ukGx8dBOwVl~>=iD>^VEVpPJTInk9gCF&)= z>FK?@;uY!h~4wcezo=CR|PM1OLN`d==H*) z2TLX@Ip@+s;z#UW_sF|(ZexU2AWSChBd-OF0Mz_En4GQahLkUN_i1q@iE zbH-fbkB-$Cazeta9CxZz;f9?9!gbAHwSulP)UFw(n**;NJZnQvy)dhr@M;)#b`Q65 z|52rCV5nI?To(hY5hAn(b)7KXDtKY=91QBzFx@S9IE|4u^2@3=yG%tDFx0LeX4M{E zEyK>r;kucy!V#o0j7$mBoZe*^Rz1Sbez&Pq9DP+u!^r9t4FiH~bYq}K8bi@$-F|pq zz|*imof{_Un()+!4%4-R$4JF6a!8nNBfRRyG<9T{?xFN-jQJ*G5@wpU(K`e$!c+=s zu-R|q0QtRNOQsJ}3koeh;I4UR>VFx~I)BH>{VgTr(+FuOMU z;C%y+M?u3XbXr^o=%K=1Rc&zbNHjXN8-?k9`IFb~5GGGk;DD+&a6Sfx9#*Lae8{#8 zUaHYkkE?2PM5XEt$I6h?6eYq7g=cN7dNr;oG4RlklrUW>TzPm<3Np>AGrVSo5h3Ba z<*)*w8+$}|0bX5rHXLNS%Ewizw(trVcXKQ}Mxt~a*6-ofgJ(L(x)T_L@DvU`tIqHu z4e#29>t@69hmOOB&NwVRQ`fwLSI3-Y)e={-x`v(Y!gbSN@xYZdkC|)YQV#Is2paM39q{0U9E84Sy&;) zC>{pKGo~ohPIiXJ-Lm2?YgU{w3=4_S{S1*A)P|hUFkP{;rh#c?P*+7I@Yv@#>3*te z1BW%@Ob!aOIt33W)}(Nq_c@iSvZ;XDVY(=I%%V1qr3vsjvXEz7nAKHyk;b#RBCeS1 zQbYxZSq+3|JV`a{&l|Q~i?F%}p`KyqwQ#G7KXC$}H4s)KqqP;5DfQh4t^Ngb+yq#r z)RVAGIb5)`XlBgY6P8I^4XcGwd;KA`{-qD4z%s?1g=H$w<+54p4$D;DYFMWBJ%!c8 zSYG%QbKGcHrnr-4P3LkIIZWM!QPUM(2t1W>JWPcb3J(W0G)!~ws-b#rgwFb!N>vpi z=AZB|y9ju}%#Je{v!wxNevHlrq8zWSsuqINSVq|6^e~>|niAIy+j1i`Ew3Bitg7Dt{9*vQZlftDDif0IQwR^1EfWM#K8TlnSej(JKElca-I&!7`@m z4#TQtY&Qp1TCPeJ{lWX`PhQv^%d}bWI)8}Fhu86g*X*uJ)$4<|310UPUXgp2-avR= zKct<2_p!|Kzo=AE#u$p0%wmkP@_vHz)ljohxUL7S5BfZK4UF-*u$q0) z1D_(dp=OhCt7KS_hMjpeY+y7(0H(2VRn<=oZ=OWxBA=;LO`&0?2no|ncxD*(G(vOz znPJ=02wiZ#=^COjP7x{aIE584jGP*#`99w;>{*1a$aB*;##B``Ow;JO;SIzLh#aK$ z2KBTs&57rRVfhgn-3!CE{OWp~0z3^=1%PmXn1`eIKAQTzl!FXEYWp#*NHUj{|H5mIlU+O#h_G z{S#9^1u)-PnQqBUKPPodX1%y5wlNlr>z{EWGs8uI0k~2bH!}4rl5zDh`nZ4?H%rzT z9=&og4v%{>mCW3~NdNDcyMfu!7>{|-xRIIvk;(leGd&Mrt1*v>?G9?4v2QUy88@;Q zP!y4@q?lwk=EP>nl!{B;k|~vtI+^8^l0KQH2Yy+D%cwC%3&IGL0c4s%_{EGNQn%z{ z(3?p8|IVh#>c3bZTK6v+$T8hQHk`~IY+XYNt-&`6?Zj~>wTp2NpUUL_gqii3%x}q*^6`r! z;H69_v-&sE2b+4>LNM<5?+9SK-^;*%!W?2&%=Eu7i?l{uA#f2*UsH>UL12Q5EZ|ej zBsZB(W`&-T%S!!k*|6rF>DpaEMw3}A-Ekte~wdm`pQD`edfJlRlY#d&wQZ+<`7&mfIc7?IWA&w-8JfM9V-jGsc2h zaGcctFU<0K%kmOR!{8~FC<`XDq9o~))nca$&I~H4QYJGjP5S?YZ4qxQP^Lsh}12a`A=x%Fg<|)?%7$H;T)KGevbi5TQaXe zccHWV2VllMlyMKuK( zHKL?7W-JyrM02`6zLW85z#QEhq`y(}CIt%_25yGH z&62s$*ewHdB=3=NWairoW&`$1-IAGpK0}msL-I{9E4~B9kLnlvV*Iak$RTC}%#06Yz$3|zWx6HXh(`tFk^4<1 zTQZAzEpq@=8)GgRF zv>V94hBAQ60vm(5!_6eOl<8!eZKd8$>SR{fUixH?tS(@d*G=kV#&y?XXw&E+g=iUI z$xM%t={;pSnFYp4JznZ$>b<3&AazUTl&+V${)1r_{(tj-qXC?SCZOSL`?vVTLpDwB zh$XWp4bVAe=9<#=X5+uYY{*Jk@jqi6|9=+v=Q!@kDpbS^*d|%wf5co2T4rQf+4#jh z*((eFC(J>&U&j9vW<0-UWW2N;g26pH3}(VnSrD1}F))wmNvVH|nSMs5!!+K^{|7hp zP3M0t=D_yvFe|JBkn00%XamU&!Q9Aye?y=BkL|yIN8ePgEZ%q>U_(clWFxb|qr2c2 zjjv?_nStW~>fZqD)rr!d1m^Zn`11|@&o}fjR5*+*Z{&0M(Eofx-?)nXd_({94Sk#q z$v91TrhLAk|M`YKh5 z8~V*TdjD%T^s_TdtB+mP52*fP_4A^YLuZcpw(QGJ4aOXtb){wOmGf>}&fP4V@_T`5 z*RO?4Om=?haPrQe*T1QQPfWX9XXumZmkVe|2VK3<+EB~5vVCvQuiA~~LQZblH%CXs zh{Kf%{7@}*+i&?7CiTzzF82rT(eHAWEb_l|!{0WuYVi7ZOV{hw74uiLtnokm+P9pC1J(HZQW3yT4gGj-(oUv+8u{{ias6d@YHIaV`9>(PB%M_w{nQ8x~-At zq=h?thgS@JTd`4GsmXWiyx$PBKFMb1gv}cD?kL;*f_c8$^NkBPbG9fK--a^Z#m6Ta zH>+2TeacN6QsTzC^K z%pYpoIhP*1I*<}xNQvv#d$dKtV=Wt8{n53u%XYu3Gt{m1(>|pN&Rg&#&Rvz+uWyOr ze%}q#Un!pQTZ801n+yM-jQlDg?_z$T>JRF4N;|hgv&AuY$j?h-$Ehs}9%or_yTauj zy!y3P5ua>VCy(g`ecj#ithNsF8r3f9{?>;3D*1nJ`>@$hURUeqrRn3gIMvvE)8>bA znZ?srJiRt()#2w&y0cup?BZ`M3-&5ou>bA*)AD!RUTw4cL5pTp^R^T%mNvL?=HO;O zwpd`}_|)lf$=906weKazRjS`Ss6+koOGlR8yJgs_)frue4QTIY(ctlx<=#7U$^BJ> zxDLZ!%_#Zuia3VZgYLVo05M!Y-?1r(Ze%+ z`#*VlE@W9^6)XRP!cMDk6;=f`P1O@b>w=p0;*eHjr=J|-=Sp(-?jTsWK zW&Zmv*Ly$kPVlW(IyA&TvDR|e@UiK!VQn&9Y;yg2kFU0B#?)~IA0MBUb!3tC$y|%} zPO@z8%@rg1E*R9mfValwt#ieR_1&C0-qWSe-Z|&>(;JoUZ+LOx-HFtCbtk<}chi-fgT?#jkxf zs}>#bJa@WL`?Sr)#toRBJLcXmP4NvFG_QN_s&{_BwQofBljO;_i=A1wYrR!~)vm&e z4mj=I_Uzi-J`3+}Y;4oYKBr}TjT)VkH}}_<_-*^N0yeeZK6Kl#bLg`D7R{S#**x97 zK)-&2*SbeVcAIf)y=P7T{;w;9ZU{Y@Ug+}hmCh4tEXunyU};W*TWY6OZ*9k1d}wFg zXUw*|HQ^QfTRiNsx+6>g z88}LL`qRo^8a2N;^@|C=eQ|6@;OkDMCau3b{h)K#mCkQ6YFRYTVA(vYS+~FK-tL+1 z)}7j8nxB2$t9XyVb3KnX-+N+B?v=pg99oyHn6=i{ z<;B*Q{VO;5J+oBXh0(|M8y229S?>L+5vtQuTYS4$v1r~5%jPY8*xcpf%SGFd1ywCq z_iaYFz4L?TUmkpGW3L_1)iv&Czw$N94O_Y-#m)Jb1gBNqgSIU?*!}(Jz@~-x z%IYT1m(|+xN9Nit>#HseX;t-=y2?4L-y8FrwTuU;3=X zTZfd!7kc}zwyt|Z?{#rNyLWF~Vpr-MUu5@kn=)4wG%NPYCZ*QD`6m4S7^nH)q`HJ> z9UbB+uCaNG9%K&w_S)>&^|=YFjxIZJ=xp;ZJFR(9JpRC|361iOBo{0?x5eqMZv)@H z%$pj$;{39k);_B7$E!cfE)&1^2d{)bjlE3E-aBeL(2v^3z8BKJ`|f7=g19Zu zo%|=vx4kv_;S%p^M_#rpTzk2L+oSIqR2Z_iYtQI;$AcDKyAnG&`rg#vk9^z3S4`5O zdFe}U=V~65k1e=iw|9eR#gzkfF1+*M562 zGVWLr&jY`1+}o}}|G1)aTk$J|=H8oa*}Uu~`PS>gXAeF<@X9#5+R+vIZS4NI+v25D zCe6NauXXX?k2^fhef4-$g4_9}-iI5fx_+1NXZ|0fu z2k#fkvp?ontoziBZ;R~ydeZNE29_UtS z@F_JL=YIXH^MFcj4V)^L?^H~mRloe)C7#>0uCx02Tz+@;W!Z4?h|TkDH8K3&!qhsp zt6C2VpuoWA;?zWoI;&|zRonO!DIMk|3z&FD;PV;(o zYgbd}_+N)Dv1s0W%jVhS*PLH{PmN~{BTv< zm;1l_!R?BD8Ltk3s)l!qX7~@E-l_S?mLZ$VoT;E%EanzO^Rlk2ykXU3{F+NSbxxK% z@bKo5icdRvzwvf)?D2NDPiN1(rO~CnU+~0Gx5BkS{w;#WwD$-b)nxqjUYf+FN7X;J z4z#yu-a^af9r-F}TB~Xahup1qZQtAChv9KwHHxu1Ty9T=ti=O+t5xG3Xc|P^j4kR` zdg`g5+*j@2dYgzts zJ9ND6_2rh3)sKfeq?GGdzTE+Tr?0E^E_$%=&|ex3@#@_1ag)e`gKt^A^zrMtrRPD5 z<}DT-)tdI|C1L|!Nir&<(K?BvyE#0d_8Ez%9|y1^Ulo1L?NVxq@;Lleb2l!HUhdi3xudrE zLH!RG2Cj+iJ9^NOB|mTK(yF@kn-$BhR99`D*mn4~jL@JYyOD2|2j1_i57XwC88Cql z=9%ZcJj-(JALdqbn5|rRvE}^KiuF3_N*;)KpE}@Jmvs?(muD@SHZP-`s}^{BYewk? ztwQe~+TxVk*~TxS-iq_i_3Mq?88>7MpCvOF%5aQjyK|-4uP3{YJ2d>^*GrT3Z1m~+M0EJhw(!p7r<>g>`{Ujp-z-?= zq{i2K%>_RZL(w7Xr{Xl}nJDiL$`>O^&&4Iu3lUTj^iqr`y%M)bzlmz4K(EDA(i?G~ z^j6gNz%gi45yxPu2adrz@f3pky=d$S`a>)PX;g}Mc14-`!yMHDXswo^nh zxv(ORknI)W?F)8L#4xg>BF>PDD564Ha8X5!B0DMKGTB)X!R5fk6p=x8QN+(=S4C7W z4|Y?;G;(o8{7NpNh&mO(?uy7FmsG?vaw$bLsR;H^#3HgMdVuVO9;l>gr}h>rE1`dU zgxU{OT683p5gSOpLgx=EE22r|#8y&y;TQm_AQDIwMGmP_wp*a)%V0b6zXj9nz~6hb zqvJKBHTY*RTH90m@pPyP|H^28_PiKPhC(s>i+IiN+L^(c8pe?Mc!U*S>rCJBD7#x< zjap>)_(F5eN;pJn*4jpvHr;$aZP^hS9M%!{IanJgYbnvJb_{=kbglbXVmb`KB@8VOy#9^ zN^1O$V}R67L*wr7CSjn|_}~f~$S=PKN$tGU_;>TlQsaXy#)tB_XCv8kY!_r8zoqw$ z)GkWR9@=h{%nC0-!w>&OlZs0cZhSI^rX#?IrkMSz)YwyBF#|U9AJ&S(R-3=?%D<{H zGoOKbZaPA$8&Y$I_N~-zN{!tdAhlc2Xu1F;V6Z21WgP!+fV+&lBjenlm6DqN7a3R_ zVj+m^^7~TbakG#=+B4YP_$&{TO9JLEs&MXPaw#B9_Kf)v9v<_-QsZMh$g5X* zLL4f^=MZUn0bfe(h19&EjgZ<)X!ue20AES%HyKwN+9;{LmT_gEje*9o^H#?B!k&hE z3C8VrDVBvdU1okKGjmYRlG-0qurit@!=#UbL8`TtlVs5B^>!x0gi4yw8V-z^4rJ(%)`pO z!GQTY{XDEp*7I~I1dF4QPcAW#74Y#3ZbhV41@;lC6_r{jH1qQ&PS99!7%)%96_Xkp zw^(ZYV=3#X1}x#TB;4GjSRJ-O1{RlEIJ6m3#qr0SxusN{!Eq zF>e!K3k_@)p)t8B@V(UhWLz_7^P%ZEy8Wft95%jxXdKC$TsXg8#&CSmewS_YV;D~P_3;Y810DxOdsYSu& zcSX6il3F|1Jf=J|T1%}x>`1A#ky;1%wE=Ezp|NK=a{O`N@Dz%YfqZ-`Ql2{Pq}CZ) zajEh7H|&(E3s3?YPpb}6>k7N1jO!@1ZqR&WTqmh@hgO;zkAG(=_JDl?Hn%QdUOJEp1U2tC+*N5rQIB5GxtuO5E&^T!OORXR0{~f4=qc%~B{bBRJ z0&vtOL1TT1z_$R$#6TIB1p8NjV#K~hk-4(hKX%! zq*V@%@C@-xNf;KF6fas9QZDIv3RMR9B*!V>G{8R^@sSYz^=dP)1>iF-tAX!;HNaY6 z9k3qQ0Bi*KB+ooxKCl2-2rL2?151FVz%pPtumUh>Rh?ARVaxz#0s@!?WCB^hY+w%X zEieU`3UJw$4shK#3K$K14U7fG0bDzd2QtJ!JEfvJMbx)b%IZfz`3m?E!)+Ik1MCI% z0lfEd2sjKJ0geL4ffK+f;52XsI0u{uxazzBTm&uwSAeSkpE2tIbObs9oq>($dOWkH zsG4iVk-|!;;1M|JT#hzGBL5g)1qcQF0Dm9=2n2$FV4$*Ayf3U2tN9)U{lVi1O$}%O z1<(RkKmou8c#N1QKt90L>gG2sqyVZenzLBI|u z0B{+l1GuVvtPyP-l!z!UAV&jZfp38EKn5@Ym;y`%rU3?k>&2OX0Ju(khW^P1UH~tF zSHN$;YjMXx39q6<2v>TXw|MR1wW!8V6@c@87{Fx}S5bU+YATq2>-_=P3Ty+m13Q47z>mN#U^k#e2Ur1%(6Xh# z6M+BYg#TW}6&=HWQ}PbziP%^^NE!`;&oOodS^->aHU^pi^??YW7Qh9k3&4j>?SX>8 zZ>Z=1a1b~I90s_y(@$aDglO_MWSOJI!xTFgJ0)Zf)G7tiA zSr-OW1*!qnff_(fAQEt^jbC*DuJyRKn+?nX7KjZ+m7@ASF#7`Sfet`NpcBvq;9sdr z0lolNcKjzq1Aw-G7f>A7hoQ3qSP85J)&m=WjlgDLA+Q)&0xSh)0hvG+Fq_L`1B~gw zG~jDsEWj%^uh7XN+DY-y=fb=LoCD4SCxJu2VW2ip1Bk^g=A%8&ffqn8t?41x7;rbB zEf57X0O|peKyAPk;Cjs+C<%A~o`4r{0tfgcSDwdV+yrg`xxi+CYoi^&E?_ON9#{#i z0(d!Wz(#?&;0p(809AqaXy_k+3brTM3-AF-17!eTU@dlF9k3qQz)zn1mlyW{e%|Ki zYp$*MpF%bPn}IFB_rMRpR$v>j9oPX(26_MufQCRLpdL^kh(QI>KoC$FNJG1Loo)xa z8Ne@Ptm4)GJ77659^k5B6z~ghAGix#0Db~a0jGg8z!Bgma17u-GkOL52D}D(qkFpp z?SS%V$UXGN9$+^R2SflGKmqh+5x|>2T&g4h{eg}^CxEMx#z0e`8PEb~3A6%Q16&Gm z+0+7+J_KI`E&(Ti9;o~hD)L zvw^ulC146L9caxdEDlB$AOgsOKObPF{18|c@C5jwjvwO2U@vL`kw7@WMdBA|I6ne; z13o}$fd6jb8X9;M_!+njYyq-??|{|7Y@qop{9M^IKxCrnKo9kZ!1e!RErQz;>vKoY*?F64eVS-g+*UxM=bP zd;o8NS3)O%S3n)Wn_^FaC%_}%0l;aB)73A)Y2ZD|~3|I>AgyZDRN&GuN1eH=s=>J#`a}BT#;CWdQ#c<)a0k(Ob&xY*_ zjVsTQ0PStiwgTLDws$5p`rCn>057sTz&`>UVMhQ?TnB*Nz#bq+6M!iY2BtjYe~UT< zJ`C{GItm;EnE3?2p?Xg&tf*AhT-JzT6%}vc>aCR4Jk*E?Z>6~NW2Ex~NFJCw@D}_= zxK+YV=EHmja5Y^3um-FEEx_qs1Muut0e>LwJ@5|Tz7>VWIn5E^9A^&{2Dn1!q{`Jg z=fSTK&m|gKU|h|6z~*Wmt9re02IexK%Y9eC1tR(kn z?Wh#be&wgMQx}tOdojPcL8A`#uk0U~-8eu=i`ARogkpZHfkxde*gw!e5bNw6*aej; z-Spyvh>}PNLP`)$Eu=Ui#rz5eq@Y0NF~8Ww{E`M^9^}HPN1md{V}7p#QUd*htLc$u zeqD_D)elGt_BUoSzfi{fatLFlP!{*$l{5175ym`${^-`8^5rz<7fm1~1f}5&Hov~c z{3;5h1nJRN*d_BDZp?41FlIvga4AN+?a^-Y`z)BrA3cPL2`RQnF~9M`m=eM~=J)8B z--&^gP*WcBn|91^&CqzU8>+BV&F``?zn8+;glhhQVnLAN-V zND2}+rzj=VLE=fU5@c-}dO|%*DJE)GR;syuVx(cH2l-bPe&LFX66zl!{+O$j5PNzk zMXZgpL6C^-q&V3chboRqvjbwcL2(T=zYS^A_TD$QY+v|;R?TSu%~hG-mlV5q%=hbN z9I^eFa_E34JRNz>Z&(_$Y5&TWBOliM7-4<~Q-?OG#}AA+b@pRQi-V#I@@h&Q6@#WL z!J)yp=9k32H`Q6yEZnQnU}Jw7r-znE;ek1K&ZASOl{z~o4gh0+bw4VuBd=2$BHR!$ zGcSI?zMr+@oYZ}fiqbQb>YB+%MUNS%#qO9GHbcpBH^0oucaN3&$h}(u8g&KiA-6Zj zMc_Lt6eE5cO_l*4;a9Z@6g^FvP7Gq~A!I~zg z#WwPk(;^RgXn`}PS)ykC?hQvAs`N(AFw^)qzW_?xA^3~q)~og-rHUzK{uxmt6J=za z6$3I+w*5Jgk%{*G&sOmIPzAehe)-e50_Ep5U%YWS%3>#1!whsjyHJ+$TyZnM_sRT5 z98*XY|4=c0s8Yho{CX(!i*uMPc2`$CHDj&|_j!t|yZHrAE33^I(8lfAd@U|-mHjK@ z1I~u)q7@=S&98)-x8{1kH$9@3evB}`G%Bjl{V{PJhc*0|^7^`%$Gqm(Ow~SfWAB{K z%Z7f8Fu#bZ?ERz1M;C3L@iC?T4e^jIGrziO^Xy$0uHIdo^)bTcw(y*f(tU5^mH>vB zlf7$Fs}1D?wYc!&QiPt1L<$G)n&988j#|}0UUN#<+ai&9zeI!wBFe{1>r*yIY49;3 zOQr;T-#lp8yj=f}DO+!g9mwl`6%p>pJ2a4Rt7zL>ZG z^_yR9HSw-T*OgT~Ge1VGx-WJkBGmjcEM2*T#@dBH?EM&FeqB~n!<8-SCY)^gF~#;* zQFtNpn%=ObN)K7Gd2EBI#L$ls=67(NnfUwVjb#HdahO}?ktez=#MlnV6H~zM#+PJa z|6SK@b7)?pcXc^(F>__)iR-Mz{MM`zhcdnleB-?n5ghhdUzp#kl@&kqY^MG0l`=1; z#e;dG(jx4?`ITIMxYaKNf2jDa|x#dE$4Jp^;??|HVorP3SYxWid{h)Pnz=vC zH(dyKPJG_L>G9A5ALlO3^O;M~6aQO)Z8_e&!dC92$XKG(5vP_Y3-spK-@TdHDBN-1 zvb`}0iT-_3@G)b<8!*XGEkUxp@^$ru6%>!UvMgAKVGU7-=XyEmmrcF zYfJNeh5>#7`0Zz0+4`sU8WtIomKfVFF4iwD#jk%-Y+Ap#lz^T|NqrOIK9!P^8l9S! z5|*tp~rzX3`8hQ=rK>xVb&B__qj`3*=;>KT`kl9ZM@C^|VI zIx#gRH8}w<_lp}8mx$l}6H-wLi}H()OA$dnTKD2+FBLoc!S=(9QdM}h(t4rF|5*Y; zKPCHN1{aR26fbe}cf}Kz{9t1dB|bI>89zFHIKhnpUVmvmqW+=?$7b3xW&XO?i2JML z7a|tkReXxcRXHN0#rRo20Ty-h`c<-RcwB*c+#~IYbt9U#b#@*w;K<@ zpZXsK8IOZF^}SN2!zT_I+iYz@Z60!@QAMFdXJ`qujE zFg2zd2dp2~zxXu3Gr%G!Iqsu}kt1@pDDG~5lHyQ=aZGU;7~N3ot^ZSYV+F}^e#WKu zpG%KV=#`d?Q-`@z0{W+=#`$5y#YOk;7L4f^ALN2$(qOzj)Gs2<^cMv8laTh^XzU^%f6SDaF*G#x8NQC>qVN@WcjRZ5ihex!G28Nn*+| zrHqGVB{J1qCuWRl#*r-oS1VSr?XMag$w- zFlqS(iJ+B=Px-%_;}C70n`C&|PlcPt8-h&+`YAA5iP44@%wE@D+p$m;<9!Dt8yWKh zKSyKK#V7Uamo(T9Cl033o~bD~dxi}4i^nprz+WOTzRQ&RYbgl( atAr|ps)$=TxM6g2zha$jKTJE{<^KUL#=3<7 delta 22704 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 diff --git a/test/js/third_party/_fixtures/msw.ts b/test/js/third_party/_fixtures/msw.ts new file mode 100644 index 00000000000000..97e0bdc195ad97 --- /dev/null +++ b/test/js/third_party/_fixtures/msw.ts @@ -0,0 +1,26 @@ +import axios from "axios"; +import { http, passthrough, HttpResponse } from "msw"; +import { setupServer } from "msw/node"; + +const server = setupServer( + ...[ + http.get("http://localhost/", () => { + // return passthrough() + return HttpResponse.json({ results: [{}, {}] }); + }), + ], +); +server.listen({ + onUnhandledRequest: "warn", +}); + +axios + .get("http://localhost/?page=2") + .then(function (response) { + // handle success + console.log(response.data.results.length); + }) + .catch(function (error) { + // handle error + console.log(error?.message); + }); diff --git a/test/js/third_party/msw.test.ts b/test/js/third_party/msw.test.ts index c01d15e0e8b81d..e4345d6c18dce7 100644 --- a/test/js/third_party/msw.test.ts +++ b/test/js/third_party/msw.test.ts @@ -4,42 +4,8 @@ import { expect, it } from "bun:test"; import * as path from "node:path"; it("works", async () => { - const package_dir = tmpdirSync("bun-test-"); - - await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "axios": "1.6.8", "msw": "2.3.0" } }`); - await runBunInstall(bunEnv, package_dir); - - const fixture_path = path.join(package_dir, "index.ts"); - const fixture_data = ` - import axios from 'axios'; - import { http, passthrough, HttpResponse } from 'msw' - import { setupServer } from 'msw/node' - - const server = setupServer(...[ - http.get('http://localhost/', () => { - // return passthrough() - return HttpResponse.json({ results: [{}, {}] }) - }), - ]) - server.listen({ - onUnhandledRequest: 'warn', - }); - - axios.get('http://localhost/?page=2') - .then(function (response) { - // handle success - console.log(response.data.results.length); - }) - .catch(function (error) { - // handle error - console.log(error?.message); - }); - `; - await Bun.write(fixture_path, fixture_data); - let { stdout, stderr, exited } = Bun.spawn({ - cmd: [bunExe(), "run", fixture_path], - cwd: package_dir, + cmd: [bunExe(), "run", path.join(import.meta.dirname, "_fixtures", "msw.ts")], stdout: "pipe", stdin: "ignore", stderr: "pipe", diff --git a/test/package.json b/test/package.json index 92737a6434b62d..e125594b54a540 100644 --- a/test/package.json +++ b/test/package.json @@ -15,6 +15,7 @@ "@resvg/resvg-js": "2.4.1", "@swc/core": "1.3.38", "@types/ws": "8.5.10", + "axios": "1.6.8", "body-parser": "1.20.2", "comlink": "4.4.1", "dedent": "0.7.0", @@ -29,11 +30,12 @@ "lodash": "4.17.21", "mongodb": "6.0.0", "msgpackr-extract": "3.0.2", + "msw": "2.3.0", "mysql2": "3.7.0", "node-gyp": "10.0.1", "nodemailer": "6.9.3", - "pg-connection-string": "2.6.1", "pg": "8.11.1", + "pg-connection-string": "2.6.1", "postgres": "3.3.5", "prisma": "5.1.1", "prompts": "2.4.2", @@ -41,8 +43,8 @@ "rollup": "4.4.1", "sharp": "0.33.0", "sinon": "6.0.0", - "socket.io-client": "4.7.1", "socket.io": "4.7.1", + "socket.io-client": "4.7.1", "string-width": "7.0.0", "supertest": "6.3.3", "svelte": "3.55.1", @@ -50,8 +52,8 @@ "undici": "5.20.0", "verdaccio": "5.27.0", "vitest": "0.32.2", - "webpack-cli": "4.7.2", "webpack": "5.88.0", + "webpack-cli": "4.7.2", "yargs": "17.7.2" }, "private": true, From 2999fbe3ea83e8ca1659665e171f4debe629b9ba Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 21:37:38 -0700 Subject: [PATCH 07/15] test: st: install ahead of time --- test/bun.lockb | Bin 312628 -> 315249 bytes test/js/third_party/st.test.ts | 34 ++++----------------------------- test/package.json | 1 + 3 files changed, 5 insertions(+), 30 deletions(-) diff --git a/test/bun.lockb b/test/bun.lockb index e57aaa6a360a99bf74814128e7a93cfce270d0b7..752e48f2c539da2064fe7b3565b34b1736fc1043 100755 GIT binary patch delta 33977 zcmeIbd7O^r-~WFtGt7mti(%}$Y-5{Ym~06l30WdzpBn2>R2ovEl`b5}T9P$umh4MK z*~^+e$sUEM@O!?_^SGGL{qXJn+@JgV`~Cju zEFN?=b85-}NAh&<>T>5~m%kn5@nrOPhHgsmcmnX?#N^~8oM*k|+HqcwCo6jJZI^q% z(b&VSJ>eaXCp-3wDQi2&WS1As#Qtq z+VefP0`1=mev>63HP09~ed1_WejI*?WUs&P~JA?1e_PXGS=fM0{6#OM&DzrL7u@@MVDh2fE!qQg0(AI|5vR4vv7X=YQqKLhv8hF zRL{_y1acz;U|pFmeUkh1r$Tk7cs!Y~--9#5Ct$_*?~|N7kW-s6&CT!)SQYAN?I++U z>=;-T%L3~Ju1s|c-eY+wT;Ne6##&(ztc*Iq`QU=KEA;K(r&r$rDW24sZj(Qs+-;yL z*tdUDO0PtZr}`(sZ?Y9g?KI2di6mLy9(@y2=pB7~lp8R(Z?}}DpSmqRXh65#>WsCq zqw~b>+ow;mCnMF!iQUlVA8*-p#0hOORw z7mkFl+4vXm&x#!yl|7RCs84!cU*@K7)ZQ&H5nBa!`rP$@3RXT}GXY3%NSkEx1lQ%r zkh*8NTh|QXZWd3HR7HGI(zW}|b2*u!b#5a$7iD#FrER-DU7pt%@4d?HhDoYF$7{`8 z|H!7U-yZyx??T!<2RsX=Dyc(z4NmEoT*>2^yxOf>(DE=iJC31qP43gXhcfPqo((-} zty{6K-Fo*M$i&er znV9@M8LT09UEN03vHg4Q8OLF(;Nq~(z_ZD%;OUL-c*u>ebm^>L%x2dvYB|*SS+}?q zPY(xDN$@8Q8o|F<4xPbqY&F>@l&W5`j^>cx7Id}DQdku_PfKV(?uIoLUF9T{?uV@& zPg!`O{iw;1$QrpaO-Q2rviKkE(G_Ysrz*8>{-9vojSU54b^mWVHG@}f0b&K z;hD6aN{xLw*IT7k)!!BH{ks61xm2 zmy|MPk82m&>t_2US;_AJwu;aHoojdQpV*}veQqqa^uuswxa{|Ce6Mc(dvvSh@oXoZ z+AS%ioCZp~C-*)#!5SjeK;08l2K1wl{@n(qBy}I`nM`~R^bY&ohMohftIXdU^yR*s z8hP9;=k_r-`A4>X6D?mn;kN%?%WL3=NInhD508K~sq=1pdos+9z2+CU;pbd&TW+G| zQI=nT)$rY5_2`zCeQ+-9nsA<41WFT-V{TX(&nM%oa5D;0SE>#xL1|ceyK8QS3$F#| zMit2L{&iP=_4?AiQ8zNjb?Uoi>B@qw&UI*8=+n!YvcL6ZnWj5-9V-21)p7F@N4NQL zz?CgS`c6Ku{kvbyqWyVaDg5imf#=sBeYI}KrCUpl9u}B3${k<+;EblRf&JF<1Pj-X z4fwct8hhcv88u@A<*^d5ypENORRb$5cyd&1U?CQxX{aw)xJGRFPl^k6XdE9X__oK> z(D5ov?jPT?5+}q4E?~7H&L2!X6c_Q1>zFQ>SSvO#7psYroho$$s~lED@Z^iJ;qmX{ z89Z7uJ}{h+TLoo)0IRW+h8)5Rzvoop_4q&vp(^N};K{_;z^7Pop`3lk-wU=|kPx2x zeUB$Tcr-3P(1K7UqSHC8F%7FeR(P;*>)61LSW4=)RKC$3Pem+mF!A-+Kr)s*y}^^? zVgrk?)Eb`Pj4H8#Gg!)#Tx!JnN{tClT9^>%F~)67nvbUa1nY4(LFL%M6|6c~G)z)l z#0MUaI*mVgGCnr&CRR->U+^T3o3WI$FF2!dY~Z?$BTG&+Cg|4B@6~VtxCA!FEd$!han{n+H2Ai4RX0@9{JXc356Bj6j3n(a&po#|PUjO$aY!C@+}5 zPJDO^LM!G8^?xcouX=Y zs1hIEj8N@h{+HqdlL_g9(JLCn`Yucf9$uLcC_U9}7g{hbHn47*$I}iM*UB@Uv$IxQ z1cn=x7<7yl_xz$~cs$SCvj$;xb*vfh#6@6qycbo2nb)-n{}va4aX;0ydr_)Ki;wS@ z%+SDU9m>S#nHg-iCLz#hW@z~7(vQNbi3^vvYHZ+3EOin(0z*3d6ZaIuoetCxOYP)Z zBe3Ee&yzJceXQnKbhYZSzRa_N?bam(USL037m=*#e=D(UKcb+ESV~T#KNcI_@l%Fl zu)|~Vf!TyqfiUM{9LA~}JW79wp3NoDB@A>@$VsW*ITK5xhk2$-Z1`cUgy58c@qs*Z zT%D0nJvO`P9;>=$>)SZp?rKr<_7a_N(l6t%dQ4GP>#D}}5!jKItLwDOHu??qbEhfdLvA$ySgOh3|1Uk=mTf!Y*&6I19W?!|M{HN#RaZfAN2tD&=?d`~DIJ%e+)1(&(`WeA?^5$k(@S#Z*~34!B? zs(3&y;ZdJE3qhOsKwm;?MNag^*uWC$SP|-#fv1;;EUk27uxb+*9!&f+E&@X}323GW ze5|%2)P@?oNu*y2=)XmOdY1F3=&bSp9@r9cSeTTD4#!|(I!f_c^ zGc327zSW_^bqY1H+=`uS#j1 z-i6gTn7?j(c(Jv#fv#eBXF^qiQ&_`4B2*qPL zTsR{#{4~}h!J}2<14TEwor`sQV63m>Mh$J>kBiviMzQB%!fb`bM8|X(w7S!Cd^@%T zCml)%M1C2%^e0!w`kHE7LP#qHqk85VUJ7#o;}rH0MublkI8s0V$~y#9>^%&fc2E?$=T-E<$6*Am!}?9ed640?0BpOSkAZ%Ka0iwpmltp)NZ$5 zy0cMhYq>4-I#ylMIC0@eu<8YmGQkww<946?K@FaESgMh0&BdyYmEF14KVsEV8eh!b z;NepVf&P2lu0S>DB`2|JIt4JC!b^NdoCZ*!6CrnW>e5Wbk{8XvNuI^hX|XI}RsG)0 z&uywcSW3sL&3@uzEKOR@el&0rOU>_&n!@|sJe~bzcn2&-#{2Psg@h`*In;{{oWfEX zRvEfhp8ak|Bh9GT@Fc9-&bq&nkeU`Rrhz+H&M5QMIuM-nb3*ul15`LT<>&bDm4q5N zp*w^cI-v#!L$PlWa<#pLT)#YrLb1;fa${!_YT~55a!-ppti7Si7(vL5-Al;k@9Gxu>ql;yjj`pQ(d>QQ%mp z!MPZ|mdAp5FDC?oh;g_upVW%=eS0i82{GSsYUMN_{nq#F@nGIx5`43d2irkMjt3|G zk`SKmr1soXeu)q7crUb^P;*C1cZw~h6Y5H+wG;Z{UMTC2+QTbtS3)hE&~ieYG@9?U zjSaLW^oUb8^&a0DHs1HFF8^X}`4_AB&urW8c@D*Dd(S$A)x)($#zmZE%YQFw+P_$L zusYm}Ykw|nmdmkPIdO$o$3>h^>(~=ZV}mJXT&!>A`QYK}3E@{Ruxk$-KB1@r!u;CudBu-#t?f%Vry zp9!@ldak?E6=!^7cnQew6`UW) z#qt{oq>los$h+2l57zPDvJ&~nmGc%fYofe`QkBraM0!&g%rz2+qmPKutI9wzr^Dy*bwXL9F8D0cHQ0^%F;cUWN`96T2V~s!R`96LfE@r)5cf_#y6V-46}-j|U8>)$E>@<0TKhq) zO57%1eAoK@8=UI&g>*{A@pr5|)8m&3&H<}Jxnb#fZ2AYWqVn2!vHD(N%cXqzusBLt zhks#HE5e&wbD^g+(O%O5GgZZvwccV?qoTFNIkD?oTP*)aVM&i!{eQtloD0*Kj8w6w zU=`5PW-Ml`6rrA|o~Lbe8_R8B)wctz>)Q#|@pmkj&el(?blqST+uiC9;2K2#t;4-| zWte0$d=3sbO^e$4_qB3AnE##>{jjXyKx>OtpBJqC?{EhEhg$y!u+x5j=ipT6H8N2B z->?-JVKWqKn7?i9zhk+)YyHFuzOR0%Ga79p#Ok<4wi!~)?q4R_=(H^9L#wA{UHEBM zPs^(3Osk7^KA&1!tcF@_ZLxw&eNaY|zqlO`8*KdFv0OG;Ke6ibm9@nxcbm1vI{j}f ze{1!$tn|Bly07L2oCg2iCfEln%>jPs1dqtD>@$}_^*(Opw5)aGXPfLIta@CserZ|y zWpqVdv3^%A|09T<+X%4=d=!@6!0KYzk6CVL^|Y*tHAYudQyc$xto)k!i}KS6INvz% zbhQc7ve!&0WqW)N8!cA)p4Jx2PO`RG_H))2%YNS4V%f>oeh@3Zm-XwdhSEX6xdMGH z_qPryunut~Jk;9%_t-7}ff=jiU$X_KWu3urt3Qafmc3)+#qxg_RuA~V+Cdv1ObrG8 z4OT{Dt>53V`s!5tT@M?i1m5nbE_}6x>)(F zw02rnxvQ-I7qG_QI%}`DyutEDSO@H03JKa3?XV6zE$_09Vim9(Rt5H2JuNH#JFAP; z@&~Q|VOa4$Soyi{rKhucTF#E1$LeX=ZRj)tZVz;HDwvlHR6stP z(Suk$t1$68p`z9=ElV$M_2OZaufbdiK__3;Mm&gBa5WpBmZis9T`W7!+G5$&E!TiG zE!VN}by7ot{{d@EJ&wQ5q^ad6YWYI{u$@Rb;u%_&;E${C_J0oyiIc(vr5p7Wlts%2!@n_@Oh|Z8QFNSe%T6WM2ZzsA2J4%&>waySI*njW$GgIMv$Z9GBe4*mc1E`4fkrR1pX{QP@Xf%Sm6 z0Z>IBv)mBYA*YAoMvQ`0k^k{+deZ!Jm!3xW=Pvy}cj@T`|M&0ayNku&W~_m$yYo848rc8brKcgZ zC;MOAomYD*{XciHoP)uVK>Nr*BQVf&Z2@LH%==-f1T1ZoLN5KX>Wf zt?EB_=`}hy!eIp?teuu6W#oqz{Y*CgL9EXh*=_tkcj;|IG_?))&s}=kAVdFKwwurg zIcn}odv_kwvDGynba!6y(*LhR>2(P<=%&p7ifMo4@&DUh`r4GP8Ry&cWa9F7orDlv2ZP zRlk|MDO35jZRhR{j2M|G?9hq>O&6!B-tn~6>r^HB)Ri8m_at_iU86v*X* z`=e*ppW1r+(3Ff#Moydae%$=13`HZ0p8ojHoZ)B2oox6@i}WuK@4exv9q%7GXd(}I z^EBymqhhs({u&0=A%q7%Y?CnZFhaS52$#&@g9vdyARLwOiz$5w;jDyr z47%)!f$5OVT6W95iUu%ZmR!)a8tsR9}s>w=OoNNhS2l~!YwoL2tu3V z2)8BtX&N0xh&X|;;3&dva|^+H$2@rqx@+b@rsqkbBaeF@_j!G$-EnVgpU-EOi2Xj3 z;RGD!Go8iZKJ$e*ozG-H>22*zZ<0=uPlVYh3Ye%Ger5#El~mUyyv09rmd)mSu84Q0vDiSCQ($}tP+(l*)BpQO_HdT z*(fS)qAo#YOh3`XW*cNiUg6xzU8ZfznZcJ4;;tebl~BQy{srNzgm-^Ih%tvGO!yU{ z))j=xX4DmghQA?Pl2FxDzlv~E!j!8BvF4nF+1C)7{)$lDO#Bt0&2@y^65>sx-w+~h zAT0O|p_aKNVWor)*AN~tbFLxu{2d|kIzk=O_BukIn+R(q)H8t_2wNrex`FVhStVi6 zErk5PBRpo3en%+v2f_{sjZD-{go6@>+(dZXY?CnZPlR%}5Sp67w-Dm~LO3en2~+wH zgtHRf{R81ib4bF3+X%J(M0m=K`V*ny9fV5~TAAv9A>5QO8LN~KY!k{pO{62&pCdr3TDjZ>lgd`K?M>r^9h#%p3vrWRtbO`0b z5PF%xVF+>Q5spgeV@ii3oR#oyI6^;jNWz2&gj(qkQp~7y2n_=Wmm~}{)zc%~lrSYd z!i(mdgxMJonnoZDHWMQd+GIqyE#YO;D1Z==31LA1VTidUVWor)84yy|6*`s+PzYhYnNtX%XHkU6!U!8p+rkKWiXp6(u-OEPAZ(S;s|doEW|f3N#S!usMflnz z6-6jj0%3=QZ6>N1!a)f`iXnV!wn-RS5}{migdJvZafG;12uCICGNnr(oR#oy34}f7 z5Q2BFi75$vXGV#>Hz!5=O!ZRGeltdNz?>5uG<8Zths;FLVRKdVgK1O-I$~ysj+$Gd zW9G?+q2p$b=!Ef>g-)8bqElwE=tmPM2c0&FqMytv(HWDiJoK|k5}h?0MdwUZ1?ar# zC%Ry^i7uML6`@OJu;{YcBl^XZj?pPr)+xqtidW4c1n;jVrV{j<86~=APKvIZ>Xo4z zW{l`}b53;A)Tsj9G809An5&{cO{1#NUuK5rwz(x@xvvJ@HFF>zkDd8qeXV_7ziB7- z`OOls-)}O+!C`*WSsd;+Ux?HBP4?LB2 zi?W!~H6a#zQ8sf(#A06y%3(%{SnNf)O!Wka#a@)#oD;FwKLSOWi6RzzQ9jeCHmw&? zkJejIo7T&3Zb?`vp+g;nf@V$~gr4;gBI_a)Hf`%7M?{J5=xt>M-dK681g8>!)BX=kqr^bH9#n51~;I7<;@;Z1ylMl zsG=DriZO>ol}t=SsPc+Y4SlJ_gQF{lMTY*`>IZ!PC2~c!mwm&1D|RRQ#`+YyVs?Mu zGv4suXY%Eq6~mtNrFx~BcLw?*qB_oX{}h})AU#pW{bOq1p=B~Sek{KXz5DbXpwB8h z=dbAa0z0?xEX(*~XKo?EPL*>yPN6@NIDYMl%rE=i@va2wlV`74Octr%*(iO#vy^-}LXS;E z5H9T~eD}-x>8@`@tL;ZqG5VTbjMWZXKYiudeHepp3R_J#7OGf3J%Yg*r8-|^eNVY? z9JP-6D%Low9kW^%w2h?Dx#|H8{_79Yc@C&uI8Iu>Y=rg1kCLCVn%c(s&M^F=)p8Kd ztZ&llIBi8euI04_|75jXXp`Mb<2hqBHEd0*>FE#!bAwU@)RO0|pT0|0+WK9vetMeM zUTV)})k-Iz$CIOQRFnT=HC?H^HgV{Yl4!Kh?}m*hwLjWjy+h>3y)K^3}42srh&=(kWMA||$8ma^J z_$*e_Xn5B4t!y@JW%a+%_q_FcKE-Q@L=jLAeaJehfY2B6b6c$%+5y5k@>ngFaOlYc z^(VDf9GGYQ@>xxlTSVCD|M>~%O!WKz#nw@e`bdih)2&v}YBkY5vRWal)k3R6SUtY5 z)e;CRZ}s>hR(pi7@=@n5dhanG3_W_J-d)T()*-B3s@|>ViBy@oKpj#?39Hp39F3+P zU(#yz32U4egf%3U_EDe*)^un{D%e2hKaWr$42?-SJ_bHPD-4&lT0_Fq(2Bt2tk#I| zWVE7id8;)h+!IYl1*<(yIM!+vt=0r>xe8PJ#~>=cDOe$qqq22uMtC}!dc2xf(N6$9 z#jf666-|>-b5Oyiecbx#`+SAb)Z?32tp(u%XzK9#HEJr*UnlZBgs2|h96?%3Fc#=| z3PE|d0waJ%K})N(CfpC`Xl1ph2_JJ5zENwnHrTa+M$6MyYpe6GW5qUBY=>PJ=xB?k zmT3>vnKZ20Tfb)r>p21)&sePk;gVMCV6~2DrO+zF9j*2(;WCaN?fTC2y8!(nOh@P$u&#tJTdgOo7VHLoA*^AVBu&@9JGg2cpR3WP5W=?z>spVn+N*?r zBdkmPrqy)mcWeFE^%`l#p@fssbZtgiZ5ZKaR0EE;to9mVjR>9P+g2M+Sk3wpc*kn5 z6IQEAd)I1j5dHz^$o`%ccWWl$$W-54uIVpg)|B^uUqmaBzQcbM90Pg)Ko0|K02{%k zF!Mqce+jdwg1=Z`DZ(=Fxj9pkPT!9IYBP)7iHhpRUoWQs4vW87RLC)Q^z8X z1LJ`K6Tn0;2}}l4fWDETUa20Z9;ObZ4x|pF9<1)J-mNjMF|0BB0?;_sxYRJzu+uQp zu+lKnuwj8n<#AY69q=S*0kj}!0cZs@!9NW&f42qgKzr~E=m0e5YKrXyG=*x)>;mFI zbx;GugPNcgNB~;fwU%q0F5{;cYHiK~@`6kt5@ZJ2TV(|iAOJD|ZH2G+%$-X9x=ml_ zGQSB%fw#ch;2rP*&_;7C(B{&B2|%05-?#$Tzzy&_xCw57Ke&hBeeVmY`r_9Q=s7hWZcFt%N1y}H zPP8?68ngh9gC;EI)6w`UTV3N#yO@_8SO24jF`t=^yy=n9&GI-o9i1ia0qEe}@()j$!TU2{&55$Kc7 zb)Y?>J{=VTb7_V7U;+3{pG=M;o&frMrw!o}pudVbB9; zk5>`IfJ&eWs0y^tiv!g`4G<4%fdo(oq}Js}J)q5>_Ii`S6fgty06jqxcn&-dl0h5L z7PJHHK?m?GCo=b)CILbH_lamKju2P0S3^O z`U5>D`8?dlmq3#4_xUZ;IO8qO9U>1t6(Ge3Ty-0 z!D_G;EC(yV2SB^~esDL?5Htdhf`@?aN$3{D*I+BS3q0svpuZ7Q1QY|sK?zXOM}J<( zSuFzkJ+gLU`lAqMfo=ilBfoZH{DBP5GVnQA4px9w;0v%CtO0Am`ydfK1{#7!;8D;3 zbRqA~pc1G8UZ8G+wTE~bqbXlxP zL4TlINJr81MTif8ZX@XyQ4Ye|wUq)Vf*81##uzN}vkJZ?%GOE}+l1e}QOF5a=_jK90@@pMYs#GMEa= zfiYklP`=&aYN`Bq1bm1v9VkK{4NC!i^wUQ@eX<+D8Po=KKuw^nVCjPZ3h+G2|_+0)<=#`K!4q8Em#R! zm?820r&Ajf97NrmED7fUQ6P7k@Oa|i2KuC-PZm0#M?ih>s0}~CdFX>fHBc2OULP8c zQoUo~1ULy!f#1QO;Fh}6Zv^&&4d7i8?WUf4fNqnjQrerVaD~4BtHBuTiy%}H6{_&h zBj3KhLQL!g>RM$$X`nuw z4`c&bfd=GF^7FdhVV$nz_>Em#j;(x!;UEm82N6L2N~iS7NBQN{%%B2PP!3zqu_DS7&HP}A5+MCD?VB$ z#i4LB>=*P0l{yf3259Md5d>I}BUI8lLMIcQ>W)S=m7;Np39^#ScBY;}q z4e&Y`4qgMpz(5Lo6P^QRgGpc_$TglHJkd*EFl|4?``;Sa&5mS@2;!N*_*P%+cNG%yvU05#eaSmn@=bsXU%ginAHpCzIw zwOLGf5m*R50}H@>Fb{kIR)M9!)T!gomwI;v!DV1M_#8Y;HkwIR5?&3~fOVh*+G}J# z3@E%2Z3EB{QGK{c7U(JHn7#l$H#97d<(XNU0^r(9_$6* z0VUoC_Jhmd61ZsU)bi&r%bNLXnoLjli}4Hdm?!-CGT$KXdn$MxuHrG1p77_b{}+2#_A=6KOaI13JO+&HXu3wb{{!v>YHi(1&~Vrf8Tl zoj)X2f^czA4CsShVNeKYvs3_R^Q6{Qx}t;?rxj0{@G#-B*4Br_7*G*Z@bjy=G=}Hw z)2JNp?Khp9`^&5t+1y`0EO+QP$)Pt``Mj0OS1ey~#kQ9Iqm5HTZ|@Af$I9pJ7*jr` zd__jJZq;#w-gHGwRV8Gob#-Gx@51tVUqvrpnGu}StDEAw7aeinQkG#p(o`y6wLJZQ zZ97_&6}Nx*^JmW19(~hEQ>}bHqAsSV!HJ4%{LSS`ALbnt=IvOee5LZ0%`=ny(cP1J z_w3d`X+TQ0N#}FtIsSbQC(DZEX_(yHkYoiI`t7CgHg!s@uSQJe@>Nv9O$l5&VnQ$F zA_iSCv-t3!n9%FFh~Z?*S29^Y^XCdw;>@W~kGDHZ4g1c$$Ej!g6Ci4MKIH23p^ zKRHwCqXSf5b)*)qb0uGhN4{ewedMp?oA8dAKb@3C*=;dChwiSLvt`>O*V5;7n~}U@ z-Zdwt`-et{-fOya>xUOA1fMNH-qmO{YWvl@=9L-#Jig%DX8a6)rRdQ61urCQm{#)D zRTrr}Em1y(DfT^cdWL_Q&n>-)@Adc1S=D0P`zHEh|DHNp9b$=nu zOaGx?(%Z+HcRr!rYL8`vP_KH+|2(>9&9sy-uPzi0o@d9J4e|)R2leZZ?(A-V=BJtW zJtmAbe|<`+%g36`v+(?$yrRi#-;$oA*L`>{;lAgUvF0;*W*=vsk!R=~tCvTPJQDF( zzt`^9tHC%k8jotBx3vE8cAcWHem8O8eUJX!Qpiau!*=;fJ~iAo+g&z{rYoV9HipKYhVX-V7GzS?6=)d+ywiSvu7;Q`&p) zl`S6Dq2k#$a@_X_y?Hk7%F9n=&idw_`!QLjnaQM$4!x`POr7Ep*Xz~aa^K^LX=b-_ z553(s|4UDJe|lx#(EA>5Omn+SmQ#CT%Kr83U-x5XOfv=Ma{8$=-P!D;3oku9;F;gv z)KH*zR%IvniAkPI`Js2pp1i)zGknbRH++4KE7d7JHuK@0qRse9xC^U7zM9~PKJpW!%Xf%!)Ek_G0D z>{eA*I|u!N=wz5X_0RK4`aKmMo|9=7rBE;0R=aOpyC zt&Pf_J-KDkEZ^f%*JvX%( z`-#tc@pH4Ev^h%=qxGR{+s&J%W|MdZA2%oMAq1wdE#Z znZKoP&vG+%8CPS^O4IdoF7L^eX36LNp}yX$OqJ!V0)1DT^UG=b(2H>o20p%=?XOnk z?JVvr)WOvzc?H*Z@@g|;1#^4o6}e^G&&_csQ)}1LIfKxvV!M6T{Luk5))&3sqUYC| z%j8il9oucS&$m^6DBpf>x)+=lb*Adjdv0&+2%1M?%RFYwXA&>I&eUAV^$NWy_tlJt zIu6Y9WkV--XXR-Bp6QE+uhBa5)=GbqYVJ#Tc?IfgNtY%kmetlmy@ECly{5OsoFjj< z&e88JrxdO_p9j{NOsnX|Xo1t%eqz`&flHs7D;T3Ths+*_@EaQaseQ z&ow`_tJwD!t2*aKpTFnf+p^h|U+phbY(Jjb*&K(n!re!VIiK(P+JU5S_Iunf*lb=| zO>6wQ*(_R3-s!ivDIOZzHdD%*1GeMIUP7g3-C|C!rXSH>lh)9$4t;H+*ODUi_TQze zd!G1w^^BEa&Q_93;3>7$G{>V_=!L!;c5TYh~`y@I`7|seCon_{ersXdP{T zal5Ipj`8N(!L12eVf^LpeYczndo!o^=5{l5oxg@J-wv}zo|AT%{p;upp*Iqj*c9&l z=I4_YeBLtdrpEK;F7wWMJdf-$v)1GJ)o!=FiuSto?1(yzJF4{R)Ucvw*KYI724*mL z%LZC_${urb15{Cnob)z=g|9w*O&e9aD1ygjqzX$ zs;%_)y=Lr2@;b2BY!&DK&ithmp;sB#`fbDFZ?abHNs3r1L6126ovFBq`j-9PG~Pst z-22R{vM28|6E;zs`Fq`-@pjj-i`N|9cHCW(ShGAG_K)9;o7OdBg3_Ss$9M@zvC-IOip6vR3F#3Mbxj;?#CpYF!R5r zzO8K9sSA!J|Iw+{C-*&ioiHcxs5Sx*U90?gr=6R(x=?}p9@B`)PfVS?$2U)IKWp&) zm^CL%`K_egi-+dwUd^gydM%~t$on1_ZOpO{*B>}?=Hp5CW5%5}uaGu+>1j7@&MbNQ zG+$i0Vi-%bvzhknIBgaw_w#rZAoq7Z`n*QJ#c$-j?-6=ma_P<=JXdm~zrp>Ol0TU{ zN*j8^a+!-sIde>i=y%^E^bY11yH@}4;>Rc1>xIgF<0sQ(8#N2PwYg``ZA)_=n|1iU z$EKgmP&|C6elnA`afMEuH#@PbgX5}~3bj>g3qS$xE6#AAtL+@oSUb^9_LB02d)+UB~=*`Xf zw!Zap#XpMhvK40yXO*vc#q?I%&`Y0BU#mWH#EX|$iJf(gd7#@BcfP#)+nKjUUaxn_ ziE$>87p|B!q>UbhM^>)sr`wvvPVtOiYSU8g#4F|s9=%$aH#+p*==CQ$o@&~scIW%^$HHson(}$|x*5HLeBZxrp4mYQ{1-dJ z!To-Zj)MoxnH~PxrqoXVbWOS6?DQ9C{3$nEOHhvwo99apIdzM^>aT2UX0LhJU9;RTv2J4f90t3os)W3Na@z! zoQMo7l50SPaurerlyeq{@&kIjl$bKOcNddCb6DX_-MbRky=yt8X)IG{L0EB{?K&D(Ai_-3E5;(<`yB8MD`) m&kV{OmfdtN9ab#Yy$JHS7dB58Cx^A|!!oSM(l)Gk^8W+rGxGQV delta 32992 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 { - const package_dir = tmpdirSync(); - - await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "st": "3.0.0" } }`); - await runBunInstall(bunEnv, package_dir); - - const fixture_path = path.join(package_dir, "index.ts"); - const fixture_data = ` - import { createServer } from "node:http"; - import st from "st"; - - function listen(server): Promise { - return new Promise((resolve, reject) => { - server.listen({ port: 0 }, (err, hostname, port) => { - if (err) { - reject(err); - } else { - resolve(new URL("http://"+hostname+":"+port)); - } - }); - }); - } - await using server = createServer(st(process.cwd())); - const url = await listen(server); - const res = await fetch(new URL("/index.ts", url)); - console.log(await res.text()); - `; - await Bun.write(fixture_path, fixture_data); - - let { stdout, stderr } = Bun.spawn({ + const fixture_path = path.join(import.meta.dirname, "_fixtures", "st.ts"); + const fixture_data = await Bun.file(fixture_path).text(); + let { stdout, stderr, exited } = Bun.spawn({ cmd: [bunExe(), "run", fixture_path], - cwd: package_dir, + cwd: path.dirname(fixture_path), stdout: "pipe", stdin: "ignore", stderr: "pipe", diff --git a/test/package.json b/test/package.json index e125594b54a540..3339a2302d47e9 100644 --- a/test/package.json +++ b/test/package.json @@ -45,6 +45,7 @@ "sinon": "6.0.0", "socket.io": "4.7.1", "socket.io-client": "4.7.1", + "st": "3.0.0", "string-width": "7.0.0", "supertest": "6.3.3", "svelte": "3.55.1", From e4cc43ac733b20c313eaf95140fcc4ad80f6ae58 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:21:27 -0700 Subject: [PATCH 08/15] fix merge conflict error --- test/cli/install/bun-link.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cli/install/bun-link.test.ts b/test/cli/install/bun-link.test.ts index cf87a26c0f006e..c9c97c5aeb030f 100644 --- a/test/cli/install/bun-link.test.ts +++ b/test/cli/install/bun-link.test.ts @@ -1,6 +1,6 @@ import { spawn, file } from "bun"; import { afterAll, afterEach, beforeAll, beforeEach, expect, it } from "bun:test"; -import { bunExe, bunEnv as env, tmpdirSync, toBeValidBin, toHaveBins } from "harness"; +import { bunExe, bunEnv as env, runBunInstall, toBeValidBin, toHaveBins, tmpdirSync } from "harness"; import { access, writeFile, mkdir } from "fs/promises"; import { basename, join } from "path"; import { From c8a312f0c6020070bbffeec1e746c3c1672d6ea0 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 21:38:04 -0700 Subject: [PATCH 09/15] add st fixture --- test/js/third_party/_fixtures/st.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/js/third_party/_fixtures/st.ts diff --git a/test/js/third_party/_fixtures/st.ts b/test/js/third_party/_fixtures/st.ts new file mode 100644 index 00000000000000..8b4d96c4ca86bd --- /dev/null +++ b/test/js/third_party/_fixtures/st.ts @@ -0,0 +1,18 @@ +import { createServer } from "node:http"; +import st from "st"; + +function listen(server): Promise { + return new Promise((resolve, reject) => { + server.listen({ port: 0 }, (err, hostname, port) => { + if (err) { + reject(err); + } else { + resolve(new URL("http://" + hostname + ":" + port)); + } + }); + }); +} +await using server = createServer(st(process.cwd())); +const url = await listen(server); +const res = await fetch(new URL("/st.ts", url)); +console.log(await res.text()); From 77d56a8cb8e50521264d251ff53ca03296091510 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 21:38:12 -0700 Subject: [PATCH 10/15] fix windows error --- test/js/bun/util/filesystem_router.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/js/bun/util/filesystem_router.test.ts b/test/js/bun/util/filesystem_router.test.ts index 09a644d2100aad..bd0074fbd3436c 100644 --- a/test/js/bun/util/filesystem_router.test.ts +++ b/test/js/bun/util/filesystem_router.test.ts @@ -16,7 +16,7 @@ function createTree(basedir: string, paths: string[]) { } var count = 0; function make(files: string[]) { - const dir = tmpdirSync(); + const dir = tmpdirSync().replaceAll("\\", "/"); rmSync(dir, { recursive: true, force: true, From 59a6e527fa51064b78dea699eada4f2849024f93 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 21:38:22 -0700 Subject: [PATCH 11/15] test: stripe: increase timeout --- test/js/third_party/stripe.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/js/third_party/stripe.test.ts b/test/js/third_party/stripe.test.ts index 778213b089e12f..df2a562411a1fa 100644 --- a/test/js/third_party/stripe.test.ts +++ b/test/js/third_party/stripe.test.ts @@ -3,6 +3,7 @@ import { bunEnv, runBunInstall, tmpdirSync } from "harness"; import * as path from "node:path"; import { expect, it } from "bun:test"; +// prettier-ignore it.skipIf(!process.env.TEST_INFO_STRIPE)("should be able to query a charge", async () => { const package_dir = tmpdirSync(); @@ -41,4 +42,4 @@ it.skipIf(!process.env.TEST_INFO_STRIPE)("should be able to query a charge", asy expect(out).toBeEmpty(); let err = await new Response(stderr).text(); expect(err).toContain(`error: No such charge: '${charge_id}'\n`); -}); +}, 20_000); From d103adf63439a1697d38148ed782e02946967c05 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:25:35 -0700 Subject: [PATCH 12/15] fix image name --- .../fixtures/with-assets/{image.png => img.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename test/bundler/fixtures/with-assets/{image.png => img.png} (100%) diff --git a/test/bundler/fixtures/with-assets/image.png b/test/bundler/fixtures/with-assets/img.png similarity index 100% rename from test/bundler/fixtures/with-assets/image.png rename to test/bundler/fixtures/with-assets/img.png From e869ee23512a1c95a8adb33d113e6f8fbdb66f0c Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:47:04 -0700 Subject: [PATCH 13/15] test: strip: install ahead of time --- test/bun.lockb | Bin 315249 -> 315702 bytes test/js/third_party/_fixtures/stripe.ts | 8 +++++ test/js/third_party/stripe.test.ts | 37 ++++++------------------ test/package.json | 1 + 4 files changed, 18 insertions(+), 28 deletions(-) create mode 100644 test/js/third_party/_fixtures/stripe.ts diff --git a/test/bun.lockb b/test/bun.lockb index 752e48f2c539da2064fe7b3565b34b1736fc1043..edfce7c97cfc9d3114227ce3ea278fc4743a6e57 100755 GIT binary patch delta 32958 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 p_v(Pvr5E z3vYYtw%psU-R%_4rC>yxAxr)7zQnMZyp)nwn;$4CVarUqhfA<{&3$JUJvQ*6C@&X4 zSHN?~GPv71f!#WW_s zmut4U=UqxH%>*t$iIaBu%HR38Z^F&MINDTg%(MSyMC37<$2S$c z{=|VnCvT>Vn{AG&^vHuX?-=84)9I(fd2dEMW=y{K{55QQeYW|3bAq-DZgh$5qJ)3n ziB2!q^!{k7zVEMDH1dSZ>;-xk7=OCSyUsYMp+PxgfqC?Oe~qG%M_R5aP$*xo>2v9` zT1-fdfeJ5~&)?^Cn!Uu*KxcKDci}>#g_+lHM)Z4W_6PpB+L6a*E-M?=tJmF8VQkSaK3W(;oC>u^V8EB$qcO8>@!WVWz-dUJm!hZ+dPkF zJot;xTf+{#E2h&je>-2`4YP0=OGVx{%!Or)zhZBg=;i*l36bY;ZkfFAi=IF4j%VW9 zoZpyX%PBeX;LdN`Us$|n!3hrms+y(anpw2m->zunX^`_eX8zdoi`hA78y7)?zV{N7 zYXxHU8+LktbWO zZF}z{o)5ZiqvV=eYgzQ)HVan!2No^&fwQ%o_+6RM(M4-_EwWw8=*d!7y^n~r&-a|z z>)tjw6F-|U)hWxF)z5rj*3zn?kq3TO%@f_XM8>i+L{y_T`l!P)b5RkmE_41FePZ;K zrrD1zdZhsowwvEwW^P+UUwBuz?TOEqZ}44Z^6YbJaatU^!i-$wZem3;(ob6599 z9!pwo@!{XP<{zN}Qr(>avfpLyiru1U?E!fR`wH{W1#ZT8Pgn7P?q z14_4UU3J*5%y~rES@fRSw3$21DRT%a`nPrE{g~DL-`DlGdG94}!rqVFVenR$iDlku zS@lU;k>s8U_xX=mvifZ?ZxhI;7#(-i7IXY#f2G@=+QMr*hR<|Z18m?^8D|nMuNzH% z?vm=nm$sNHTUg1K5Rr?BSG&CW*4!OE`#I-XSG~B>jNig}ZZxyD_*eMom$sky1Dj1Qo>Y|03}2ouKMJ%PZoEW zbgse8xRa)X0wPaijeoDe(k&lc=k5?G=(u_OQ-94mk;kpx5eziQeSfPlPFtNJ5z8Bq zI?sLkO7!fxI2glzNQ0X5EVa{|`;@5`A|jrM*%t;5-||h=(*?YVJ57zx{PnyY&5+M% zjY5{{4xnK5r$?M8{gwU@JWyyW4c%>YrCM@?h37L$3CIs&Sip z)tI_Y-$rGc+}r#Eeegrum`8ie;%)wR36UqYmYDB5UMt`7@5w+ng{ma6XN%oV3oe=4 zAs-)pZLystHP>GAFzoGYmLk`VJioQUPaEIgp11ZOvWKXSAscz3YgG3dckRsf)+eNB zGe}Aw^ZRyxO>bLMbqD2Vn$|mL$B8{|Up>=*=KE{E-geBrHF4|WMb`U@JGyem4*zAp zuf{R6c^3_6VlMAu_tx?_Gm9R))Vh7Iw{oRCuANcMDmD3MrQW1yhqJiutl^#Ge|+g? zN}B1ln=3ojW?iuK=-}V(>+;&o0RG8>06x3CL~;9wD@H+$_Z<89#k*f0cQfviIYvP3 z>?hnMcS!p>xgJYvH~D5jzq32W-X8>Zdk|nD^`o* zj_mF|B2Rize_;n(BKP4~4%o zZTB!93ZFF-_psVVo*R2U`MHnF=k0e%J3j7hA#QGG-R^t#yAr(?*Dg8tX3Ai*lcEwL zkD?7$NNpYU@~V$-1}rt+yf37?EsWIor5@2U* z9 zQOp51qpAO;zq0p=N&V7aimxR+^Ch7t&1+v0y391*kGI9d?B`Ve$;&b5053H;1|2kW z_WSi_l{v8Azff!6!(aJ}cRRd;_q*t*+kPofuwR{%7XqKV+lq`stLGJcaY})__+?4o z>V0=!vFBfzT^m0J|NG9{KYQR%aLgS2yC=s2{lhCqj{2jM8kVeXc6al~uZ%w6?>afp z@Bvj5tEP<_nL2zxBClUfsbNv2&BYy2+0A=r{CSLTLDT><^lN|7l@Hw)HKD=Ep$nq? G)&CD3aZS|# delta 32128 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 e8Zoh { + console.log(x); + }); diff --git a/test/js/third_party/stripe.test.ts b/test/js/third_party/stripe.test.ts index df2a562411a1fa..5954ffd8c1458d 100644 --- a/test/js/third_party/stripe.test.ts +++ b/test/js/third_party/stripe.test.ts @@ -3,43 +3,24 @@ import { bunEnv, runBunInstall, tmpdirSync } from "harness"; import * as path from "node:path"; import { expect, it } from "bun:test"; -// prettier-ignore it.skipIf(!process.env.TEST_INFO_STRIPE)("should be able to query a charge", async () => { - const package_dir = tmpdirSync(); - - await Bun.write(path.join(package_dir, "package.json"), `{ "dependencies": { "stripe": "15.4.0" } }`); - await runBunInstall(bunEnv, package_dir); - - // prettier-ignore const [access_token, charge_id, account_id] = process.env.TEST_INFO_STRIPE?.split(","); - const fixture_path = path.join(package_dir, "index.js"); - await Bun.write( - fixture_path, - String.raw` - const Stripe = require("stripe"); - const stripe = Stripe("${access_token}"); - - await stripe.charges - .retrieve("${charge_id}", { - stripeAccount: "${account_id}", - }) - .then((x) => { - console.log(x); - }); - `, - ); - let { stdout, stderr } = Bun.spawn({ - cmd: [bunExe(), "run", fixture_path], - cwd: package_dir, + cmd: [bunExe(), "run", path.join(import.meta.dirname, "_fixtures", "stripe.ts")], + cwd: import.meta.dirname, stdout: "pipe", stdin: "ignore", stderr: "pipe", - env: bunEnv, + env: { + ...bunEnv, + STRIPE_ACCESS_TOKEN: access_token, + STRIPE_CHARGE_ID: charge_id, + STRIPE_ACCOUNT_ID: account_id, + }, }); let out = await new Response(stdout).text(); expect(out).toBeEmpty(); let err = await new Response(stderr).text(); expect(err).toContain(`error: No such charge: '${charge_id}'\n`); -}, 20_000); +}); diff --git a/test/package.json b/test/package.json index 3339a2302d47e9..ab6737fde31b98 100644 --- a/test/package.json +++ b/test/package.json @@ -47,6 +47,7 @@ "socket.io-client": "4.7.1", "st": "3.0.0", "string-width": "7.0.0", + "stripe": "15.4.0", "supertest": "6.3.3", "svelte": "3.55.1", "typescript": "5.0.2", From 7e658c3fca4c5eb5035012828949dc61b6ea96f6 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:47:15 -0700 Subject: [PATCH 14/15] test: st: unused imports --- test/js/third_party/st.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/js/third_party/st.test.ts b/test/js/third_party/st.test.ts index 949e540e5c37aa..418a126c744767 100644 --- a/test/js/third_party/st.test.ts +++ b/test/js/third_party/st.test.ts @@ -1,5 +1,5 @@ import { bunExe } from "bun:harness"; -import { bunEnv, runBunInstall, tmpdirSync } from "harness"; +import { bunEnv } from "harness"; import { expect, it } from "bun:test"; import * as path from "node:path"; From 434e21e02bb1d6e7c2e0babf88d296061e8c8714 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Tue, 14 May 2024 22:47:32 -0700 Subject: [PATCH 15/15] test: msw: use expect().toRun() --- test/js/third_party/msw.test.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/test/js/third_party/msw.test.ts b/test/js/third_party/msw.test.ts index e4345d6c18dce7..2867ffdbbc88d4 100644 --- a/test/js/third_party/msw.test.ts +++ b/test/js/third_party/msw.test.ts @@ -1,19 +1,7 @@ -import { bunExe } from "bun:harness"; -import { bunEnv, runBunInstall, tmpdirSync } from "harness"; +import "harness"; import { expect, it } from "bun:test"; import * as path from "node:path"; it("works", async () => { - let { stdout, stderr, exited } = Bun.spawn({ - cmd: [bunExe(), "run", path.join(import.meta.dirname, "_fixtures", "msw.ts")], - stdout: "pipe", - stdin: "ignore", - stderr: "pipe", - env: bunEnv, - }); - let err = await new Response(stderr).text(); - expect(err).toBeEmpty(); - let out = await new Response(stdout).text(); - expect(out).toEqual("2\n"); - expect(await exited).toBe(0); + expect([path.join(import.meta.dirname, "_fixtures", "msw.ts")]).toRun("2\n"); });