diff --git a/crates/lore-core/src/adapters/claude_code.rs b/crates/lore-core/src/adapters/claude_code.rs index 170c262..7c9af8b 100644 --- a/crates/lore-core/src/adapters/claude_code.rs +++ b/crates/lore-core/src/adapters/claude_code.rs @@ -918,7 +918,10 @@ mod tests { assert_eq!(session.status, crate::model::ParseStatus::Ok); assert_eq!(session.tool_calls.len(), 3); assert_eq!(session.file_events.len(), 1); - assert_eq!(session.file_events[0].tool_native_call_id.as_deref(), Some("c_empty")); + assert_eq!( + session.file_events[0].tool_native_call_id.as_deref(), + Some("c_empty") + ); assert_eq!(session.file_events[0].path, ""); } @@ -953,7 +956,10 @@ mod tests { ); let session = ClaudeCodeAdapter::new().parse_str(jsonl, "null-id-tools"); assert_eq!(session.status, crate::model::ParseStatus::Partial); - assert!(session.notes.iter().any(|n| n.message == "tool_use without id")); + assert!(session + .notes + .iter() + .any(|n| n.message == "tool_use without id")); } #[test] diff --git a/crates/lore-core/src/adapters/codex.rs b/crates/lore-core/src/adapters/codex.rs index be75478..c0b3285 100644 --- a/crates/lore-core/src/adapters/codex.rs +++ b/crates/lore-core/src/adapters/codex.rs @@ -1183,7 +1183,11 @@ mod tests { ); let s = CodexAdapter::new().parse_str(content, "unknown-item"); assert_eq!(s.status, crate::model::ParseStatus::Partial); - assert_eq!(s.messages.len(), 1, "known message before unknown item is preserved"); + assert_eq!( + s.messages.len(), + 1, + "known message before unknown item is preserved" + ); } #[test] @@ -1196,11 +1200,19 @@ mod tests { assert_eq!(s.status, crate::model::ParseStatus::Ok); assert_eq!(s.file_events.len(), 2); - let empty_event = s.file_events.iter().find(|e| e.path == "src/empty.txt").unwrap(); + let empty_event = s + .file_events + .iter() + .find(|e| e.path == "src/empty.txt") + .unwrap(); assert_eq!(empty_event.change_kind, FileChangeKind::Create); assert_eq!(empty_event.patch_text.as_deref(), Some("")); - let null_event = s.file_events.iter().find(|e| e.path == "src/null.txt").unwrap(); + let null_event = s + .file_events + .iter() + .find(|e| e.path == "src/null.txt") + .unwrap(); assert_eq!(null_event.change_kind, FileChangeKind::Create); assert_eq!(null_event.patch_text, None); } @@ -1218,7 +1230,10 @@ mod tests { assert_eq!(s.messages[0].role, Role::System); assert_eq!(s.messages[0].parts.len(), 1); - assert_eq!(s.messages[0].parts[0].text.as_deref(), Some("system prompt")); + assert_eq!( + s.messages[0].parts[0].text.as_deref(), + Some("system prompt") + ); assert_eq!(s.messages[1].role, Role::User); assert_eq!(s.messages[1].parts.len(), 2); @@ -1227,7 +1242,10 @@ mod tests { assert_eq!(s.messages[2].role, Role::User); assert_eq!(s.messages[2].parts.len(), 1); - assert_eq!(s.messages[2].parts[0].text.as_deref(), Some("fallback to user")); + assert_eq!( + s.messages[2].parts[0].text.as_deref(), + Some("fallback to user") + ); } #[test] @@ -1245,17 +1263,13 @@ mod tests { #[test] fn title_derivation_from_multipart_user_prompt_and_synthetic_flag() { - let content = concat!( - "{\"type\":\"response_item\",\"timestamp\":\"2026-08-11T10:00:00.000Z\",\"payload\":{\"type\":\"message\",\"role\":\"user\",\"content\":[{\"text\":\"Refactor session store\"}]}}\n" - ); + let content = "{\"type\":\"response_item\",\"timestamp\":\"2026-08-11T10:00:00.000Z\",\"payload\":{\"type\":\"message\",\"role\":\"user\",\"content\":[{\"text\":\"Refactor session store\"}]}}\n"; let s = CodexAdapter::new().parse_str(content, "multipart-title"); assert_eq!(s.status, crate::model::ParseStatus::Ok); assert_eq!(s.title.as_deref(), Some("Refactor session store")); assert!(s.title_is_synthetic); - let system_only = concat!( - "{\"type\":\"response_item\",\"timestamp\":\"2026-08-11T10:00:00.000Z\",\"payload\":{\"type\":\"message\",\"role\":\"system\",\"content\":\"system prompt\"}}\n" - ); + let system_only = "{\"type\":\"response_item\",\"timestamp\":\"2026-08-11T10:00:00.000Z\",\"payload\":{\"type\":\"message\",\"role\":\"system\",\"content\":\"system prompt\"}}\n"; let s2 = CodexAdapter::new().parse_str(system_only, "system-only"); assert_eq!(s2.title, None); assert!(!s2.title_is_synthetic); @@ -1302,7 +1316,10 @@ mod tests { assert_eq!(s.messages.len(), 1); assert_eq!(s.messages[0].parts.len(), 2); assert_eq!(s.messages[0].parts[0].kind, PartKind::Thinking); - assert_eq!(s.messages[0].parts[0].text.as_deref(), Some("Planning steps")); + assert_eq!( + s.messages[0].parts[0].text.as_deref(), + Some("Planning steps") + ); assert_eq!(s.messages[0].parts[1].kind, PartKind::Opaque); } @@ -1335,6 +1352,9 @@ mod tests { let content = "{\"type\":\"response_item\",\"timestamp\":\"2026-08-11T10:00:00.000Z\",\"payload\":{\"type\":\"\"}}\n"; let s = CodexAdapter::new().parse_str(content, "empty-type"); assert_eq!(s.status, crate::model::ParseStatus::Partial); - assert!(s.notes.iter().any(|n| n.message.contains("unknown response_item"))); + assert!(s + .notes + .iter() + .any(|n| n.message.contains("unknown response_item"))); } } diff --git a/crates/lore-core/src/adapters/common.rs b/crates/lore-core/src/adapters/common.rs index 10e4200..9209973 100644 --- a/crates/lore-core/src/adapters/common.rs +++ b/crates/lore-core/src/adapters/common.rs @@ -249,7 +249,8 @@ mod tests { assert_eq!(unified_diff_line_counts(context_only), Some((0, 0))); // Git headers only diff (0 additions, 0 deletions) - let headers_only = "diff --git a/f.rs b/f.rs\nindex 0000000..1234567\n--- a/f.rs\n+++ b/f.rs\n"; + let headers_only = + "diff --git a/f.rs b/f.rs\nindex 0000000..1234567\n--- a/f.rs\n+++ b/f.rs\n"; assert_eq!(unified_diff_line_counts(headers_only), Some((0, 0))); // Hunk headers only (0 additions, 0 deletions) @@ -270,7 +271,10 @@ mod tests { Some("Fix repository discovery".to_string()) ); assert_eq!(title_from_text("\n"), None); - assert_eq!(title_from_text("\nOS: Mac\nCwd: /repo\n"), None); + assert_eq!( + title_from_text("\nOS: Mac\nCwd: /repo\n"), + None + ); assert_eq!(title_from_text("\nName: rust-dev\n"), None); assert_eq!( title_from_text("repository info\nRefactor SQLite queries"), @@ -441,11 +445,17 @@ mod tests { "Users/test/file.txt" ); assert_eq!(sanitize_path("./src/./main.rs"), "src/main.rs"); - assert_eq!(sanitize_path("/absolute/path/file.rs"), "absolute/path/file.rs"); + assert_eq!( + sanitize_path("/absolute/path/file.rs"), + "absolute/path/file.rs" + ); assert_eq!(sanitize_path("a/b/c/../../d.rs"), "a/d.rs"); assert_eq!(sanitize_path("src/app/"), "src/app"); assert_eq!(sanitize_path(r"src\app\"), "src/app"); - assert_eq!(sanitize_path(r"\\server\share\file.rs"), "server/share/file.rs"); + assert_eq!( + sanitize_path(r"\\server\share\file.rs"), + "server/share/file.rs" + ); assert_eq!(sanitize_path(".../src/lib.rs"), ".../src/lib.rs"); assert_eq!(sanitize_path("..../src/lib.rs"), "..../src/lib.rs"); assert_eq!(sanitize_path("a///b///c.rs"), "a/b/c.rs"); diff --git a/crates/lore-core/tests/enrich.rs b/crates/lore-core/tests/enrich.rs index 1dfd093..7453fd3 100644 --- a/crates/lore-core/tests/enrich.rs +++ b/crates/lore-core/tests/enrich.rs @@ -442,7 +442,9 @@ fn multi_segment_session_in_same_repo_resolves_to_single_repository() { // Both segments must link to the EXACT same repository row. let repo_ids: Vec = conn - .prepare("SELECT repository_id FROM session_segment WHERE session_id = ?1 ORDER BY seq_start") + .prepare( + "SELECT repository_id FROM session_segment WHERE session_id = ?1 ORDER BY seq_start", + ) .unwrap() .query_map([&sid], |r| r.get(0)) .unwrap() diff --git a/crates/lore-core/tests/git_capture.rs b/crates/lore-core/tests/git_capture.rs index 6feebbb..3d60d64 100644 --- a/crates/lore-core/tests/git_capture.rs +++ b/crates/lore-core/tests/git_capture.rs @@ -225,7 +225,12 @@ fn capture_handles_multiple_remotes_and_commits() { // Add multiple remotes with credentials git( dir.path(), - &["remote", "add", "upstream", "https://token@gitlab.com/group/proj.git"], + &[ + "remote", + "add", + "upstream", + "https://token@gitlab.com/group/proj.git", + ], ); git( dir.path(), diff --git a/crates/lore-core/tests/ingest_file.rs b/crates/lore-core/tests/ingest_file.rs index 7baebc9..1046b84 100644 --- a/crates/lore-core/tests/ingest_file.rs +++ b/crates/lore-core/tests/ingest_file.rs @@ -337,18 +337,32 @@ fn identical_reingest_of_multi_segment_session_is_a_noop() { fs::write(&path, content).unwrap(); let outcome1 = ingest(&conn, &path); - assert!(matches!(outcome1, IngestOutcome::Ingested { change: ChangeClass::New, .. })); - - let segments1: i64 = conn.query_row("SELECT count(*) FROM session_segment", [], |r| r.get(0)).unwrap(); - let messages1: i64 = conn.query_row("SELECT count(*) FROM message", [], |r| r.get(0)).unwrap(); + assert!(matches!( + outcome1, + IngestOutcome::Ingested { + change: ChangeClass::New, + .. + } + )); + + let segments1: i64 = conn + .query_row("SELECT count(*) FROM session_segment", [], |r| r.get(0)) + .unwrap(); + let messages1: i64 = conn + .query_row("SELECT count(*) FROM message", [], |r| r.get(0)) + .unwrap(); assert_eq!(segments1, 2); assert_eq!(messages1, 2); let outcome2 = ingest(&conn, &path); - assert!(matches!(outcome2, IngestOutcome::Skipped { .. })); + assert!(matches!(outcome2, IngestOutcome::Skipped)); - let segments2: i64 = conn.query_row("SELECT count(*) FROM session_segment", [], |r| r.get(0)).unwrap(); - let messages2: i64 = conn.query_row("SELECT count(*) FROM message", [], |r| r.get(0)).unwrap(); + let segments2: i64 = conn + .query_row("SELECT count(*) FROM session_segment", [], |r| r.get(0)) + .unwrap(); + let messages2: i64 = conn + .query_row("SELECT count(*) FROM message", [], |r| r.get(0)) + .unwrap(); assert_eq!(segments1, segments2); assert_eq!(messages1, messages2); } diff --git a/crates/lore-core/tests/recovery.rs b/crates/lore-core/tests/recovery.rs index 4dbe736..b8769fc 100644 --- a/crates/lore-core/tests/recovery.rs +++ b/crates/lore-core/tests/recovery.rs @@ -250,9 +250,18 @@ fn recover_archive_quarantines_all_sidecar_files_including_wal_shm_journal() { let q_dir = quarantine_path.parent().unwrap(); assert_eq!(std::fs::read(&quarantine_path).unwrap(), b"corrupted db"); - assert_eq!(std::fs::read(q_dir.join(format!("{q_stem}-wal"))).unwrap(), b"wal data"); - assert_eq!(std::fs::read(q_dir.join(format!("{q_stem}-shm"))).unwrap(), b"shm data"); - assert_eq!(std::fs::read(q_dir.join(format!("{q_stem}-journal"))).unwrap(), b"journal data"); + assert_eq!( + std::fs::read(q_dir.join(format!("{q_stem}-wal"))).unwrap(), + b"wal data" + ); + assert_eq!( + std::fs::read(q_dir.join(format!("{q_stem}-shm"))).unwrap(), + b"shm data" + ); + assert_eq!( + std::fs::read(q_dir.join(format!("{q_stem}-journal"))).unwrap(), + b"journal data" + ); // All original files in archive_dir must be cleanly moved assert!(!db.exists());