Freeze the package compatibility corpus: real .rsbank bytes proving both ladder directions, every truncation site, and the round trip
This commit is contained in:
@@ -93,6 +93,10 @@ both have landed.
|
||||
file size in; header/manifest/layout out), and `requiredPrefixSize` (the
|
||||
incremental-read seam for the shell). Framing rides `core/wire/bytes.h`.
|
||||
|
||||
`package_compat_tests` is declared here with no library of its own: it decodes the
|
||||
frozen `.rsbank` corpus at `tests/fixtures/package_compat/`, whose README owns the
|
||||
append-only rule and the per-fixture inventory.
|
||||
|
||||
## Gotchas
|
||||
|
||||
- Enums nested inside the `BankModel` blob follow `bank_model`'s own rule — an
|
||||
|
||||
@@ -18,6 +18,12 @@ reasampler_pure_library(bank_package
|
||||
# app_version: the tests pin the stamped writer semver against stampVersion().
|
||||
reasampler_test(bank_package LINK bank_package app_version)
|
||||
|
||||
# The frozen compatibility corpus, decoded rather than regenerated. Fixture path: see
|
||||
# tests/package_fixtures.h.
|
||||
reasampler_test(package_compat LINK bank_package)
|
||||
target_compile_definitions(package_compat_tests PRIVATE
|
||||
REASAMPLER_PACKAGE_FIXTURE_DIR="${REASAMPLER_TESTS_DIR}/fixtures/package_compat")
|
||||
|
||||
reasampler_pure_library(import_plan
|
||||
SOURCES import_plan.cpp
|
||||
LINK PUBLIC package_manifest bank_book origin_ledger PRIVATE package_format capture_paths)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user