mirror of
https://github.com/morluto/rea.git
synced 2026-10-31 20:06:14 +00:00
* fix(errors): preserve caller abort reasons at admission Keep the opaque caller reason on reverse, pcap, and SQLite cancellation, and leave a recognized physical digest or command failure in place when a late abort is also observed. Fixes #5670 Co-authored-by: morluto <morluto@users.noreply.github.com> * fix(reverse): keep a foreign digest ABORT_ERR as an adapter failure Treat ABORT_ERR as cancellation on the command boundary, where that code already meant an aborted provider process. A digest or stat rejection with the same code stays a physical adapter failure unless the caller signal is aborted. Cover aborted command EACCES, ETIMEDOUT, and ABORT_ERR with and without captured output. Co-authored-by: morluto <morluto@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: morluto <morluto@users.noreply.github.com>
29 lines
910 B
TypeScript
29 lines
910 B
TypeScript
import { expect, it } from "vitest";
|
|
|
|
import { PcapAnalysisService } from "./PcapAnalysisService.js";
|
|
|
|
it("preserves the exact caller reason when pcap admission is already aborted", async () => {
|
|
const reason = Object.freeze({ requested: "stop" });
|
|
const controller = new AbortController();
|
|
controller.abort(reason);
|
|
let calls = 0;
|
|
const service = new PcapAnalysisService({
|
|
inspectAvailability: () => Promise.reject(new Error("unused")),
|
|
close: () => Promise.resolve(),
|
|
execute: () => {
|
|
calls += 1;
|
|
return Promise.reject(new Error("provider must not run"));
|
|
},
|
|
});
|
|
const result = await service.execute(
|
|
"inspect_pcap_client",
|
|
{},
|
|
{ signal: controller.signal },
|
|
);
|
|
expect(result.ok).toBe(false);
|
|
if (result.ok) return;
|
|
expect(result.error._tag).toBe("AnalysisCancelledError");
|
|
expect(result.error.cause).toBe(reason);
|
|
expect(calls).toBe(0);
|
|
});
|