mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-14 19:02:17 +03:00
63 lines
1.7 KiB
TypeScript
63 lines
1.7 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { spawnSync } from "node:child_process";
|
|
import { fileURLToPath } from "node:url";
|
|
import test from "node:test";
|
|
|
|
const REPO_ROOT = fileURLToPath(new URL("../..", import.meta.url));
|
|
const FIXTURE = fileURLToPath(
|
|
new URL("../fixtures/stream-handler-public-error-boundary.fixture.ts", import.meta.url)
|
|
);
|
|
|
|
const CHILD_RUNTIME_ENV_KEYS = [
|
|
"PATH",
|
|
"TMPDIR",
|
|
"TMP",
|
|
"TEMP",
|
|
"SystemRoot",
|
|
"ComSpec",
|
|
"PATHEXT",
|
|
"LANG",
|
|
"LC_ALL",
|
|
"TZ",
|
|
] as const;
|
|
|
|
function buildFixtureEnv(): NodeJS.ProcessEnv {
|
|
const env: NodeJS.ProcessEnv = {
|
|
NODE_ENV: "test",
|
|
APP_LOG_TO_FILE: "false",
|
|
API_KEY_SECRET: "stream-handler-boundary-fixture-secret-20260902",
|
|
DISABLE_SQLITE_AUTO_BACKUP: "true",
|
|
NO_COLOR: "1",
|
|
};
|
|
|
|
for (const key of CHILD_RUNTIME_ENV_KEYS) {
|
|
const value = process.env[key];
|
|
if (value !== undefined) env[key] = value;
|
|
}
|
|
|
|
// Nested test runners must not inherit the parent runner's recursion marker.
|
|
delete env.NODE_TEST_CONTEXT;
|
|
return env;
|
|
}
|
|
|
|
test("generic stream public error boundaries pass in an isolated process", () => {
|
|
const result = spawnSync(
|
|
process.execPath,
|
|
["--import", "tsx/esm", "--import", "./open-sse/utils/setupPolyfill.ts", "--test", FIXTURE],
|
|
{
|
|
cwd: REPO_ROOT,
|
|
encoding: "utf8",
|
|
env: buildFixtureEnv(),
|
|
timeout: 120_000,
|
|
}
|
|
);
|
|
const output = `${result.stdout}\n${result.stderr}`;
|
|
|
|
assert.ifError(result.error);
|
|
assert.equal(result.signal, null, output.slice(-12_000));
|
|
assert.equal(result.status, 0, output.slice(-12_000));
|
|
assert.match(output, /(?:^|\s)tests\s+6(?:\s|$)/m);
|
|
assert.match(output, /(?:^|\s)pass\s+6(?:\s|$)/m);
|
|
assert.match(output, /(?:^|\s)fail\s+0(?:\s|$)/m);
|
|
});
|