feat: extract complete multi-cabinet sets

This commit is contained in:
2026-07-22 19:40:45 +02:00
parent b492a529ae
commit 538318c697
15 changed files with 1911 additions and 59 deletions

View File

@@ -133,6 +133,40 @@ required `0xFF` byte after each CFDATA block in memory. These are CAB-level
codec fixtures, not OneNote exports, and do not establish producer-specific
`.onepkg` compatibility.
## libmspack five-part CAB fixture
`libmspack-multi-basic-pt1.cab.b64` through
`libmspack-multi-basic-pt5.cab.b64` are byte-for-byte copies of libmspack's
[`multi_basic_pt*.cab`](https://github.com/kyz/libmspack/tree/55d501976171397ccd5d5a7a1ca7da065b1d9a06/libmspack/test/test_files/cabd)
fixtures at commit
[`55d501976171397ccd5d5a7a1ca7da065b1d9a06`](https://github.com/kyz/libmspack/commit/55d501976171397ccd5d5a7a1ca7da065b1d9a06).
The immediate reviewed source is LGPL-2.1-only; its exact licence text is in
`LICENSES/libmspack-LGPL-2.1.txt`.
The CAB headers name the parts `cabd_multi_basic_pt1.cab` through
`cabd_multi_basic_pt5.cab`. They form set ID 12345, indexes 0 through 4, and
split one 190-byte uncompressed CFDATA block across all five cabinets. The
three spanning files contain the five ASCII lines
`This is the data from cabinet part N.` (plus line feeds), grouped as parts
12, part 3, and parts 45.
- Part 1: 221 bytes; SHA-256
`3658aaf68b0d538a5b321919f1de3eb1bcc258cba44e97b07a1938230995c632`.
- Part 2: 274 bytes; SHA-256
`ce5fac4470fb850ae593de70ab03d3493069b77f8f81376216768bbf74e52321`.
- Part 3: 274 bytes; SHA-256
`e58b57f63ac0858effa75ceb6f242b447fbce6a910d3840c37228fdbc9e7bc95`.
- Part 4: 274 bytes; SHA-256
`fbcd45e503c3cffd5f5946ccc45bbc46b9884fe47abef7d09247154c7f8148fb`.
- Part 5: 221 bytes; SHA-256
`16ebbb274c8dc09f98415795212683b9ea8b2d6450080a79ab63cd5cdbac7cc4`.
Tests retain all hashes and exercise unordered selection, strict link/set/order
validation, `0xFFFD`/`0xFFFE`/`0xFFFF` spanning-file reconciliation, split-block
reassembly, reserve/compression continuity, aggregate limits, and cancellation.
These are generic CAB fixtures, not OneNote exports, and do not establish
producer-specific `.onepkg` compatibility.
## Distribution policy
The decoded fixture bytes are used only by tests. Vite does not copy them into