summaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorDan Davison <dandavison7@gmail.com>2020-06-22 19:26:30 -0400
committerDan Davison <dandavison7@gmail.com>2020-06-23 00:39:09 -0400
commit2567235f0c9ca5b3e6839b3632c1e6dd74853091 (patch)
treec21f893c7ac8612357a2c0657c17085fa01b4279 /src/features
parent0c0c45f78ab8a682ff1d3a3009b541614b4a8cb3 (diff)
Gather features recursively
Diffstat (limited to 'src/features')
-rw-r--r--src/features/mod.rs67
-rw-r--r--src/features/navigate.rs2
2 files changed, 68 insertions, 1 deletions
diff --git a/src/features/mod.rs b/src/features/mod.rs
index 912bbb98..67506ef8 100644
--- a/src/features/mod.rs
+++ b/src/features/mod.rs
@@ -100,6 +100,22 @@ pub mod tests {
}
#[test]
+ fn test_builtin_feature_from_gitconfig() {
+ let git_config_contents = b"
+[delta]
+ navigate = true
+";
+ let git_config_path = "delta__test_builtin_feature_from_gitconfig.gitconfig";
+
+ assert_eq!(
+ make_options(&[], Some(git_config_contents), Some(git_config_path)).features,
+ "navigate"
+ );
+
+ remove_file(git_config_path).unwrap();
+ }
+
+ #[test]
fn test_features_on_command_line_replace_features_in_gitconfig() {
let git_config_contents = b"
[delta]
@@ -152,6 +168,57 @@ pub mod tests {
}
#[test]
+ fn test_recursive_feature_gathering_1() {
+ let git_config_contents = b"
+[delta]
+ features = h g
+
+[delta \"a\"]
+ features = c b
+ diff-highlight = true
+
+[delta \"d\"]
+ features = f e
+ diff-so-fancy = true
+";
+ let git_config_path = "delta__test_feature_collection.gitconfig";
+
+ assert_eq!(
+ make_options(
+ &["--color-only", "--features", "d a"],
+ Some(git_config_contents),
+ Some(git_config_path),
+ )
+ .features,
+ "color-only diff-so-fancy f e d diff-highlight c b a"
+ );
+
+ remove_file(git_config_path).unwrap();
+ }
+
+ #[test]
+ fn test_recursive_feature_gathering_2() {
+ let git_config_contents = b"
+[delta]
+ features = feature-1
+
+[delta \"feature-1\"]
+ features = feature-2 feature-3
+
+[delta \"feature-2\"]
+ features = feature-4
+
+[delta \"feature-4\"]
+ minus-style = blue
+";
+ let git_config_path = "delta__test_recursive_features.gitconfig";
+ let opt = make_options(&["delta"], Some(git_config_contents), Some(git_config_path));
+ assert_eq!(opt.features, "feature-4 feature-2 feature-3 feature-1");
+
+ remove_file(git_config_path).unwrap();
+ }
+
+ #[test]
fn test_main_section() {
let git_config_contents = b"
[delta]
diff --git a/src/features/navigate.rs b/src/features/navigate.rs
index 001c8bc5..8abef729 100644
--- a/src/features/navigate.rs
+++ b/src/features/navigate.rs
@@ -85,7 +85,7 @@ mod tests {
fn test_navigate_activated_by_custom_feature() {
let git_config_contents = b"
[delta \"my-navigate-feature\"]
- navigate = true
+ features = navigate
file-modified-label = \"modified: \"
";
let git_config_path = "delta__test_navigate_activated_by_custom_feature.gitconfig";