95 lines · 2.8 KB · Rust
RawDownload
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(())}