Freeze the package compatibility corpus: real .rsbank bytes proving both ladder directions, every truncation site, and the round trip

This commit is contained in:
2026-08-02 15:16:55 -04:00
parent b99027bc4c
commit 9521b5339f
31 changed files with 907 additions and 0 deletions
+4
View File
@@ -94,6 +94,10 @@ belongs to its skin (`shell/actions/package_export_action`), not this seam.
- `import_landing` — the import's two halves that decide anything: `landPackage` (decode, plan, verify EVERY payload's digest, then land through the journal) and `applyImportedBank` (the new bank's entries plus a birth record per landed file, in one straight-line block). REAPER-free deliberately — all-or-nothing, integrity and birth-record behaviour are assertable without a DAW.
- `import_bank` — the promptless import verb over a live `ReaSamplerSession`: the project directory, the minted bank id, the `recordCreated` writer, and the one undo-batched persist. REAPER-facing, so it compiles into the extension module rather than into a library with a test target.
`package_round_trip_tests` is declared here with no library of its own: it drives the
same frozen corpus (`tests/fixtures/package_compat/`) through both verbs, which is where
export → import → export payload identity is proven.
## Gotchas
- A crash mid-export strands the `.rsbanktmp` sibling. It is not a `.rsbank` (no
+10
View File
@@ -33,6 +33,16 @@ reasampler_pure_library(import_landing
LINK PUBLIC import_plan package_rollback bank_book PRIVATE bank_package wav_codec)
reasampler_test(import_landing LINK import_landing bank_package app_version wav_codec origin_ledger)
# The frozen compatibility corpus driven through both verbs in one process — the round
# trip is export -> import -> export, so its link set is export_bank's plus the import
# half. Fixture path: see tests/package_fixtures.h.
reasampler_test(package_round_trip
LINK import_landing export_bank bank_package bank_book slot_map view_mode_model
tail_control origin_ledger tracking_authority prune_reconcile app_version
capture_paths wav_codec)
target_compile_definitions(package_round_trip_tests PRIVATE
REASAMPLER_PACKAGE_FIXTURE_DIR="${REASAMPLER_TESTS_DIR}/fixtures/package_compat")
# The pickers call the REAPER API, so no test target can exercise them; declared as a
# library so the TU stays compiled. reaper_plugin.h pulls SWELL in on non-Windows.
add_library(package_pickers STATIC package_pickers.cpp)