diff --git a/crates/shepherd-host-linux/src/adapter.rs b/crates/shepherd-host-linux/src/adapter.rs index 46511ef..a70aa23 100644 --- a/crates/shepherd-host-linux/src/adapter.rs +++ b/crates/shepherd-host-linux/src/adapter.rs @@ -21,10 +21,10 @@ fn expand_tilde(path: &str) -> String { if let Some(home) = dirs::home_dir() { return path.replacen("~", &home.to_string_lossy(), 1); } - } else if path == "~" { - if let Some(home) = dirs::home_dir() { - return home.to_string_lossy().into_owned(); - } + } else if path == "~" + && let Some(home) = dirs::home_dir() + { + return home.to_string_lossy().into_owned(); } path.to_string() } diff --git a/crates/shepherd-util/src/time.rs b/crates/shepherd-util/src/time.rs index 133af4f..4e535e3 100644 --- a/crates/shepherd-util/src/time.rs +++ b/crates/shepherd-util/src/time.rs @@ -397,13 +397,13 @@ mod tests { #[test] fn test_format_clock_time() { let dt = Local.with_ymd_and_hms(2025, 12, 25, 14, 30, 45).unwrap(); - assert_eq!(format_clock_time(&dt), "02:30 PM"); + assert_eq!(format_clock_time(&dt), " 2:30 PM"); } #[test] fn test_format_datetime_full() { let dt = Local.with_ymd_and_hms(2025, 12, 25, 14, 30, 45).unwrap(); - assert_eq!(format_datetime_full(&dt), "2025-12-25 14:30:45"); + assert_eq!(format_datetime_full(&dt), "2025-12-25 2:30:45 PM"); } #[test] diff --git a/crates/shepherdd/tests/integration.rs b/crates/shepherdd/tests/integration.rs index a79fb22..19658b3 100644 --- a/crates/shepherdd/tests/integration.rs +++ b/crates/shepherdd/tests/integration.rs @@ -141,23 +141,25 @@ fn test_warning_emission() { engine.start_session(plan, now, now_mono); // No warnings at start - let events = engine.tick(now_mono); + let events = engine.tick(now_mono, now); assert!(events.is_empty()); // At 6 seconds (4 seconds remaining), 5-second warning should fire - let at_6s = now_mono + Duration::from_secs(6); - let events = engine.tick(at_6s); + let at_6s_mono = now_mono + Duration::from_secs(6); + let at_6s = now + chrono::Duration::seconds(6); + let events = engine.tick(at_6s_mono, at_6s); assert_eq!(events.len(), 1); assert!(matches!(&events[0], CoreEvent::Warning { threshold_seconds: 5, .. })); // At 9 seconds (1 second remaining), 2-second warning should fire - let at_9s = now_mono + Duration::from_secs(9); - let events = engine.tick(at_9s); + let at_9s_mono = now_mono + Duration::from_secs(9); + let at_9s = now + chrono::Duration::seconds(9); + let events = engine.tick(at_9s_mono, at_9s); assert_eq!(events.len(), 1); assert!(matches!(&events[0], CoreEvent::Warning { threshold_seconds: 2, .. })); // Warnings shouldn't repeat - let events = engine.tick(at_9s); + let events = engine.tick(at_9s_mono, at_9s); assert!(events.is_empty()); } @@ -180,8 +182,9 @@ fn test_session_expiry() { engine.start_session(plan, now, now_mono); // At 11 seconds, session should be expired - let at_11s = now_mono + Duration::from_secs(11); - let events = engine.tick(at_11s); + let at_11s_mono = now_mono + Duration::from_secs(11); + let at_11s = now + chrono::Duration::seconds(11); + let events = engine.tick(at_11s_mono, at_11s); // Should have both remaining warnings + expiry let has_expiry = events.iter().any(|e| matches!(e, CoreEvent::ExpireDue { .. }));