Files
backnotprop__plannotator/tests/helpers/environment.ts
iury souza 13309e322b feat(server): support bounded port ranges (#1042)
* feat(server): support bounded port ranges

* fix(server): harden bounded port retries

* fix(server): preserve non-range port behavior

---------

Co-authored-by: Michael Ramos <mdramos8@gmail.com>
2026-07-16 06:31:52 -07:00

47 lines
1.2 KiB
TypeScript

import { mkdtempSync, rmSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
/**
* Create an environment-and-temp-directory fixture for integration tests.
* Call reset before each test and restore from afterEach.
*/
export function createTestEnvironment(
envKeys: readonly string[],
tempPrefix: string,
): {
reset(): void;
makeTempDir(): string;
restore(): void;
} {
const savedEnv = new Map<string, string | undefined>();
const tempDirs: string[] = [];
return {
reset() {
if (savedEnv.size > 0) {
throw new Error("Test environment is already active");
}
for (const key of envKeys) {
savedEnv.set(key, process.env[key]);
delete process.env[key];
}
},
makeTempDir() {
const dir = mkdtempSync(join(tmpdir(), tempPrefix));
tempDirs.push(dir);
return dir;
},
restore() {
for (const [key, value] of savedEnv) {
if (value === undefined) delete process.env[key];
else process.env[key] = value;
}
savedEnv.clear();
for (const dir of tempDirs.splice(0)) {
rmSync(dir, { recursive: true, force: true });
}
},
};
}