Files
reverse-engineering-anything/tests/acceptance/bunPathBudgetCli.test.ts
T
morluto cb4e5cfbff feat(analysis): make resource budgets recoverable across CLI and MCP (#9706)
* refactor(analysis): centralize resource budgets and recovery facts

* feat(analysis): expose ASAR and Ghidra runtime admission controls

* feat(artifacts): expose reader admission and preserve limited recognition

* feat(javascript): expose recoverable semantic precision budgets

* feat(web): add recoverable source-map budgets and compact retained views

* feat(web): make historical capture decoding budgets recoverable

* fix(desktop): enforce selected view policies across capture and export

* feat(runtime): make Frida and LLDB retention budgets selectable

* feat(native): expose diagnostic budgets and preserve exhaustion causes

* feat(managed): expose recoverable snapshot and representation budgets

* feat(metadata): make Go and Rust inspection budgets recoverable

* feat(wasm): expose representation and producer admissions

* feat(evm): expose per-call worker resource budgets

* feat(android): make resource and string-pool omissions recoverable

* feat(producers): expose command and recorded-capture budgets

* docs(analysis): record recovery contracts and integrated validation

* fix(docs): link calibration oracle from published verification pages

* fix(docs): restore desktop task anchors and receipt links

* test(analysis): align fixtures with selectable budget contracts

* fix(analysis): remove source-location projector dependency cycle

* test(analysis): refresh budget recovery and verifier regressions

* test(analysis): preserve format and publication recovery expectations

* test(windows): align conformance with owned runtime admission

* fix(desktop): preserve selected alias kinds in exported state

* test(analysis): align provider fixtures with recoverable budgets

* test(desktop): validate emitted alias metadata structurally

* fix(ghidra): classify bounded Windows endpoint refusals

* test(cli): assert selectable artifact admission recovery

* fix(cli): preserve capture provenance in environment builds
2026-11-10 05:11:20 -05:00

60 lines
2.0 KiB
TypeScript

import { writeFile } from "node:fs/promises";
import { expect } from "vitest";
import { workspaceCliTest as test } from "../support/cli/workspaceCliFixture.js";
import {
bunModuleGraphPayload,
elfAppendedBunPayload,
} from "../../src/artifacts/bun/BunStandalone.fixture.js";
import { parseEvidence } from "../../src/domain/evidence.js";
import { artifactInspectionResultSchema } from "../../src/domain/artifactInspection.js";
for (const shared of [false, true])
test(`bounds combined Bun path growth with shared prefixes: ${String(shared)}`, async ({
cli,
workspace,
}) => {
const modules = Array.from({ length: 1000 }, (_, index) => ({
name: shared
? `/${"a/".repeat(254)}${String(index)}`
: `/${String(index)}/${"a/".repeat(254)}end`,
contents: Buffer.alloc(0),
}));
const path = workspace.path("paths");
await writeFile(
path,
elfAppendedBunPayload(bunModuleGraphPayload({ modules })),
);
const result = await cli.run({
arguments: ["inspect-artifact", path, "--json"],
environment: { REA_LOG_LEVEL: "silent" },
});
if (!shared) {
expect(result.exitCode).toBe(1);
expect(result.json).toMatchObject({
code: "truncated",
retryable: true,
details: {
reason: "limit",
boundary: "capacity",
reader_limit: {
parameter: "artifact_limits.bun.path_nodes",
effective_value: 250_000,
required_value: 250_112,
unit: "count",
can_increase: true,
},
},
});
} else {
expect(result.exitCode, result.stderr).toBe(0);
const inspected = artifactInspectionResultSchema.parse(
parseEvidence(result.json).normalized_result,
);
expect(inspected.subject.root_format).toBe("bun-standalone");
const graph = inspected.substeps.find(
(step) => step.operation === "inventory_artifact",
)?.evidence.normalized_result;
expect(graph).toMatchObject({ manifest: { occurrence_count: 1001 } });
}
}, 120_000);