mirror of
https://github.com/uutils/grep.git
synced 2026-06-10 16:15:11 -07:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0263b2aa6 | ||
|
|
399d2d1192 |
+6
-1
@@ -118,7 +118,12 @@ impl<'a> Searcher<'a> {
|
||||
.flush()
|
||||
.map_err_context(|| "(standard output)".to_string())?;
|
||||
|
||||
if self.had_error {
|
||||
// With -q, a match yields exit status 0 even if an error (e.g. a
|
||||
// missing file) occurred earlier: GNU exits as soon as a line is
|
||||
// selected, so the error never affects the status.
|
||||
if self.config.quiet && self.any_match {
|
||||
Ok(())
|
||||
} else if self.had_error {
|
||||
Err(ExitCode::new(2))
|
||||
} else if self.any_match {
|
||||
Ok(())
|
||||
|
||||
@@ -126,6 +126,28 @@ fn ere_invalid_pattern_is_error() {
|
||||
.stderr_contains("invalid pattern");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn quiet_match_overrides_file_error() {
|
||||
// With -q, a match makes grep exit 0 even if an earlier file could not be
|
||||
// opened. Without -q the missing file still yields exit 2, and -q with no
|
||||
// match keeps the error status.
|
||||
let (_s, mut c) = ucmd();
|
||||
c.args(&["-q", "abc", "no-such-file", "-"])
|
||||
.pipe_in("abcd\n")
|
||||
.succeeds()
|
||||
.no_output();
|
||||
|
||||
let (_s, mut c) = ucmd();
|
||||
c.args(&["abc", "no-such-file", "-"])
|
||||
.pipe_in("abcd\n")
|
||||
.fails_with_code(2);
|
||||
|
||||
let (_s, mut c) = ucmd();
|
||||
c.args(&["-q", "zzz", "no-such-file", "-"])
|
||||
.pipe_in("abcd\n")
|
||||
.fails_with_code(2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn initial_tab_skips_empty_lines() {
|
||||
// -T aligns content with a tab, but GNU omits the tab for an empty line
|
||||
|
||||
Reference in New Issue
Block a user