summaryrefslogtreecommitdiffstats
path: root/grep-printer
diff options
context:
space:
mode:
authorMika Dede <xervondev@gmail.com>2018-12-01 13:31:33 +0100
committerAndrew Gallant <jamslam@gmail.com>2019-01-22 21:37:23 -0500
commita7f2d482342eb2250b5a32ee03a8fe16990228dc (patch)
tree17ae6c62666162da2f0bbb1c8d360910ec609d30 /grep-printer
parent57500ad01381f8c4ed6436af627680969c6e2de2 (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.rs7
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