diff options
author | Mika Dede <xervondev@gmail.com> | 2018-12-01 13:31:33 +0100 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2019-01-22 21:37:23 -0500 |
commit | a7f2d482342eb2250b5a32ee03a8fe16990228dc (patch) | |
tree | 17ae6c62666162da2f0bbb1c8d360910ec609d30 /grep-printer | |
parent | 57500ad01381f8c4ed6436af627680969c6e2de2 (diff) |
printer: fix path handling in summarizer
This commit fixes a bug where both of the following commands always
reported an error:
rg --files-with-matches foo file
rg --files-without-match foo file
In particular, the printer was erroneously respecting the `path` option
even the the summary kind was `PathWithMatch` or `PathWithoutMatch`. The
documented behavior is that those summary kinds always require a path,
and thus, the `path` option has no effect. We fix this by correcting the
case analysis.
This also fixes a bug where the exit code for `--files-without-match`
was not set correctly. We update the printer's `has_match` method to
report the correct value.
Fixes #1106, Closes #1130
Diffstat (limited to 'grep-printer')
-rw-r--r-- | grep-printer/src/summary.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/grep-printer/src/summary.rs b/grep-printer/src/summary.rs index a63dbd3f..deb7e609 100644 --- a/grep-printer/src/summary.rs +++ b/grep-printer/src/summary.rs @@ -403,7 +403,7 @@ impl<W: WriteColor> Summary<W> { where M: Matcher, P: ?Sized + AsRef<Path>, { - if !self.config.path { + if !self.config.path && !self.config.kind.requires_path() { return self.sink(matcher); } let stats = @@ -477,7 +477,10 @@ impl<'p, 's, M: Matcher, W: WriteColor> SummarySink<'p, 's, M, W> { /// This is unaffected by the result of searches before the previous /// search. pub fn has_match(&self) -> bool { - self.match_count > 0 + match self.summary.config.kind { + SummaryKind::PathWithoutMatch => self.match_count == 0, + _ => self.match_count > 0, + } } /// If binary data was found in the previous search, this returns the |