mirror of https://github.com/garrytan/gstack.git
test: env restore runs per-test, not per-suite — the leak that failed 30 strangers
gstack-memory-helpers saved HOME/GSTACK_HOME/PATH in beforeEach but restored in afterAll, so the last beforeEach's snapshot won and a gstack-test-engine temp dir leaked into every later file in the same process: gstack-config read the wrong store, make-pdf's child resolved Chromium under the temp cache, update-check and artifacts-init lost their real homes. afterAll is now afterEach; the config and update-check harnesses also strip GSTACK_HOME/GSTACK_STATE_ROOT from child env as a belt.
This commit is contained in:
parent
3fffeab725
commit
7d732020b0
|
|
@ -11,7 +11,7 @@
|
||||||
* Free-tier (~50ms total). Runs in `bun test`.
|
* Free-tier (~50ms total). Runs in `bun test`.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { describe, it, expect, beforeEach, afterAll } from "bun:test";
|
import { describe, it, expect, beforeEach, afterEach } from "bun:test";
|
||||||
import { mkdtempSync, writeFileSync, readFileSync, existsSync, rmSync, mkdirSync, chmodSync } from "fs";
|
import { mkdtempSync, writeFileSync, readFileSync, existsSync, rmSync, mkdirSync, chmodSync } from "fs";
|
||||||
import { tmpdir } from "os";
|
import { tmpdir } from "os";
|
||||||
import { join } from "path";
|
import { join } from "path";
|
||||||
|
|
@ -338,7 +338,11 @@ describe("withErrorContext", () => {
|
||||||
process.env.GSTACK_HOME = testHome;
|
process.env.GSTACK_HOME = testHome;
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(() => {
|
// afterEach, not afterAll: the save happens in beforeEach, so an afterAll
|
||||||
|
// restore would put back the PREVIOUS test's temp dir (the last beforeEach
|
||||||
|
// overwrote savedHome) and leak a gstack-test-home-* dir into every test
|
||||||
|
// file that runs after this one in the same bun process.
|
||||||
|
afterEach(() => {
|
||||||
if (savedHome === undefined) delete process.env.GSTACK_HOME;
|
if (savedHome === undefined) delete process.env.GSTACK_HOME;
|
||||||
else process.env.GSTACK_HOME = savedHome;
|
else process.env.GSTACK_HOME = savedHome;
|
||||||
});
|
});
|
||||||
|
|
@ -414,7 +418,13 @@ describe("detectEngineTier", () => {
|
||||||
process.env.HOME = testHome;
|
process.env.HOME = testHome;
|
||||||
});
|
});
|
||||||
|
|
||||||
afterAll(() => {
|
// afterEach, not afterAll: the save happens in beforeEach, so an afterAll
|
||||||
|
// restore would put back the PREVIOUS test's gstack-test-engine-* temp dir
|
||||||
|
// (the last beforeEach overwrote the saved values). That leaked
|
||||||
|
// HOME/GSTACK_HOME/PATH into every test file that ran after this one in the
|
||||||
|
// same bun process — child processes then looked for Playwright's Chromium
|
||||||
|
// cache and ~/.gstack config under a throwaway temp HOME.
|
||||||
|
afterEach(() => {
|
||||||
if (savedHome === undefined) delete process.env.GSTACK_HOME;
|
if (savedHome === undefined) delete process.env.GSTACK_HOME;
|
||||||
else process.env.GSTACK_HOME = savedHome;
|
else process.env.GSTACK_HOME = savedHome;
|
||||||
if (savedGbrainHome === undefined) delete process.env.GBRAIN_HOME;
|
if (savedGbrainHome === undefined) delete process.env.GBRAIN_HOME;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue