Skip to content

ci: add LFS fixtures, denylist, and bulk test CI job#78

Merged
developer0hye merged 3 commits intomainfrom
ci/bulk-test-workflow
Mar 1, 2026
Merged

ci: add LFS fixtures, denylist, and bulk test CI job#78
developer0hye merged 3 commits intomainfrom
ci/bulk-test-workflow

Conversation

@developer0hye
Copy link
Owner

Summary

  • Store 2,695 third-party test fixtures (LibreOffice + Apache POI) in Git LFS for deterministic CI bulk tests — no more downloading from upstream repos at test time
  • Track scripts/download-third-party-fixtures.sh for refreshing fixtures from upstream
  • Add denylist (9 adversarial/OOM fixtures) to bulk_conversion.rs — XML bombs, clusterfuzz files, and OOM triggers are skipped during bulk testing
  • Add Swatinem/rust-cache@v2 to all 5 existing CI jobs for faster builds
  • Add new bulk-test CI job that runs bulk conversion tests against all LFS fixtures in release mode (continue-on-error: true, never blocks PRs)

Key changes

File Change
.gitattributes LFS tracking patterns for tests/fixtures/*/libreoffice/** and tests/fixtures/*/poi/**
scripts/download-third-party-fixtures.sh Now tracked in git (was untracked)
tests/fixtures/ 2,695 fixture files added via Git LFS
crates/office2pdf/tests/bulk_conversion.rs Denylist const, is_denylisted() helper, skipped field in summary, test_denylist_filtering unit test
.github/workflows/ci.yml Cargo caching on all jobs + new bulk-test job with lfs: true checkout

Test plan

  • cargo test -p office2pdf --test bulk_conversion test_denylist_filtering — denylist unit test passes
  • cargo test --workspace — all existing tests pass
  • CI bulk-test job runs, checks out LFS fixtures, executes bulk tests with denylisted files skipped

Related: #77

🤖 Generated with Claude Code

…cript

Store 2,695 LibreOffice/Apache POI test fixtures in Git LFS for
deterministic CI bulk tests. Track the download script that fetches
fresh fixtures from upstream repos.

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Skip 9 known-bad fixtures (clusterfuzz, XML bombs, OOM triggers)
during bulk conversion testing. Denylisted files are partitioned
out before conversion and reported as "skipped" in the summary.

Includes a non-ignored unit test for denylist filtering logic.

Related: #77

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Add Swatinem/rust-cache@v2 to all 5 existing CI jobs for faster
builds. Add a new bulk-test job that checks out LFS fixtures and
runs bulk conversion tests in release mode.

The bulk-test job uses continue-on-error so it never blocks PRs.

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
@developer0hye developer0hye merged commit a6efe31 into main Mar 1, 2026
13 of 14 checks passed
@developer0hye developer0hye deleted the ci/bulk-test-workflow branch March 1, 2026 02:15
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