Skip to content

test: run portable core checks without corpus data - #1028

Merged
andiwand merged 1 commit into
mainfrom
review/10-portable-smoke-tests
Oct 4, 2026
Merged

andiwand merged 1 commit into
mainfrom
review/10-portable-smoke-tests

Conversation

@andiwand

@andiwand andiwand commented Oct 4, 2026 •

Copy link
Copy Markdown
Member

🤖 Generated with Claude Code

Linux and Windows CI compiled the C++ tests but never ran them. Even selecting an in-memory test without fetched data aborted during corpus registration, before GoogleTest applied its filter.

Treat missing optional corpus data as an empty fixture list, and run 73 existing stream, crypto, path, coordinate and image tests on Linux/Windows. macOS retains its corpus job, avoiding another overlapping run there. Run the release-helper tests once in the Linux binding job as well.

This adds platform coverage without a second test implementation, a new framework or multi-gigabyte data downloads.

Validation: all 73 selected CTest cases passed with the fixture directory physically absent, then restored. All workflows pass actionlint/ShellCheck. Native C++ build passed; the new Linux/Windows execution is for CI to verify.

Repository-wide review summary

The pass combined static analysis of all 217 core translation units with manual review of shared I/O, container/crypto boundaries, format adapters and selected parsing/editing paths, image/font rendering, binding ownership, frontend integration, and build/release tooling. It is a risk-focused pass across the repository, not a claim that every path is proven correct.

Merge order:

PR Change Why it is worth doing
#1019 Shared stream bounds and failures Correct shared failure handling benefits every decoder. Already merged.
#1020 ZIP lifetime and integrity Releases extraction/writer state and makes CRC/size failures visible. Already merged.
#1021 Exact GCM plaintext length Removes returned bytes that are not plaintext. Already merged.
#1022 Path normalization and ancestry Fixes shared archive/filesystem relationships. Already merged.
#1023 CFB stream position Fixes relative seeks and offset arithmetic for legacy/encrypted Office files. Already merged.
#1024 Image arithmetic Prevents mask indexing overflow and validates allocations before narrowing. Already merged.
#1025 Shared text-setter default Removes eight identical refusal implementations. Already merged.
#1026 JNI lifetimes Rejects dependent handles after owner closure and keeps edit arguments reachable. Already merged.
#1027 Release arguments Preserves literal paths/versions through shell boundaries. Already merged.
#1028 Portable smoke tests Reuses 73 tests on platforms that previously only compiled them.

Keep the shared registry/element-adapter model, generic renderer and shared formula/number-format engines. The useful extra sharing here is narrow: one unsupported-edit default and one image-buffer size check. A general XML adapter or parser merger would couple different format semantics; splitting large modules without a demonstrated boundary or build-time benefit would mostly move code. Those rewrites are not justified by this pass.

Test strategy: add regressions at the lowest shared layer, retain format tests that verify different integration contracts, and reuse existing cases in CI. Do not consolidate independent expected-value oracles just because their fixtures look alike. Broader follow-up candidates include disk-walker copy semantics and the maximum-coordinate contract; both need a clear API decision before a structural change.

Validation across the stack: 1,951 distinct C++ cases, 98 Python cases, 78 Java cases, and 715 checks across 20 browser pages passed. All 50 PDF corpus cases passed with 1,209 output files unchanged. The 73-case smoke selection also passed without fixture data. Release checks passed two unit tests and five executions of the actual workflow shell blocks; all workflows passed actionlint/ShellCheck. Changed C++ lines passed clang-tidy. Rebased shared-path/stream/formula cases passed again.

Local execution was on macOS. Windows/Linux CI, Android/WASM execution, Apple slices and real Safari behavior remain platform validation limits; CI is still running. No release was dispatched.

@andiwand
andiwand force-pushed the review/09-release-arguments branch from 78adb9f to 62e39ad Compare October 4, 2026 20:21
Base automatically changed from review/09-release-arguments to main October 4, 2026 20:26
@andiwand
andiwand force-pushed the review/10-portable-smoke-tests branch from bebc4c0 to 0292300 Compare October 4, 2026 20:30
@andiwand
andiwand merged commit c615a69 into main Oct 4, 2026
19 checks passed
@andiwand
andiwand deleted the review/10-portable-smoke-tests branch October 4, 2026 20:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant