From a19b070fde5b03f4ef4c6263a59d651faa159ebb Mon Sep 17 00:00:00 2001 From: Federico Terzi Date: Fri, 13 Sep 2019 11:50:39 +0200 Subject: [PATCH] Fix tests on macos and linux --- src/config/mod.rs | 7 +++++- src/config/runtime.rs | 50 +++++++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/src/config/mod.rs b/src/config/mod.rs index 492d843..ced9246 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -283,6 +283,7 @@ mod tests { use super::*; use std::io::Write; use tempfile::{NamedTempFile, TempDir}; + use std::any::Any; const TEST_WORKING_CONFIG_FILE : &str = include_str!("../res/test/working_config.yaml"); const TEST_CONFIG_FILE_WITH_BAD_YAML : &str = include_str!("../res/test/config_with_bad_yaml.yaml"); @@ -295,6 +296,10 @@ mod tests { file } + fn variant_eq(a: &T, b: &T) -> bool { + std::mem::discriminant(a) == std::mem::discriminant(b) + } + #[test] fn test_config_file_not_found() { let config = Configs::load_config(Path::new("invalid/path")); @@ -511,6 +516,6 @@ mod tests { let config_set = ConfigSet::load(tmp_dir.path()); assert!(config_set.is_err()); - assert_eq!(config_set.unwrap_err(), ConfigLoadError::NameDuplicate(specific_path2)) + assert!(variant_eq(&config_set.unwrap_err(), &ConfigLoadError::NameDuplicate(PathBuf::new()))) } } \ No newline at end of file diff --git a/src/config/runtime.rs b/src/config/runtime.rs index 8f0512d..1e7e405 100644 --- a/src/config/runtime.rs +++ b/src/config/runtime.rs @@ -253,21 +253,28 @@ mod tests { let config_manager = RuntimeConfigManager::new(config_set.unwrap(), dummy_system_manager); + let sp1index = config_manager.set.specific + .iter().position(|x| x.name == "myname1").unwrap(); + let sp2index = config_manager.set.specific + .iter().position(|x| x.name == "myname2").unwrap(); + let sp3index = config_manager.set.specific + .iter().position(|x| x.name == "myname3").unwrap(); + assert_eq!(config_manager.exec_regexps.len(), 3); assert_eq!(config_manager.title_regexps.len(), 3); assert_eq!(config_manager.class_regexps.len(), 3); - assert!(config_manager.class_regexps[0].is_none()); - assert!(config_manager.class_regexps[1].is_some()); - assert!(config_manager.class_regexps[2].is_none()); + assert!(config_manager.class_regexps[sp1index].is_none()); + assert!(config_manager.class_regexps[sp2index].is_some()); + assert!(config_manager.class_regexps[sp3index].is_none()); - assert!(config_manager.title_regexps[0].is_none()); - assert!(config_manager.title_regexps[1].is_some()); - assert!(config_manager.title_regexps[2].is_some()); + assert!(config_manager.title_regexps[sp1index].is_none()); + assert!(config_manager.title_regexps[sp2index].is_some()); + assert!(config_manager.title_regexps[sp3index].is_some()); - assert!(config_manager.exec_regexps[0].is_some()); - assert!(config_manager.exec_regexps[1].is_none()); - assert!(config_manager.exec_regexps[2].is_none()); + assert!(config_manager.exec_regexps[sp1index].is_some()); + assert!(config_manager.exec_regexps[sp2index].is_none()); + assert!(config_manager.exec_regexps[sp3index].is_none()); } #[test] @@ -297,21 +304,28 @@ mod tests { let config_manager = RuntimeConfigManager::new(config_set.unwrap(), dummy_system_manager); + let sp1index = config_manager.set.specific + .iter().position(|x| x.name == "myname1").unwrap(); + let sp2index = config_manager.set.specific + .iter().position(|x| x.name == "myname2").unwrap(); + let sp3index = config_manager.set.specific + .iter().position(|x| x.name == "myname3").unwrap(); + assert_eq!(config_manager.exec_regexps.len(), 3); assert_eq!(config_manager.title_regexps.len(), 3); assert_eq!(config_manager.class_regexps.len(), 3); - assert!(config_manager.class_regexps[0].is_none()); - assert!(config_manager.class_regexps[1].is_some()); - assert!(config_manager.class_regexps[2].is_none()); + assert!(config_manager.class_regexps[sp1index].is_none()); + assert!(config_manager.class_regexps[sp2index].is_some()); + assert!(config_manager.class_regexps[sp3index].is_none()); - assert!(config_manager.title_regexps[0].is_none()); - assert!(config_manager.title_regexps[1].is_none()); - assert!(config_manager.title_regexps[2].is_some()); + assert!(config_manager.title_regexps[sp1index].is_none()); + assert!(config_manager.title_regexps[sp2index].is_none()); + assert!(config_manager.title_regexps[sp3index].is_some()); - assert!(config_manager.exec_regexps[0].is_none()); - assert!(config_manager.exec_regexps[1].is_none()); - assert!(config_manager.exec_regexps[2].is_none()); + assert!(config_manager.exec_regexps[sp1index].is_none()); + assert!(config_manager.exec_regexps[sp2index].is_none()); + assert!(config_manager.exec_regexps[sp3index].is_none()); } #[test]