diff options
author | Dan Davison <dandavison7@gmail.com> | 2020-06-22 19:26:30 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2020-06-23 00:39:09 -0400 |
commit | 2567235f0c9ca5b3e6839b3632c1e6dd74853091 (patch) | |
tree | c21f893c7ac8612357a2c0657c17085fa01b4279 /src/features | |
parent | 0c0c45f78ab8a682ff1d3a3009b541614b4a8cb3 (diff) |
Gather features recursively
Diffstat (limited to 'src/features')
-rw-r--r-- | src/features/mod.rs | 67 | ||||
-rw-r--r-- | src/features/navigate.rs | 2 |
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"; |