use super::*;
#[test]
fn default_identity_produces_plain_git_command() {
let backend = RealGitBackend::default();
let cmd = backend.command();
let args: Vec<&std::ffi::OsStr> = cmd.get_args().collect();
assert_eq!(
args,
vec![
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("maintenance.auto=false"),
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("gc.auto=0"),
],
"an empty identity adds no -c args of its own beyond #7171's"
);
assert_eq!(
cmd.get_envs().count(),
0,
"no env overrides for an empty identity"
);
}
#[test]
fn git_identity_env_applied_to_command() {
let identity = crate::core::git_identity::GitIdentity {
env: vec![("GH_CONFIG_DIR".to_string(), "/cfg/project".to_string())],
env_remove: vec!["GH_TOKEN".to_string()],
commit_name: None,
commit_email: None,
};
let backend = RealGitBackend::new(identity);
let cmd = backend.command();
let envs: Vec<_> = cmd.get_envs().collect();
assert!(
envs.iter().any(|(k, v)| {
*k == std::ffi::OsStr::new("GH_CONFIG_DIR")
&& *v == Some(std::ffi::OsStr::new("/cfg/project"))
}),
"GH_CONFIG_DIR override must be applied: {envs:?}"
);
assert!(
envs.iter()
.any(|(k, v)| *k == std::ffi::OsStr::new("GH_TOKEN") && v.is_none()),
"GH_TOKEN must be removed: {envs:?}"
);
}
#[test]
fn git_identity_commit_args_applied_to_command() {
let identity = crate::core::git_identity::GitIdentity {
env: vec![],
env_remove: vec![],
commit_name: Some("Bot".to_string()),
commit_email: Some("bot@example.com".to_string()),
};
let backend = RealGitBackend::new(identity);
let cmd = backend.command();
let args: Vec<&std::ffi::OsStr> = cmd.get_args().collect();
assert_eq!(
args,
vec![
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("maintenance.auto=false"),
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("gc.auto=0"),
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("user.name=Bot"),
std::ffi::OsStr::new("-c"),
std::ffi::OsStr::new("user.email=bot@example.com"),
]
);
}