]> git.proxmox.com Git - rustc.git/blob - vendor/gix-pathspec/tests/defaults.rs
New upstream version 1.74.1+dfsg1
[rustc.git] / vendor / gix-pathspec / tests / defaults.rs
1 use gix_pathspec::{Defaults, MagicSignature, SearchMode};
2 use serial_test::serial;
3
4 #[test]
5 #[serial]
6 fn literal_only_combines_with_icase() -> gix_testtools::Result {
7 {
8 let _env = gix_testtools::Env::new()
9 .set("GIT_LITERAL_PATHSPECS", "true")
10 .set("GIT_ICASE_PATHSPECS", "1")
11 .set("GIT_NOGLOB_PATHSPECS", "yes");
12 assert_eq!(
13 Defaults::from_environment(&mut |n| std::env::var_os(n))?,
14 Defaults {
15 signature: MagicSignature::ICASE,
16 search_mode: SearchMode::Literal,
17 literal: true,
18 }
19 );
20 }
21 {
22 let _env = gix_testtools::Env::new()
23 .set("GIT_LITERAL_PATHSPECS", "true")
24 .set("GIT_ICASE_PATHSPECS", "false")
25 .set("GIT_GLOB_PATHSPECS", "yes");
26 assert_eq!(
27 Defaults::from_environment(&mut |n| std::env::var_os(n))?,
28 Defaults {
29 signature: MagicSignature::default(),
30 search_mode: SearchMode::Literal,
31 literal: true,
32 }
33 );
34 }
35 Ok(())
36 }
37 #[test]
38 #[serial]
39 fn nothing_is_set_then_it_is_like_the_default_impl() -> gix_testtools::Result {
40 assert_eq!(
41 Defaults::from_environment(&mut |n| std::env::var_os(n))?,
42 Defaults::default()
43 );
44 Ok(())
45 }
46
47 #[test]
48 #[serial]
49 fn glob_and_noglob_cause_error() -> gix_testtools::Result {
50 let _env = gix_testtools::Env::new()
51 .set("GIT_GLOB_PATHSPECS", "1")
52 .set("GIT_NOGLOB_PATHSPECS", "yes");
53 assert_eq!(
54 Defaults::from_environment(&mut |n| std::env::var_os(n))
55 .unwrap_err()
56 .to_string(),
57 "Glob and no-glob settings are mutually exclusive"
58 );
59
60 Ok(())
61 }
62
63 #[test]
64 #[serial]
65 fn noglob_works() -> gix_testtools::Result {
66 let _env = gix_testtools::Env::new()
67 .set("GIT_GLOB_PATHSPECS", "0")
68 .set("GIT_NOGLOB_PATHSPECS", "true");
69 assert_eq!(
70 Defaults::from_environment(&mut |n| std::env::var_os(n))?,
71 Defaults {
72 signature: MagicSignature::default(),
73 search_mode: SearchMode::Literal,
74 literal: false,
75 },
76 "it's OK to set only one of them, and only no-glob has an interesting, non-default effect"
77 );
78 Ok(())
79 }
80
81 #[test]
82 #[serial]
83 fn glob_works() -> gix_testtools::Result {
84 let _env = gix_testtools::Env::new().set("GIT_GLOB_PATHSPECS", "yes");
85 assert_eq!(
86 Defaults::from_environment(&mut |n| std::env::var_os(n))?,
87 Defaults {
88 signature: MagicSignature::default(),
89 search_mode: SearchMode::PathAwareGlob,
90 literal: false,
91 },
92 "docs here are strange but they mean to use pathaware globbing when this variable is set"
93 );
94 Ok(())
95 }