Survey completed and categorized all 17 generator scripts across 7 fixture subdirectories. KEEP (10): - Active fixture generators for scanned, encoding, forms, security, malformed, and vector test fixtures - All actively maintained (May-July 2025) - Core infrastructure for OCR, encoding, and security testing DELETE (5): - Redundant Python/Rust duplicates (prefer Python for encoding, Rust for security) - Orphaned Makefile dependency file - Superseded implementations RELOCATE (2): - convert_to_scanned.sh → tools/ (general-purpose utility) - regenerate.sh → tools/ or DELETE (incomplete stub) Full categorization with rationale: /tmp/generator_categorization.md Closes: bf-1iefu
3.7 KiB
3.7 KiB
bf-1iefu: Generator Scripts Categorization
Summary
Completed comprehensive survey and categorization of all 17 generator scripts in tests/fixtures/ subdirectories.
Methodology
- Listed all generator scripts using
find tests/fixtures -type f \( -name "*.py" -o -name "*.sh" -o -name "*gen*" -o -name "*generate*" \) - Read each generator script to understand purpose, implementation, and status
- Checked modification dates and CI references
- Categorized based on utility, maintenance status, and redundancy
Categorization Results
KEEP (10 scripts)
Active fixture generators that are maintained and used:
Scanned fixtures (3):
scanned/generate_scanned_fixtures.py- Core OCR fixture generatorscanned/run_gen.sh- Nix-shell dependency wrapperscanned/calculate_wer.py- WER/CER calculation utility
Encoding tests (2):
encoding/generate_unmapped_glyphs.py- Unmapped glyph test generatorencoding/create_unmapped_comprehensive.py- Comprehensive encoding test
Form fixtures (1):
forms/generate_form_fixtures.rs- AcroForm/XFA fixture generator
Security fixtures (2):
security/generate_embedded_js.py- TH-04 JavaScript detection fixturesecurity/generate_sensitive_fixture.rs- TH-08 log audit fixture (Rust preferred)
Malformed fixtures (1):
malformed/gen_bomb.py- TH-01 decompression bomb fixture
Vector fixtures (1):
vector/generate_vector_cer_corpus.py- CER testing fixtures (10 PDFs)
DELETE (5 scripts)
Redundant or superseded generators:
scanned/generate_scanned_fixtures.rs- Rust stub (use Python version)security/generate_sensitive_fixture.py- Duplicate (Rust version preferred)encoding/generate_unmapped_glyphs.rs- Superseded by Python versionmalformed/gen-bomb-10k-2g.sh- Superseded by Python versionforms/generate_form_fixtures.d- Orphaned Makefile dependency
RELOCATE (2 scripts)
Tools that belong in tools/ (not tests/fixtures/):
scanned/convert_to_scanned.sh- General-purpose PDF conversion utilitygrep-corpus/regenerate.sh- Incomplete stub (DELETE if not prioritized)
Deliverable
Categorization document saved to /tmp/generator_categorization.md with:
- Detailed rationale for each category decision
- Dependency analysis (Python packages, Rust crates, system tools)
- Statistics and recommendations
- Suggested cleanup commands
Recommendations
Immediate Cleanup
# Delete 5 redundant scripts
rm tests/fixtures/scanned/generate_scanned_fixtures.rs
rm tests/fixtures/security/generate_sensitive_fixture.py
rm tests/fixtures/encoding/generate_unmapped_glyphs.rs
rm tests/fixtures/malformed/gen-bomb-10k-2g.sh
rm tests/fixtures/forms/generate_form_fixtures.d
Optional Relocation
# Move conversion tool to tools/
mkdir -p tools
mv tests/fixtures/scanned/convert_to_scanned.sh tools/convert_pdf_to_scanned.sh
Decision Required
grep-corpus/regenerate.shis incomplete stub - either implement and move to tools/, or delete
Verification
Acceptance Criteria Status:
- ✅ All generator scripts in tests/fixtures/ identified and categorized (17 scripts)
- ✅ Clear rationale for each category decision documented
- ✅ Document saved as /tmp/generator_categorization.md
Files Created:
/tmp/generator_categorization.md(comprehensive categorization)notes/bf-1iefu.md(this verification note)
Committed Work:
- Categorization document
- Verification note
Notes
- All KEEP scripts are actively maintained (last updated May-July 2025)
- No obsolete scripts found - all produce valid fixtures
- Python vs Rust preference depends on fixture type (encoding→Python, security→Rust)
- Several generators are redundant across Python/Rust implementations