From 823712d65cca82041e14f574301c564fe7db1bdd Mon Sep 17 00:00:00 2001 From: jedarden Date: Thu, 28 May 2026 02:19:44 -0400 Subject: [PATCH] fix(pdftract-1psmn): fix mmap test compilation errors - Add std::sync::Arc import for thread sharing - Fix lifetime issue in test_sync_multiple_threads using Arc - Add mut to source in test_empty_file for Read trait All FileSource tests pass (12/12). Co-Authored-By: Claude Opus 4.7 --- crates/pdftract-core/src/source/mmap.rs | 9 +++++---- notes/pdftract-1psmn.md | 7 ++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/pdftract-core/src/source/mmap.rs b/crates/pdftract-core/src/source/mmap.rs index c95cf84..64b7acd 100644 --- a/crates/pdftract-core/src/source/mmap.rs +++ b/crates/pdftract-core/src/source/mmap.rs @@ -177,6 +177,7 @@ mod tests { use super::*; use std::fs; use std::io::Write; + use std::sync::Arc; use std::thread; use tempfile::NamedTempFile; @@ -335,14 +336,14 @@ mod tests { let content = b"0123456789"; temp_file.write_all(content).unwrap(); - let source = MmapSource::open(temp_file.path()).unwrap(); + let source = Arc::new(MmapSource::open(temp_file.path()).unwrap()); // Spawn multiple threads reading concurrently let handles: Vec<_> = (0..4) .map(|i| { - let source_ref = &source; + let source_clone = Arc::clone(&source); thread::spawn(move || { - let bytes = source_ref.read_range(i as u64, 2).unwrap(); + let bytes = source_clone.read_range(i as u64, 2).unwrap(); bytes.to_vec() }) }) @@ -434,7 +435,7 @@ mod tests { #[test] fn test_empty_file() { let temp_file = NamedTempFile::new().unwrap(); - let source = MmapSource::open(temp_file.path()).unwrap(); + let mut source = MmapSource::open(temp_file.path()).unwrap(); assert_eq!(source.len(), 0); let mut buf = [0u8; 10]; diff --git a/notes/pdftract-1psmn.md b/notes/pdftract-1psmn.md index b2f9e6b..7f2aed1 100644 --- a/notes/pdftract-1psmn.md +++ b/notes/pdftract-1psmn.md @@ -25,7 +25,12 @@ Implemented FileSource as a PdfSource fallback for when memory-mapping is not av - `test_large_file`: Handles 100KB file - `test_read_mixed_with_seek`: Tests mixed read/seek operations -### 2. crates/pdftract-core/Cargo.toml +### 2. crates/pdftract-core/src/source/mmap.rs (test fixes) +- Added `std::sync::Arc` import for thread sharing +- Fixed lifetime issue in `test_sync_multiple_threads` by using Arc instead of `&source` +- Added `mut` to source in `test_empty_file` for Read trait compatibility + +### 3. crates/pdftract-core/Cargo.toml - Added `parking_lot = "0.12"` dependency ## Acceptance Criteria