Fixture and oracle design
Test Asset Layout
The tests/assets/projects tree contains redistributable
Altium projects plus Altium-generated reference outputs used as command
oracles. Tests should treat these assets as inputs and write all generated
artifacts to temporary directories that mirror the project-local
output/ layout, or to the project-local output/
folder for manual review.
Project Structure
| Path | Meaning |
|---|---|
input/ |
Committed project source files: .PrjPcb, .SchDoc, .PcbDoc, and reference_gen.OutJob. |
reference_output/ |
Outputs generated by opening the project in Altium and running input/reference_gen.OutJob. |
output/ |
Local scratch output only. Tests and agents should put manual review artifacts here, grouped by command, variant, and output kind. |
Variant Folders
reference_output/no_variant means Altium generated the
output with no variant applied. Variant-specific outputs should live
under a folder named for the variant, such as
reference_output/B4. BOM, PnP, and JLC review artifacts
should use the project-local output folder:
tests/assets/projects/<project>/output/<command>/<variant>/....
BOM and PnP Oracles
XML-BOM and CSV-BOM are Altium oracle outputs.
BOM tests use them to verify source component coverage, designator
resolution, DNP behavior, and key fields such as value and description.
The raw JSON output is the main machine-consumable checkpoint because it
preserves normalized component data without losing Altium Monkey source
detail.
PNP-METRIC contains Altium-generated pick-and-place CSV
files. PnP tests use these files for placement designators, side, numeric
center coordinates, and rotation checks. Coordinates should be compared
with a small numeric tolerance because Altium emits fixed decimal text and
the CLI stores floats.
Primary Cases
| Project | Purpose |
|---|---|
node_test_array |
Primary BOM/PnP test. It exercises hierarchical channel designators and variant B4, where one channel has different DNP state from the other channels. It also contains standard No BOM component behavior. |
loz-old-man |
High component-count BOM/PnP test. It exercises broad component-type coverage; variant A includes alternate component values such as R6. |
cutouts |
Primary pcb-svg board cutout fixture. It contains four interior cutouts covering rectangular, circular arc, and rounded T-shaped geometry. |
Known Limitations
Altium Monkey does not currently process Altium .annotation
files. Projects that rely on external annotation data can still have edge
cases in designator resolution. Release notes should keep this limitation
visible until annotation-file processing is implemented.