- Create benches/results/.gitkeep and README.md - Create benches/competitors/run_all.py Python orchestration script - Script runs competitor benchmarks (pdftract, pdfminer.six, pypdf, pdfplumber) - Emits benches/results/<commit-sha>.json with throughput metrics - Add tier4-competitor-runner to pdftract-ci Argo WorkflowTemplate - Runs only on main branch to track performance over time - Acceptance criteria: ratio_pdfminer ≥ 10.0, ratio_pypdf ≥ 5.0 Closes bf-2f5ew Files created: - benches/results/.gitkeep - benches/results/README.md - benches/competitors/run_all.py - notes/bf-2f5ew.md Files modified: - .ci/argo-workflows/pdftract-ci.yaml
75 lines
3.5 KiB
Markdown
75 lines
3.5 KiB
Markdown
# Bead Verification: bf-56jda
|
|
|
|
## Task
|
|
Create test file structure for encryption error tests
|
|
|
|
## Completed Work
|
|
|
|
### 1. Created comprehensive test file
|
|
- **File**: `/home/coding/pdftract/crates/pdftract-cli/tests/test_encryption_errors.rs`
|
|
- **Size**: ~400 lines of well-structured test code
|
|
|
|
### 2. Test Structure Organization
|
|
The test file is organized into 5 main modules:
|
|
|
|
1. **`unsupported_handlers`** - Tests for unsupported encryption handlers (e.g., Adobe.APS)
|
|
2. **`supported_encryption`** - Tests for PDFs with supported encryption (RC4, AES-128, AES-256) when correct passwords are provided
|
|
3. **`password_errors`** - Tests for wrong/missing password scenarios
|
|
4. **`fixture_validation`** - Validates the encrypted test fixtures exist and are valid PDFs
|
|
5. **`integration_tests`** - Placeholder for future integration tests
|
|
|
|
### 3. Helper Functions
|
|
Created reusable helper functions:
|
|
- `workspace_root()` - Gets workspace root directory
|
|
- `encrypted_fixture_dir()` - Gets encrypted fixtures directory path
|
|
- `encrypted_fixture(name)` - Gets path to specific encrypted fixture
|
|
- `pdftract_bin()` - Gets path to pdftract CLI binary
|
|
|
|
### 4. Test Coverage
|
|
The test file covers:
|
|
- Livecycle PDF (unsupported Adobe.APS handler) → ENCRYPTION_UNSUPPORTED error
|
|
- RC4-encrypted PDF (EC-04-rc4-encrypted.pdf) → Password-based decryption
|
|
- AES-128-encrypted PDF (EC-05-aes128-encrypted.pdf) → Password-based decryption
|
|
- AES-256-encrypted PDF (EC-06-aes256-encrypted.pdf) → Password-based decryption
|
|
- Empty-password PDF (EC-empty-password.pdf) → Auto-open detection
|
|
|
|
### 5. Test Compilation Verification
|
|
```bash
|
|
cargo test --test test_encryption_errors
|
|
```
|
|
Result: ✅ **PASS** - 3 passed; 0 failed; 10 ignored; 0 measured
|
|
|
|
The fixture validation tests pass immediately. The other tests are marked with `#[ignore]` and appropriate reasons, waiting for implementation of:
|
|
- ENCRYPTION_UNSUPPORTED exit code (3) implementation
|
|
- Password-based decryption implementation
|
|
- Empty password handling implementation
|
|
|
|
## References
|
|
- Parent bead: bf-19bx2
|
|
- Plan line 258, Failure Mode Taxonomy: ENCRYPTION_UNSUPPORTED
|
|
- Plan line 732: Encryption-unsupported diagnostic and CLI exit code 3
|
|
- Plan line 1132: RC4 and AES-128/256 decryption implementation
|
|
- Plan line 1149: Encrypted file with unknown handler error handling
|
|
|
|
## Acceptance Criteria Status
|
|
- ✅ Test file exists in appropriate location (`crates/pdftract-cli/tests/test_encryption_errors.rs`)
|
|
- ✅ Module compiles with `cargo test` (verified with actual test run)
|
|
- ✅ Basic test structure is in place (5 modules with clear documentation)
|
|
|
|
## Git Commit
|
|
```bash
|
|
git add crates/pdftract-cli/tests/test_encryption_errors.rs notes/bf-56jda.md
|
|
git commit -m "test(bf-56jda): create encryption error test structure
|
|
|
|
- Added comprehensive test file for encryption error cases
|
|
- Organized tests into 5 modules: unsupported_handlers, supported_encryption, password_errors, fixture_validation, integration_tests
|
|
- Created helper functions for workspace paths and fixture management
|
|
- Added fixture validation tests that pass immediately
|
|
- Marked implementation-dependent tests with #[ignore] and clear reasons
|
|
- References plan lines 258, 732, 1132, 1149 for ENCRYPTION_UNSUPPORTED handling
|
|
|
|
Closes bf-56jda"
|
|
```
|
|
|
|
## Notes
|
|
The test structure is ready to be used as the implementation progresses. Each test has clear documentation about what it expects and what needs to be implemented. The fixture validation tests provide immediate value by ensuring the test fixtures are present and valid PDFs.
|