mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-13 07:58:34 +00:00
48 lines
1.3 KiB
Rust
48 lines
1.3 KiB
Rust
//! 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(())
|
|
}
|