use gix_pathspec::{Defaults, MagicSignature, SearchMode};use serial_test::serial; #[test]#[serial]fn literal_only_combines_with_icase() -> gix_testtools::Result { { let _env = gix_testtools::Env::new() .set("GIT_LITERAL_PATHSPECS", "true") .set("GIT_ICASE_PATHSPECS", "1") .set("GIT_NOGLOB_PATHSPECS", "yes"); assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n))?, Defaults { signature: MagicSignature::ICASE, search_mode: SearchMode::Literal, literal: true, } ); } { let _env = gix_testtools::Env::new() .set("GIT_LITERAL_PATHSPECS", "true") .set("GIT_ICASE_PATHSPECS", "false") .set("GIT_GLOB_PATHSPECS", "yes"); assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n))?, Defaults { signature: MagicSignature::default(), search_mode: SearchMode::Literal, literal: true, } ); } Ok(())}#[test]#[serial]fn nothing_is_set_then_it_is_like_the_default_impl() -> gix_testtools::Result { assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n))?, Defaults::default() ); Ok(())} #[test]#[serial]fn glob_and_noglob_cause_error() -> gix_testtools::Result { let _env = gix_testtools::Env::new() .set("GIT_GLOB_PATHSPECS", "1") .set("GIT_NOGLOB_PATHSPECS", "yes"); assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n)) .unwrap_err() .to_string(), "Glob and no-glob settings are mutually exclusive" ); Ok(())} #[test]#[serial]fn noglob_works() -> gix_testtools::Result { let _env = gix_testtools::Env::new() .set("GIT_GLOB_PATHSPECS", "0") .set("GIT_NOGLOB_PATHSPECS", "true"); assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n))?, Defaults { signature: MagicSignature::default(), search_mode: SearchMode::Literal, literal: false, }, "it's OK to set only one of them, and only no-glob has an interesting, non-default effect" ); Ok(())} #[test]#[serial]fn glob_works() -> gix_testtools::Result { let _env = gix_testtools::Env::new().set("GIT_GLOB_PATHSPECS", "yes"); assert_eq!( Defaults::from_environment(&mut |n| std::env::var_os(n))?, Defaults { signature: MagicSignature::default(), search_mode: SearchMode::PathAwareGlob, literal: false, }, "docs here are strange but they mean to use pathaware globbing when this variable is set" ); Ok(())}
use gix_pathspec::{Defaults, MagicSignature, SearchMode};
use serial_test::serial;
#[test]
#[serial]
fn literal_only_combines_with_icase() -> gix_testtools::Result {
{
let _env = gix_testtools::Env::new()
.set("GIT_LITERAL_PATHSPECS", "true")
.set("GIT_ICASE_PATHSPECS", "1")
.set("GIT_NOGLOB_PATHSPECS", "yes");
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))?,
Defaults {
signature: MagicSignature::ICASE,
search_mode: SearchMode::Literal,
literal: true,
}
);
}
{
let _env = gix_testtools::Env::new()
.set("GIT_LITERAL_PATHSPECS", "true")
.set("GIT_ICASE_PATHSPECS", "false")
.set("GIT_GLOB_PATHSPECS", "yes");
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))?,
Defaults {
signature: MagicSignature::default(),
search_mode: SearchMode::Literal,
literal: true,
}
);
}
Ok(())
}
#[test]
#[serial]
fn nothing_is_set_then_it_is_like_the_default_impl() -> gix_testtools::Result {
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))?,
Defaults::default()
);
Ok(())
}
#[test]
#[serial]
fn glob_and_noglob_cause_error() -> gix_testtools::Result {
let _env = gix_testtools::Env::new()
.set("GIT_GLOB_PATHSPECS", "1")
.set("GIT_NOGLOB_PATHSPECS", "yes");
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))
.unwrap_err()
.to_string(),
"Glob and no-glob settings are mutually exclusive"
);
Ok(())
}
#[test]
#[serial]
fn noglob_works() -> gix_testtools::Result {
let _env = gix_testtools::Env::new()
.set("GIT_GLOB_PATHSPECS", "0")
.set("GIT_NOGLOB_PATHSPECS", "true");
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))?,
Defaults {
signature: MagicSignature::default(),
search_mode: SearchMode::Literal,
literal: false,
},
"it's OK to set only one of them, and only no-glob has an interesting, non-default effect"
);
Ok(())
}
#[test]
#[serial]
fn glob_works() -> gix_testtools::Result {
let _env = gix_testtools::Env::new().set("GIT_GLOB_PATHSPECS", "yes");
assert_eq!(
Defaults::from_environment(&mut |n| std::env::var_os(n))?,
Defaults {
signature: MagicSignature::default(),
search_mode: SearchMode::PathAwareGlob,
literal: false,
},
"docs here are strange but they mean to use pathaware globbing when this variable is set"
);
Ok(())
}