summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordana <dana@dana.is>2017-11-27 12:50:24 -0600
committerAndrew Gallant <jamslam@gmail.com>2017-11-29 12:55:42 -0500
commitd73a75d6cd82068252c35c5718900b6a1acb296e (patch)
tree7672d81e02a9e8d3e742cbeda133223594b1bf26
parent7ae1f373c2b899c7db5f8106dec4d7423b1d8364 (diff)
Omit context separators when using a contextless option like -c or -l
Fixes #693
-rw-r--r--src/args.rs14
-rw-r--r--tests/tests.rs19
2 files changed, 27 insertions, 6 deletions
diff --git a/src/args.rs b/src/args.rs
index 82f7ee66..106762c4 100644
--- a/src/args.rs
+++ b/src/args.rs
@@ -153,14 +153,16 @@ impl Args {
/// Retrieve the configured file separator.
pub fn file_separator(&self) -> Option<Vec<u8>> {
- let use_heading_sep =
- self.heading
- && !self.count
- && !self.files_with_matches
- && !self.files_without_matches;
+ let contextless =
+ self.count
+ || self.files_with_matches
+ || self.files_without_matches;
+ let use_heading_sep = self.heading && !contextless;
+
if use_heading_sep {
Some(b"".to_vec())
- } else if self.before_context > 0 || self.after_context > 0 {
+ } else if !contextless
+ && (self.before_context > 0 || self.after_context > 0) {
Some(self.context_separator.clone())
} else {
None
diff --git a/tests/tests.rs b/tests/tests.rs
index 2549ef27..395514b2 100644
--- a/tests/tests.rs
+++ b/tests/tests.rs
@@ -1799,6 +1799,25 @@ fn regression_568_leading_hyphen_option_arguments() {
assert_eq!(lines, "foo -n -baz\n");
}
+// See: https://github.com/BurntSushi/ripgrep/issues/693
+#[test]
+fn regression_693_context_option_in_contextless_mode() {
+ let wd = WorkDir::new("regression_693_context_option_in_contextless_mode");
+
+ wd.create("foo", "xyz\n");
+ wd.create("bar", "xyz\n");
+
+ let mut cmd = wd.command();
+ cmd.arg("-C1").arg("-c").arg("--sort-files").arg("xyz");
+
+ let lines: String = wd.stdout(&mut cmd);
+ let expected = "\
+bar:1
+foo:1
+";
+ assert_eq!(lines, expected);
+}
+
#[test]
fn type_list() {
let wd = WorkDir::new("type_list");