diff --git a/src/exec/job.rs b/src/exec/job.rs index d37899b..c3c8254 100644 --- a/src/exec/job.rs +++ b/src/exec/job.rs @@ -7,7 +7,7 @@ // according to those terms. use super::CommandTemplate; -use crate::exit_codes::{ExitCode, merge_exitcodes}; +use crate::exit_codes::{merge_exitcodes, ExitCode}; use crate::walk::WorkerResult; use std::path::PathBuf; use std::sync::mpsc::Receiver; diff --git a/src/exit_codes.rs b/src/exit_codes.rs index c2aaacf..c0be96b 100644 --- a/src/exit_codes.rs +++ b/src/exit_codes.rs @@ -1,3 +1,4 @@ +#[derive(PartialEq, Debug)] pub enum ExitCode { Success, GeneralError, @@ -29,3 +30,30 @@ pub fn merge_exitcodes(results: Vec) -> ExitCode { } ExitCode::Success } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn success_with_empty_vec() { + assert_eq!(merge_exitcodes(vec![]), ExitCode::Success); + } + + #[test] + fn general_error_with_at_least_a_matching_error() { + assert_eq!( + merge_exitcodes(vec![ExitCode::KilledBySigint, ExitCode::Success]), + ExitCode::GeneralError + ); + assert_eq!( + merge_exitcodes(vec![ExitCode::GeneralError, ExitCode::Success]), + ExitCode::GeneralError + ); + } + + #[test] + fn success_with_no_error() { + assert_eq!(merge_exitcodes(vec![ExitCode::Success]), ExitCode::Success); + } +} diff --git a/src/walk.rs b/src/walk.rs index ea9e76d..b3190e0 100644 --- a/src/walk.rs +++ b/src/walk.rs @@ -7,7 +7,7 @@ // according to those terms. use crate::exec; -use crate::exit_codes::{ExitCode, merge_exitcodes}; +use crate::exit_codes::{merge_exitcodes, ExitCode}; use crate::fshelper; use crate::internal::{opts::FdOptions, osstr_to_bytes, MAX_BUFFER_LENGTH}; use crate::output;