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.