Skip to content

Commit 6047a13

Browse files
authored
GH-783 Fix tests failing on non standard environment (#432)
* fixed tests failing on Bert's computer * formatting * remove commented out code * change .clone() to reference * fixed test for windows in actions: tilde_in_config_file_path_from_commandline_and_args_uploaded_from_config_file * target_os for dirs crate used only on windows test * implementing Bert's review comments - change DirsWrapperMock to DirsWrapperReal and simplifying home_dir creation * fixing windows data-directory assertion in test tilde_in_config_file_path_from_commandline_and_args_uploaded_from_config_file * fixing home dir assertion for windows * add condition to use of dirs crate only for windows * fixing config toml for windows test tilde_in_config_file_path_from_commandline_and_args_uploaded_from_config_file * fixed windows test * formatting * fixed tilde tests for windows * remove unnecesary function for finding project root, use of current dir for DirsWrapperMock * adjusting name of test and removing commented out code
1 parent f43dcbe commit 6047a13

File tree

4 files changed

+51
-45
lines changed

4 files changed

+51
-45
lines changed

node/src/daemon/setup_reporter.rs

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,7 +1226,6 @@ mod tests {
12261226
};
12271227
use crate::test_utils::{assert_string_contains, rate_pack};
12281228
use core::option::Option;
1229-
use dirs::home_dir;
12301229
use masq_lib::blockchains::chains::Chain as Blockchain;
12311230
use masq_lib::blockchains::chains::Chain::PolyAmoy;
12321231
use masq_lib::constants::{DEFAULT_CHAIN, DEFAULT_GAS_PRICE};
@@ -1239,6 +1238,7 @@ mod tests {
12391238
use std::convert::TryFrom;
12401239
#[cfg(not(target_os = "windows"))]
12411240
use std::default::Default;
1241+
use std::env::current_dir;
12421242
use std::fs::{create_dir_all, File};
12431243
use std::io::Write;
12441244
use std::net::IpAddr;
@@ -2046,21 +2046,16 @@ mod tests {
20462046
}
20472047

20482048
#[test]
2049-
fn get_modified_setup_tilde_in_config_file_path() {
2049+
fn get_modified_setup_handles_tilde_in_config_file_and_data_directory_path() {
20502050
let _guard = EnvironmentGuard::new();
20512051
let base_dir = ensure_node_home_directory_exists(
20522052
"setup_reporter",
2053-
"get_modified_setup_tilde_in_data_directory",
2053+
"get_modified_setup_handles_tilde_in_config_file_and_data_directory_path",
20542054
);
20552055
let data_dir = base_dir.join("data_dir");
2056-
std::fs::create_dir_all(home_dir().expect("expect home dir").join("masqhome")).unwrap();
2057-
let mut config_file = File::create(
2058-
home_dir()
2059-
.expect("expect home dir")
2060-
.join("masqhome")
2061-
.join("config.toml"),
2062-
)
2063-
.unwrap();
2056+
std::fs::create_dir_all(base_dir.join("masqhome")).unwrap();
2057+
let config_file_path = base_dir.join("masqhome").join("config.toml");
2058+
let mut config_file = File::create(&config_file_path).unwrap();
20642059
config_file
20652060
.write_all(b"blockchain-service-url = \"https://www.mainnet.com\"\n")
20662061
.unwrap();
@@ -2082,12 +2077,11 @@ mod tests {
20822077
.collect_vec();
20832078

20842079
let expected_config_file_data = "https://www.mainnet.com";
2085-
let dirs_wrapper = Box::new(
2086-
DirsWrapperMock::new()
2087-
.data_dir_result(Some(data_dir))
2088-
.home_dir_result(Some(base_dir)),
2089-
);
2090-
let subject = SetupReporterReal::new(dirs_wrapper);
2080+
let dirs_wrapper = DirsWrapperMock {
2081+
data_dir_result: Some(PathBuf::from(current_dir().unwrap().join(&data_dir))),
2082+
home_dir_result: Some(PathBuf::from(current_dir().unwrap().join(&base_dir))),
2083+
};
2084+
let subject = SetupReporterReal::new(Box::new(dirs_wrapper));
20912085

20922086
let result = subject
20932087
.get_modified_setup(existing_setup, incoming_setup)

node/src/node_configurator/mod.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,16 @@ fn get_data_directory_from_mc(
119119
}
120120
}
121121

122-
fn replace_tilde(config_path: PathBuf) -> PathBuf {
122+
fn replace_tilde(config_path: PathBuf, dirs_wrapper: &dyn DirsWrapper) -> PathBuf {
123123
match config_path.starts_with("~") {
124124
true => PathBuf::from(
125125
config_path.display().to_string().replacen(
126126
'~',
127-
home_dir()
128-
.expect("expected users home_dir")
127+
dirs_wrapper
128+
.home_dir()
129+
.expect("expected users home dir")
129130
.to_str()
130-
.expect("expected str home_dir"),
131+
.expect("expected home dir"),
131132
1,
132133
),
133134
),
@@ -166,12 +167,13 @@ fn get_config_file_from_mc(
166167
multi_config: &MultiConfig,
167168
data_directory: &Path,
168169
data_directory_def: bool,
170+
dirs_wrapper: &dyn DirsWrapper,
169171
) -> FieldPair<PathBuf> {
170172
let mut panic: bool = false;
171173
let config_file = value_m!(multi_config, "config-file", PathBuf);
172174
match config_file {
173175
Some(config_path) => {
174-
let config_path = replace_tilde(config_path);
176+
let config_path = replace_tilde(config_path, dirs_wrapper);
175177
let config_path = replace_dots(config_path);
176178
let config_path =
177179
replace_relative_path(config_path, data_directory_def, data_directory, &mut panic);
@@ -216,6 +218,7 @@ fn config_file_data_dir_real_user_chain_from_mc(
216218
&multi_config,
217219
&initialization_data.data_directory.item,
218220
initialization_data.data_directory.user_specified,
221+
dirs_wrapper,
219222
);
220223
initialization_data
221224
}

node/src/node_configurator/node_configurator_standard.rs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ mod tests {
376376
make_pre_populated_mocked_directory_wrapper, make_simplified_multi_config,
377377
};
378378
use crate::test_utils::{assert_string_contains, main_cryptde, ArgsBuilder};
379-
use dirs::home_dir;
380379
use masq_lib::blockchains::chains::Chain;
381380
use masq_lib::constants::DEFAULT_CHAIN;
382381
use masq_lib::multi_config::VirtualCommandLine;
@@ -1075,14 +1074,16 @@ mod tests {
10751074
}
10761075

10771076
#[test]
1078-
fn server_initializer_collected_params_handle_tilde_in_path_config_file_from_commandline_and_real_user_from_config_file(
1079-
) {
1077+
fn tilde_in_config_file_path_from_commandline_and_args_uploaded_from_config_file() {
10801078
running_test();
10811079
let _guard = EnvironmentGuard::new();
10821080
let _clap_guard = ClapGuard::new();
1083-
let home_dir = home_dir().expect("expectexd home dir");
1084-
let data_dir = &home_dir.join("masqhome");
1085-
let _create_data_dir = create_dir_all(data_dir);
1081+
let home_dir = ensure_node_home_directory_exists(
1082+
"node_configurator_standard",
1083+
"tilde_in_config_file_path_from_commandline_and_args_uploaded_from_config_file",
1084+
);
1085+
let data_dir = home_dir.join("masqhome");
1086+
let _dir = create_dir_all(&data_dir);
10861087
let config_file_relative = File::create(data_dir.join("config.toml")).unwrap();
10871088
fill_up_config_file(config_file_relative);
10881089
let env_vec_array = vec![
@@ -1105,16 +1106,30 @@ mod tests {
11051106
.param("--config-file", "~\\masqhome\\config.toml")
11061107
.param("--data-directory", "~\\masqhome");
11071108
let args_vec: Vec<String> = args.into();
1108-
let dir_wrapper = DirsWrapperMock::new()
1109-
.home_dir_result(Some(home_dir.to_path_buf()))
1110-
.data_dir_result(Some(data_dir.to_path_buf()));
1109+
let dir_wrapper = DirsWrapperMock {
1110+
data_dir_result: Some(PathBuf::from(current_dir().unwrap().join(&data_dir))),
1111+
home_dir_result: Some(PathBuf::from(current_dir().unwrap().join(&home_dir))),
1112+
};
11111113

11121114
let result = server_initializer_collected_params(&dir_wrapper, args_vec.as_slice());
11131115
let multiconfig = result.unwrap();
11141116

11151117
assert_eq!(
11161118
value_m!(multiconfig, "data-directory", String).unwrap(),
1117-
data_dir.to_string_lossy().to_string()
1119+
current_dir()
1120+
.unwrap()
1121+
.join(&data_dir)
1122+
.to_string_lossy()
1123+
.to_string()
1124+
);
1125+
assert_eq!(
1126+
value_m!(multiconfig, "config-file", String).unwrap(),
1127+
current_dir()
1128+
.unwrap()
1129+
.join(data_dir)
1130+
.join(PathBuf::from("config.toml"))
1131+
.to_string_lossy()
1132+
.to_string()
11181133
);
11191134
#[cfg(not(target_os = "windows"))]
11201135
{
@@ -1123,13 +1138,6 @@ mod tests {
11231138
"9999:9999:booga"
11241139
);
11251140
}
1126-
assert_eq!(
1127-
value_m!(multiconfig, "config-file", String).unwrap(),
1128-
data_dir
1129-
.join(PathBuf::from("config.toml"))
1130-
.to_string_lossy()
1131-
.to_string()
1132-
);
11331141
assert_eq!(
11341142
value_m!(multiconfig, "blockchain-service-url", String).unwrap(),
11351143
"https://www.mainnet1.com"

node/src/test_utils/mod.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,13 @@ use std::collections::btree_set::BTreeSet;
5252
use std::collections::HashSet;
5353
use std::convert::From;
5454
use std::fmt::Debug;
55+
5556
use std::hash::Hash;
5657
use std::io::ErrorKind;
5758
use std::io::Read;
5859
use std::iter::repeat;
5960
use std::net::{Shutdown, TcpStream};
61+
6062
use std::str::FromStr;
6163
use std::sync::{Arc, Mutex};
6264
use std::thread;
@@ -1221,18 +1223,17 @@ pub mod unshared_test_utils {
12211223

12221224
#[cfg(test)]
12231225
mod tests {
1224-
use std::borrow::BorrowMut;
1225-
use std::iter;
1226-
use std::sync::{Arc, Mutex};
1227-
use std::thread;
1228-
use std::time::Duration;
1229-
12301226
use crate::sub_lib::cryptde::CryptData;
12311227
use crate::sub_lib::hop::LiveHop;
12321228
use crate::sub_lib::neighborhood::ExpectedService;
12331229
use crate::test_utils::unshared_test_utils::arbitrary_id_stamp::{
12341230
ArbitraryIdStamp, FirstTraitMock, SecondTraitMock, TestSubject,
12351231
};
1232+
use std::borrow::BorrowMut;
1233+
use std::iter;
1234+
use std::sync::{Arc, Mutex};
1235+
use std::thread;
1236+
use std::time::Duration;
12361237

12371238
use super::*;
12381239

0 commit comments

Comments
 (0)