From d73a75d6cd82068252c35c5718900b6a1acb296e Mon Sep 17 00:00:00 2001 From: dana Date: Mon, 27 Nov 2017 12:50:24 -0600 Subject: Omit context separators when using a contextless option like -c or -l Fixes #693 --- src/args.rs | 14 ++++++++------ tests/tests.rs | 19 +++++++++++++++++++ 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> { - 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"); -- cgit v1.2.3