From 25f50eea02dbdba4a9d3f154a4fa9c8aa667d27f Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Tue, 10 Nov 2026 16:02:00 -0500 Subject: [PATCH] test: use independent diagnostics and filesystem oracles --- src/application/Doctor.ts | 2 +- .../DoctorRegistrationEnvironment.test.ts | 20 ++++++--------- .../decompileDirectory/decompileAll.test.ts | 2 +- .../ProcessScenarioRuntimeValidation.test.ts | 25 ++++++------------- 4 files changed, 17 insertions(+), 32 deletions(-) diff --git a/src/application/Doctor.ts b/src/application/Doctor.ts index eb61415619..aa6b08eb66 100644 --- a/src/application/Doctor.ts +++ b/src/application/Doctor.ts @@ -389,7 +389,7 @@ const providerSettingSelections = ( ]; /** Render what the registration comparison established without inferring its effective environment. */ -export const registrationEnvironmentDetail = ( +const registrationEnvironmentDetail = ( client: string, { unrecorded, diff --git a/src/application/DoctorRegistrationEnvironment.test.ts b/src/application/DoctorRegistrationEnvironment.test.ts index 54070c2202..af1c71e979 100644 --- a/src/application/DoctorRegistrationEnvironment.test.ts +++ b/src/application/DoctorRegistrationEnvironment.test.ts @@ -4,12 +4,7 @@ import { expect, it } from "vitest"; import { createTestTempDirectory } from "../../tests/fixtures/temporaryDirectory.js"; import { createDoctorHostFixture as host } from "./Doctor.fixture.js"; -import { - registrationEnvironmentDetail, - runDoctor, - systemDoctorHost, - type DoctorHost, -} from "./Doctor.js"; +import { runDoctor, systemDoctorHost, type DoctorHost } from "./Doctor.js"; const inspection = ( id: string, @@ -186,11 +181,12 @@ it("states each comparison result without a claim it did not establish", async ( classification: "unknown", details: { effective_environment: "unknown" }, }); - expect(check?.detail).toBe( - registrationEnvironmentDetail("cursor", { - unrecorded: [], - differing: ["JAVA_HOME"], - unresolved: ["GHIDRA_INSTALL_DIR"], - }), + expect(check?.detail).toContain( + "what the server cursor starts receives is unknown", ); + expect(check?.detail).toContain("It records other values for JAVA_HOME."); + expect(check?.detail).toContain( + "REA could not resolve its GHIDRA_INSTALL_DIR.", + ); + expect(check?.detail).not.toContain("does not record"); }); diff --git a/src/application/decompileDirectory/decompileAll.test.ts b/src/application/decompileDirectory/decompileAll.test.ts index f7527b34d7..1446b26841 100644 --- a/src/application/decompileDirectory/decompileAll.test.ts +++ b/src/application/decompileDirectory/decompileAll.test.ts @@ -1010,7 +1010,7 @@ describe("decompile_all partial results", () => { if (!result.ok) expect(result.error.userMessage).toContain("before address start"); expect(calls).toHaveLength(0); - await expect(readFile(directory())).rejects.toThrow(); + await expect(stat(directory())).rejects.toMatchObject({ code: "ENOENT" }); }); }); diff --git a/src/process/capture/ProcessScenarioRuntimeValidation.test.ts b/src/process/capture/ProcessScenarioRuntimeValidation.test.ts index 6c185ecef9..c2537adbdf 100644 --- a/src/process/capture/ProcessScenarioRuntimeValidation.test.ts +++ b/src/process/capture/ProcessScenarioRuntimeValidation.test.ts @@ -71,30 +71,19 @@ it("resolves a Windows executable through the canonical PATH spelling", async () await mkdir(selected); await mkdir(ambient); await writeFile(join(selected, "tool.exe"), ""); - await chmod(join(selected, "tool.exe"), 0o644); + await chmod(join(selected, "tool.exe"), 0o755); const scenario = processScenarioSchema.parse({ executable: "tool.exe", working_directory: root, environment: { Path: selected }, }); const candidate = join(selected, "tool.exe"); - try { - const resolved = await resolveProcessScenarioRuntimePaths( - scenario, - { PATH: ambient }, - "win32", - ); - expect(resolved.executable).toBe(candidate); - } catch (cause: unknown) { - const message = - cause instanceof AnalysisInputError - ? (cause.issues[0]?.message ?? cause.message) - : cause instanceof Error - ? cause.message - : String(cause); - expect(message).toContain(candidate); - expect(message).not.toContain(ambient); - } + const resolved = await resolveProcessScenarioRuntimePaths( + scenario, + { PATH: ambient }, + "win32", + ); + expect(resolved.executable).toBe(candidate); } finally { await rm(root, { recursive: true, force: true }); }