docs(bf-fyfbf): document truncated-flate test file findings

The file test_truncated_flate_recovery.rs does not exist.
Documented related test files and fixture patterns.
Identified that test_truncated_mid_stream() in error_recovery_integration.rs
is the closest existing test for truncated stream handling.

Acceptance criteria:
- Test file located: NOT FOUND (file does not exist)
- Related test structures: DOCUMENTED
- Existing test functions: LISTED
This commit is contained in:
jedarden 2026-07-05 19:27:28 -04:00
parent d4df24745e
commit 1379bc62e2

68
notes/bf-fyfbf.md Normal file
View file

@ -0,0 +1,68 @@
# Bead bf-fyfbf: Locate and read truncated-flate test file
## Summary
The test file `crates/pdftract-core/tests/test_truncated_flate_recovery.rs` **does not exist**.
## What was found
### Related test files that DO exist:
1. **`crates/pdftract-core/tests/error_recovery_integration.rs`**
- Contains `test_truncated_mid_stream()` function (line 165)
- Tests truncated streams with expected `STREAM_DECODE_ERROR` diagnostics
- Uses `tests/error_recovery/fixtures/truncated_mid_stream.pdf`
2. **`crates/pdftract-core/tests/stream_decoder_fixtures.rs`**
- Contains `flate_truncated` fixture test (line 61-65)
- Tests flate decoder with truncated input
- Uses `tests/stream_decoder/fixtures/flate_truncated.bin`
### Fixture files that exist:
1. **`tests/fixtures/malformed/truncated-flate.pdf`** (588 bytes)
- This appears to be the PDF fixture that `test_truncated_flate_recovery.rs` would test
- Not currently referenced by any existing test
2. **`tests/stream_decoder/fixtures/flate_truncated.bin`**
- Binary fixture for stream decoder testing
- Has `.meta` file: "FlateDecode: mid-stream EOF; expects partial bytes + STREAM_DECODE_ERROR"
- Has `.expected` file (1 line, minimal output)
## Basic test structure understanding
From examining `error_recovery_integration.rs` and `stream_decoder_fixtures.rs`:
1. **Error recovery test pattern:**
- Load fixture with `fs::read()`
- Run extraction under `catch_unwind` for panic safety
- Verify PDF starts with `%PDF-`
- Check for expected diagnostics
2. **Stream decoder test pattern:**
- Define fixture metadata (filter name, expected diagnostics, bomb limits)
- Load binary fixture
- Decode through appropriate decoder
- Compare against `.expected` file
## Existing test functions documented
### error_recovery_integration.rs:
- `test_xref_30pct_bad_offsets()`
- `test_missing_mediabox_all_pages()`
- `test_missing_endobj()`
- `test_truncated_mid_stream()` - most relevant
- `test_int_overflow_bbox()`
- `test_nested_failure()`
- `test_combined_failures()`
- `test_inv_8_no_panics_across_all_fixtures()`
### stream_decoder_fixtures.rs:
- `test_all_stream_decoder_fixtures()` - includes flate_truncated
- `test_each_filter_exercised()`
## Conclusion
The file `test_truncated_flate_recovery.rs` does not exist and needs to be created. The parent bead `bf-4g6dj` assumes this file exists, but it appears this is a new test file that should be created to test the specific `truncated-flate.pdf` fixture.
The test file should likely follow the pattern from `error_recovery_integration.rs` but specifically for testing the `truncated-flate.pdf` fixture and validating its extraction results and error diagnostics.