mirror of
https://github.com/PR0M3TH3AN/Marlin.git
synced 2025-09-08 23:28:44 +00:00
Refactor watcher mutex handling and add tests
This commit is contained in:
@@ -56,8 +56,8 @@ pub fn run(cmd: &WatchCmd, _conn: &mut Connection, _format: super::Format) -> Re
|
||||
info!("Starting watcher for directory: {}", canon_path.display());
|
||||
|
||||
let mut watcher = marlin.watch(&canon_path, Some(config))?;
|
||||
|
||||
let status = watcher.status();
|
||||
|
||||
let status = watcher.status()?;
|
||||
info!("Watcher started. Press Ctrl+C to stop watching.");
|
||||
info!("Watching {} paths", status.watched_paths.len());
|
||||
|
||||
@@ -73,7 +73,7 @@ pub fn run(cmd: &WatchCmd, _conn: &mut Connection, _format: super::Format) -> Re
|
||||
|
||||
info!("Watcher run loop started. Waiting for Ctrl+C or stop signal...");
|
||||
while running.load(Ordering::SeqCst) {
|
||||
let current_status = watcher.status();
|
||||
let current_status = watcher.status()?;
|
||||
if current_status.state == WatcherState::Stopped {
|
||||
info!("Watcher has stopped (detected by state). Exiting loop.");
|
||||
break;
|
||||
@@ -98,7 +98,7 @@ pub fn run(cmd: &WatchCmd, _conn: &mut Connection, _format: super::Format) -> Re
|
||||
watcher.stop()?;
|
||||
{
|
||||
let mut guard = LAST_WATCHER_STATE.lock().unwrap();
|
||||
*guard = Some(watcher.status().state);
|
||||
*guard = Some(watcher.status()?.state);
|
||||
}
|
||||
info!("Watcher instance fully stopped.");
|
||||
Ok(())
|
||||
|
@@ -129,7 +129,7 @@ fn test_basic_watch_functionality() {
|
||||
let finished_watcher = watcher_thread.join().expect("Watcher thread panicked");
|
||||
|
||||
// Check status after processing events
|
||||
let status = finished_watcher.status();
|
||||
let status = finished_watcher.status().unwrap();
|
||||
|
||||
// Assertions
|
||||
assert_eq!(status.state, WatcherState::Stopped);
|
||||
@@ -190,7 +190,7 @@ fn test_debouncing() {
|
||||
|
||||
// Complete the test
|
||||
let finished_watcher = watcher_thread.join().expect("Watcher thread panicked");
|
||||
let status = finished_watcher.status();
|
||||
let status = finished_watcher.status().unwrap();
|
||||
|
||||
// We should have processed fewer events than modifications made
|
||||
// due to debouncing (exact count depends on implementation details)
|
||||
@@ -248,7 +248,7 @@ fn test_event_flood() {
|
||||
|
||||
// Complete the test
|
||||
let finished_watcher = watcher_thread.join().expect("Watcher thread panicked");
|
||||
let status = finished_watcher.status();
|
||||
let status = finished_watcher.status().unwrap();
|
||||
|
||||
// Verify processing occurred
|
||||
assert!(status.events_processed > 0, "Expected events to be processed");
|
||||
@@ -355,7 +355,7 @@ fn test_graceful_shutdown() {
|
||||
"Shutdown took too long");
|
||||
|
||||
// Verify final state
|
||||
let status = watcher.status();
|
||||
let status = watcher.status().unwrap();
|
||||
assert_eq!(status.state, WatcherState::Stopped);
|
||||
assert_eq!(status.queue_size, 0, "Queue should be empty after shutdown");
|
||||
|
||||
|
Reference in New Issue
Block a user