From 7723678dba1c00657b0622db33551577b09db58c Mon Sep 17 00:00:00 2001 From: Igor Brejc Date: Mon, 25 Apr 2022 20:20:02 +0200 Subject: [PATCH] Fix: don't display duplicate file names for detected changes --- tcr/src/main.rs | 16 ++++++++++------ tcr/src/watch.rs | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tcr/src/main.rs b/tcr/src/main.rs index abcc065..ba42cc1 100644 --- a/tcr/src/main.rs +++ b/tcr/src/main.rs @@ -8,6 +8,7 @@ mod watch; use notify::{raw_watcher, RawEvent, RecursiveMode, Watcher}; use regex::RegexSet; +use std::collections::HashSet; use std::sync::mpsc::{channel, Receiver, Sender}; use std::sync::{Arc, Mutex}; use std::thread; @@ -17,7 +18,7 @@ use watch::SourceCodeUpdateEvent; fn collect_watch_events( files_watch_enabled: Arc>, rx_watch_events: Receiver, - collected_events: Arc>>, + collected_events: Arc>>, tx_watch_events_starter: Sender, matching_files: RegexSet, ) { @@ -32,11 +33,14 @@ fn collect_watch_events( &matching_files, ) { Some(event_data) => { - println!("{}", event_data); + if !collected_events.contains(&event_data) { + println!("{}", event_data); + } + if collected_events.len() == 0 { tx_watch_events_starter.send(1).unwrap(); } - collected_events.push(event_data); + collected_events.insert(event_data); } None => (), } @@ -52,7 +56,7 @@ fn collect_watch_events( fn run_tests_on_files_update( files_watch_enabled: Arc>, rx_watch_events_starter: Receiver, - collected_events: Arc>>, + collected_events: Arc>>, delay: Duration, test_step: Option, test_cmd_args: Option>, @@ -131,8 +135,8 @@ fn main() { let files_watch_enabled: Arc> = Arc::new(Mutex::new(true)); let files_watch_enabled_clone = Arc::clone(&files_watch_enabled); - let collected_events: Arc>> = - Arc::new(Mutex::new(Vec::new())); + let collected_events: Arc>> = + Arc::new(Mutex::new(HashSet::new())); let collected_events_clone = Arc::clone(&collected_events); thread::spawn(move || { run_tests_on_files_update( diff --git a/tcr/src/watch.rs b/tcr/src/watch.rs index dc1699a..0ffd794 100644 --- a/tcr/src/watch.rs +++ b/tcr/src/watch.rs @@ -4,6 +4,7 @@ use std::path::Path; use crate::paths; +#[derive(PartialEq, Eq, Hash)] pub struct SourceCodeUpdateEvent { path: String, }