fix(tui/utils): corrected state restoration for TTY and environment variables
- Corrected TTY property restoration to properly delete injected properties instead of redefining them as truthy values. - Updated environment restoration to modify process.env keys individually to prevent breaking environment object reference bindings. - Prevented pollution of TTY-gated code and environment variable state across test suites.
This commit is contained in:
@@ -132,7 +132,12 @@ export function createProcessTerminalRenderHarness(
|
||||
setTerminalHeadless(previousHeadless);
|
||||
for (const spy of spies) spy.mockRestore();
|
||||
for (const [target, key, descriptor] of PRISTINE) {
|
||||
// A piped test run has no own `isTTY`/`columns`/`rows` descriptor, so
|
||||
// the captured pristine value is `undefined`. Deleting the forced
|
||||
// property restores that absent state — skipping it would leak
|
||||
// `isTTY = true` and poison TTY-gated code (e.g. mermaid color auto-detect).
|
||||
if (descriptor) Object.defineProperty(target, key, descriptor);
|
||||
else Reflect.deleteProperty(target, key);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -12,18 +12,25 @@ import { logger } from "@oh-my-pi/pi-utils";
|
||||
*/
|
||||
|
||||
let tempDir: string;
|
||||
let restoredEnv: NodeJS.ProcessEnv;
|
||||
let prevAgentDir: string | undefined;
|
||||
|
||||
beforeAll(() => {
|
||||
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "pi-logger-error-"));
|
||||
restoredEnv = { ...process.env };
|
||||
// `getLogsDir()` honors OMP_AGENT_DIR / HOME for its base; pin to our tmp.
|
||||
// Restore only this key on teardown — reassigning `process.env` wholesale
|
||||
// would replace the live binding with a plain object, diverging it from
|
||||
// `Bun.env` and poisoning every env-reading test that runs afterwards.
|
||||
prevAgentDir = process.env.OMP_AGENT_DIR;
|
||||
process.env.OMP_AGENT_DIR = tempDir;
|
||||
logger.setTransports({ file: tempDir, console: false });
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
process.env = restoredEnv;
|
||||
if (prevAgentDir === undefined) {
|
||||
delete process.env.OMP_AGENT_DIR;
|
||||
} else {
|
||||
process.env.OMP_AGENT_DIR = prevAgentDir;
|
||||
}
|
||||
logger.setTransports({ file: false, console: false });
|
||||
fs.rmSync(tempDir, { force: true, recursive: true });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user