rvlib/
test_helpers.rs

1use std::{
2    fs,
3    path::{Path, PathBuf},
4    thread,
5    time::Duration,
6};
7
8use crate::{
9    control::Control, defer_file_removal, tracing_setup::init_tracing_for_tests, ToolsDataMap,
10};
11
12pub fn get_ctrl() -> Control {
13    let mut ctrl = Control::default();
14    ctrl.cfg.usr.home_folder = Some(ctrl.cfg.tmpdir().to_string());
15    ctrl
16}
17
18pub fn tmp_copy(src: &Path) -> PathBuf {
19    let tmp_file_stem = src.file_stem().unwrap().to_str().unwrap();
20    let tmp_file = get_test_folder().join(format!("tmp-{tmp_file_stem}"));
21    tracing::debug!("Copying {src:?} to {tmp_file:?}");
22    fs::copy(src, &tmp_file).unwrap();
23    tmp_file
24}
25
26pub fn get_test_folder() -> PathBuf {
27    PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("resources/test_data")
28}
29pub fn prj_load(file: &str) -> ToolsDataMap {
30    init_tracing_for_tests();
31    let mut ctrl = get_ctrl();
32    let test_file_src = get_test_folder().join(get_test_folder().join(file));
33    let test_file = tmp_copy(&test_file_src);
34    defer_file_removal!(&test_file);
35    let mut tdm = ctrl.load(test_file.clone()).unwrap();
36    let pre_tdm = tdm.clone();
37    ctrl.import_annos(&test_file, &mut tdm).unwrap();
38    thread::sleep(Duration::from_millis(5));
39    assert_eq!(tdm, pre_tdm);
40    tdm
41}