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
nxp-frdm-imx93 and ov-tech-pimx8 extend the opt-in toon/SVG performance corpus with larger boards and complex embedded STEP models. Their project-referenced sources retain original relative paths, and source manifests record byte hashes. They have no Altium output oracle and are excluded from fast unit-test workloads. bluetooth_sentinel_flex is the focused board-region and local-stack-thickness fixture; it contains only the PcbDoc required to distinguish two rigid regions from one flex region.
| 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. |
bluetooth_sentinel_flex |
Primary source-aware board-region fixture. Its two rigid regions resolve to 32.1455 mil and its flex region resolves to 3.3267 mil. Focused region-query tests may run normally; full Toon rendering remains opt-in. |
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.