1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
/// Activate diff navigation: use n to jump forwards and N to jump backwards. To change the
/// file labels used see --file-modified-label, --file-removed-label, --file-added-label,
/// --file-renamed-label.
use crate::features::FeatureValueFunction;
pub fn make_feature() -> Vec<(String, FeatureValueFunction)> {
builtin_feature!([
(
"navigate",
bool,
None,
_opt => true
),
(
"file-modified-label",
String,
None,
_opt => "Δ"
)
])
}
#[cfg(test)]
mod tests {
use std::fs::remove_file;
use crate::features;
#[test]
fn test_navigate_with_overriden_key_in_main_section() {
let git_config_contents = b"
[delta]
features = navigate
file-modified-label = \"modified: \"
";
let git_config_path = "delta__test_navigate_with_overriden_key_in_main_section.gitconfig";
assert_eq!(features::tests::make_config(&[], None, None).file_modified_label, "");
assert_eq!(
features::tests::make_config(&["--features", "navigate"], None, None)
.file_modified_label,
"Δ"
);
assert_eq!(
features::tests::make_config(&[], Some(git_config_contents), Some(git_config_path))
.file_modified_label,
"modified: "
);
remove_file(git_config_path).unwrap();
}
#[test]
fn test_navigate_with_overriden_key_in_custom_navigate_section() {
let git_config_contents = b"
[delta]
features = navigate
[delta \"navigate\"]
file-modified-label = \"modified: \"
";
let git_config_path =
"delta__test_navigate_with_overriden_key_in_custom_navigate_section.gitconfig";
assert_eq!(
features::tests::make_config(&[], None, None).file_modified_label,
""
);
assert_eq!(
features::tests::make_config(&["--features", "navigate"], None, None)
.file_modified_label,
"Δ"
);
assert_eq!(
features::tests::make_config(&[], Some(git_config_contents), Some(git_config_path))
.file_modified_label,
"modified: "
);
remove_file(git_config_path).unwrap();
}
#[test]
fn test_navigate_activated_by_custom_feature() {
let git_config_contents = b"
[delta \"my-navigate-feature\"]
features = navigate
file-modified-label = \"modified: \"
";
let git_config_path = "delta__test_navigate_activated_by_custom_feature.gitconfig";
assert_eq!(
features::tests::make_config(&[], Some(git_config_contents), Some(git_config_path))
.file_modified_label,
""
);
assert_eq!(
features::tests::make_config(
&["--features", "my-navigate-feature"],
Some(git_config_contents),
Some(git_config_path)
)
.file_modified_label,
"modified: "
);
remove_file(git_config_path).unwrap();
}
}
|