Repository navigation
test(manifest): run the facts assembler over smoke-test records - #1713
Jeppe Fredsgaard Blaabjerg (jfblaa) merged 2 commits into
Conversation
…r does A prod node whose scope dependencyManagement sets sits in Maven's compile root without a parent there; its edge lives in the test root. The assembler merges a project's roots, so the facts are fine, but the shared reachability assertion rejected the Maven records. Maven's smoke test now checks each project with --per-project, which merges a project's roots the way the assembler does. Gradle and sbt keep the stricter per-root check, as their roots are independent resolutions. Both modes now drop an edge whose ends are not both nodes of its root, as the assembler does, so a dangling edge no longer makes a node look reachable. The Maven fixture covers the managed-scope case.
PR SummaryLow Risk Overview
The Maven fixture adds Reviewed by Cursor Bugbot for commit c4a6824. Configure here. |
Oskar Haarklou Veileborg (BarrensZeppelin)
left a comment
There was a problem hiding this comment.
[agent] Simplification review: report only, no correctness hunting. Inline comments below. Nothing to flag in assert-records.py or maven-compat-smoke-assertions.test.mts; the managed-scope additions follow the existing pattern and reuse edge_pair, in_prod and edge_roots.
assert-reachability.py was a hand-ported copy of the assembler's own reachability check, and the per-project mode ported more of it. The smoke tests now assemble the records with the real parseRecords and assembleFacts, which throw on a resolved dependency no direct dependency of its project reaches, so the check cannot drift from the assembler. The assembler checks only the roots of known projects, so the runner also rejects a root of any other project. The script, its unit tests and the --per-project flag are gone; their shapes are now assembler tests.
LLM Description written by Claude Code:claude-opus-5-5
Follow-up to #1711. The smoke tests' reachability check was a hand-ported copy of the assembler's own check. It rejected valid Maven records: a node whose scope
dependencyManagementsets to compile under a test parent sits in Maven's compile root without a parent there, and its edge lives in the test root. The assembler merges a project's roots, so the facts were already correct.What changes
parseRecordsandassembleFacts, so the check cannot drift from the assembler. The assembler checks only the roots of known projects, so the runner also rejects a root of any other project.assert-reachability.pyand its unit tests are gone. Their shapes are now assembler tests.managedmust be prod and its test parent dev.Test-only change. Compat matrices are green: Maven 3.2.5 to 4.0.0-rc-6, Gradle 1.12 to 9.2.1, sbt 0.13.18 to 1.9.9 (with Ivy).
🤖 Generated with Claude Code