History

refactor

- prepare for having one module per condition kind - prepare for pulling apart all-in-one tests into their own sub-tests

Sebastian Thiel committed 4 years ago

Commit 0ccd8ae1 parent e2e94db2 files · +112 −105Browse files

Unified · Split

2 files
  1. git-config/tests/file/from_paths/includes/conditional/mod.rs +3 −105
  2. git-config/tests/file/from_paths/includes/conditional/onbranch.rs +109 −0
git-config/tests/file/from_paths/includes/conditional/mod.rsrenamed from git-config/tests/file/from_paths/includes/conditional.rs+3−105
@@ -1,5 +1,3 @@
1use bstr::BString;
2use std::convert::TryFrom;
3use std::fs;1use std::fs;
4use std::path::{Path, PathBuf};2use std::path::{Path, PathBuf};
5 3
@@ -8,9 +6,10 @@ use crate::file::from_paths::escape_backslashes; · 2 unmodified lines
8use git_config::file::from_paths;6use git_config::file::from_paths;
9use git_config::File;7use git_config::File;
10use git_path::{create_symlink, CanonicalizedTempDir};8use git_path::{create_symlink, CanonicalizedTempDir};
11use git_ref::FullName;
12use tempfile::tempdir;9use tempfile::tempdir;
13 10
11mod onbranch;
12
14#[test]13#[test]
15fn include_and_includeif_correct_inclusion_order() {14fn include_and_includeif_correct_inclusion_order() {
16 let dir = tempdir().unwrap();15 let dir = tempdir().unwrap();
@@ -117,108 +116,7 @@ fn pattern_is_current_dir() { · 100 unmodified lines
117}116}
118 117
119#[test]118#[test]
120fn onbranch_tests() {119fn gitdir() {
121 let dir = tempdir().unwrap();
122 let config_path = dir.path().join("a");
123 let hierarchy_branch_path = dir.path().join("hierarchy_branch");
124 let branch_path = dir.path().join("branch");
125 let another_branch_path = dir.path().join("anohter_branch");
126 fs::write(
127 branch_path.as_path(),
128 "
129[core]
130 x = branch-override",
131 )
132 .unwrap();
133
134 fs::write(
135 another_branch_path.as_path(),
136 "
137[core]
138 z = another-branch-override",
139 )
140 .unwrap();
141
142 fs::write(
143 hierarchy_branch_path.as_path(),
144 "
145[core]
146 y = hierarchy-branch-override",
147 )
148 .unwrap();
149
150 fs::write(
151 config_path.as_path(),
152 format!(
153 r#"
154[core]
155 x = 1
156 y = 1
157 z = 1
158[includeIf "onbranch:foo*"]
159 path = {}
160[includeIf "onbranch:br/"]
161 path = {}
162[includeIf "onbranch:foo*"]
163 path = {}"#,
164 escape_backslashes(&branch_path),
165 escape_backslashes(&hierarchy_branch_path),
166 escape_backslashes(&another_branch_path),
167 ),
168 )
169 .unwrap();
170
171 {
172 let branch_name = FullName::try_from(BString::from("refs/heads/foobar")).unwrap();
173 let branch_name = branch_name.as_ref();
174 let options = from_paths::Options {
175 branch_name: Some(branch_name),
176 ..Default::default()
177 };
178
179 let config = File::from_paths(Some(&config_path), options).unwrap();
180 assert_eq!(
181 config.string("core", None, "x"),
182 Some(cow_str("branch-override")),
183 "branch name match"
184 );
185 }
186
187 {
188 let branch_name = FullName::try_from(BString::from("refs/heads/foo/bar")).unwrap();
189 let branch_name = branch_name.as_ref();
190 let options = from_paths::Options {
191 branch_name: Some(branch_name),
192 ..Default::default()
193 };
194
195 let config = File::from_paths(Some(&config_path), options).unwrap();
196 assert_eq!(
197 config.string("core", None, "z"),
198 Some(cow_str("1")),
199 "branch name match"
200 );
201 }
202
203 {
204 let branch_name = FullName::try_from(BString::from("refs/heads/br/one")).unwrap();
205 let branch_name = branch_name.as_ref();
206 let options = from_paths::Options {
207 branch_name: Some(branch_name),
208 ..Default::default()
209 };
210
211 let config = File::from_paths(Some(&config_path), options).unwrap();
212 assert_eq!(
213 config.string("core", None, "y"),
214 Some(cow_str("hierarchy-branch-override")),
215 "hierarchy branch name match"
216 );
217 }
218}
219
220#[test]
221fn gitdir_tests() {
222 let dir = tempdir().unwrap();120 let dir = tempdir().unwrap();
223 121
224 let config_path = dir.path().join("a");122 let config_path = dir.path().join("a");
git-config/tests/file/from_paths/includes/conditional/onbranch.rs+109−0
@@ -0,0 +1,109 @@
1use crate::file::cow_str;
2use crate::file::from_paths::escape_backslashes;
3use bstr::BString;
4use git_config::file::from_paths;
5use git_ref::FullName;
6use std::convert::TryFrom;
7use std::fs;
8use tempfile::tempdir;
9
10#[test]
11fn mixed() {
12 let dir = tempdir().unwrap();
13 let config_path = dir.path().join("a");
14 let hierarchy_branch_path = dir.path().join("hierarchy_branch");
15 let branch_path = dir.path().join("branch");
16 let another_branch_path = dir.path().join("another branch");
17 fs::write(
18 branch_path.as_path(),
19 "
20[core]
21x = branch-override",
22 )
23 .unwrap();
24
25 fs::write(
26 another_branch_path.as_path(),
27 "
28[core]
29z = another-branch-override",
30 )
31 .unwrap();
32
33 fs::write(
34 hierarchy_branch_path.as_path(),
35 "
36[core]
37y = hierarchy-branch-override",
38 )
39 .unwrap();
40
41 fs::write(
42 config_path.as_path(),
43 format!(
44 r#"
45[core]
46x = 1
47y = 1
48z = 1
49[includeIf "onbranch:foo*"]
50path = {}
51[includeIf "onbranch:br/"]
52path = {}
53[includeIf "onbranch:foo*"]
54path = {}"#,
55 escape_backslashes(&branch_path),
56 escape_backslashes(&hierarchy_branch_path),
57 escape_backslashes(&another_branch_path),
58 ),
59 )
60 .unwrap();
61
62 {
63 let branch_name = FullName::try_from(BString::from("refs/heads/foobar")).unwrap();
64 let branch_name = branch_name.as_ref();
65 let options = from_paths::Options {
66 branch_name: Some(branch_name),
67 ..Default::default()
68 };
69
70 let config = git_config::File::from_paths(Some(&config_path), options).unwrap();
71 assert_eq!(
72 config.string("core", None, "x"),
73 Some(cow_str("branch-override")),
74 "branch name match"
75 );
76 }
77
78 {
79 let branch_name = FullName::try_from(BString::from("refs/heads/foo/bar")).unwrap();
80 let branch_name = branch_name.as_ref();
81 let options = from_paths::Options {
82 branch_name: Some(branch_name),
83 ..Default::default()
84 };
85
86 let config = git_config::File::from_paths(Some(&config_path), options).unwrap();
87 assert_eq!(
88 config.string("core", None, "z"),
89 Some(cow_str("1")),
90 "branch name match"
91 );
92 }
93
94 {
95 let branch_name = FullName::try_from(BString::from("refs/heads/br/one")).unwrap();
96 let branch_name = branch_name.as_ref();
97 let options = from_paths::Options {
98 branch_name: Some(branch_name),
99 ..Default::default()
100 };
101
102 let config = git_config::File::from_paths(Some(&config_path), options).unwrap();
103 assert_eq!(
104 config.string("core", None, "y"),
105 Some(cow_str("hierarchy-branch-override")),
106 "hierarchy branch name match"
107 );
108 }
109}