diff --git a/.changeset/red-years-pump.md b/.changeset/red-years-pump.md new file mode 100644 index 000000000..a2410e40b --- /dev/null +++ b/.changeset/red-years-pump.md @@ -0,0 +1,5 @@ +--- +'@electric-sql/pglite': patch +--- + +Do not set process.exitCode at all diff --git a/packages/pglite/package.json b/packages/pglite/package.json index 4f0e9b34f..9aa1d494d 100644 --- a/packages/pglite/package.json +++ b/packages/pglite/package.json @@ -125,7 +125,7 @@ "test": "pnpm test:basic && pnpm test:node", "test:basic": "pnpm test:clean && vitest tests/*.test.js tests/*.test.ts tests/**/*.test.js tests/**/*.test.ts", "test:web": "pnpm test:clean && concurrently -s first --hide 1 --prefix none -k \"sleep 2 && vitest --fileParallelism false tests/targets/web/*.test.web.*\" \"npx http-server --port 3334 ./\"", - "test:bun": "pnpm test:clean && pnpm bun test --timeout 15000 tests/basic.test.js tests/pgvector.test.js tests/live.test.js tests/targets/runtimes/node-fs.test.js", + "test:bun": "pnpm test:clean && bun test --timeout 15000 tests/basic.test.ts tests/live.test.ts tests/targets/runtimes/node-fs.test.js", "test:deno": "cd tests/targets/deno && deno task test", "test:node": "pnpm test:clean && pnpm vitest tests/targets/runtimes/node-*.test.js", "test:runtimes": "pnpm test:bun && pnpm test:node", diff --git a/packages/pglite/src/pglite.ts b/packages/pglite/src/pglite.ts index 517a4376a..f10161849 100644 --- a/packages/pglite/src/pglite.ts +++ b/packages/pglite/src/pglite.ts @@ -820,25 +820,18 @@ export class PGlite this.#ready = false this.#running = false - const exitCode = pglUtils.pgliteProc.exitCode try { // exit the runtime. since we're using `noExitRuntime: true` on our module, // we need to do this explicitly - // this sets process.exitCode to 0 this.mod!._emscripten_force_exit(0) - // clear mod to release memory - this.mod = undefined } catch (e: any) { this.#log(e) if (e.status !== 0) { this.#log('Error when exiting', e.toString()) } } finally { - try { - pglUtils.pgliteProc.exitCode = exitCode - } catch { - // some envs do not allow setting the exitCode, swallow - } + // clear mod to release memory + this.mod = undefined } } diff --git a/packages/pglite/tests/basic.test.ts b/packages/pglite/tests/basic.test.ts index c21c34cfd..a4928642c 100644 --- a/packages/pglite/tests/basic.test.ts +++ b/packages/pglite/tests/basic.test.ts @@ -800,6 +800,12 @@ await testEsmCjsAndDTC(async (importType) => { expect(process.exitCode).toEqual(origExitCode) }) + it('restores undefined process.exitCode on close', async () => { + expect(process.exitCode).toBeUndefined() + await db.close() + expect(process.exitCode).toBeUndefined() + }) + it('restores process.exitCode on close', async () => { const origExitCode = process.exitCode process.exitCode = 42 @@ -812,18 +818,6 @@ await testEsmCjsAndDTC(async (importType) => { } }) - it('restores undefined process.exitCode on close', async () => { - const origExitCode = process.exitCode - process.exitCode = undefined - - try { - await db.close() - expect(process.exitCode).toEqual(undefined) - } finally { - process.exitCode = origExitCode - } - }) - it("arrays with NULL elements should return null, not string 'NULL'", async () => { const pg = await PGlite.create() diff --git a/postgres-pglite b/postgres-pglite index 6dab6d9c3..b133782cd 160000 --- a/postgres-pglite +++ b/postgres-pglite @@ -1 +1 @@ -Subproject commit 6dab6d9c37607f32b56d4778b6de95ac0d7438fc +Subproject commit b133782cd759f08b3aeb263b80a963b39c7b7af1