1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
//! Test for some global state set up by libgit2's `git_libgit2_init` function
//! that need to be synchronized within a single process.
use git2::opts;
use git2::{ConfigLevel, IntoCString};
// Test for mutating configuration file search path which is set during
// initialization in libgit2's `git_sysdir_global_init` function.
#[test]
fn search_path() -> Result<(), Box<dyn std::error::Error>> {
use std::env::join_paths;
let path = "fake_path";
let original = unsafe { opts::get_search_path(ConfigLevel::Global) };
assert_ne!(original, Ok(path.into_c_string()?));
// Set
unsafe {
opts::set_search_path(ConfigLevel::Global, &path)?;
}
assert_eq!(
unsafe { opts::get_search_path(ConfigLevel::Global) },
Ok(path.into_c_string()?)
);
// Append
let paths = join_paths(["$PATH", path].iter())?;
let expected_paths = join_paths([path, path].iter())?.into_c_string()?;
unsafe {
opts::set_search_path(ConfigLevel::Global, paths)?;
}
assert_eq!(
unsafe { opts::get_search_path(ConfigLevel::Global) },
Ok(expected_paths)
);
// Reset
unsafe {
opts::reset_search_path(ConfigLevel::Global)?;
}
assert_eq!(
unsafe { opts::get_search_path(ConfigLevel::Global) },
original
);
Ok(())
}
|