diff options
author | Andrew Gallant <jamslam@gmail.com> | 2019-01-26 15:42:55 -0500 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2019-01-26 15:44:49 -0500 |
commit | f3164f2615ce18d3ea7b5ce122dfe2a381d1b3f4 (patch) | |
tree | dc67e0cfec9a55236526ee9dac0aac96255dca17 /tests | |
parent | 31d3e241306f305c1cb94e1882511da2b48dcd36 (diff) |
exit: tweak exit status logic
This changes how ripgrep emit exit status codes. In particular, any error
that occurs while searching will now cause ripgrep to emit a `2` exit
code, where as it previously would emit either a `0` or a `1` code based
on whether it matched or not. That is, ripgrep would only emit a `2` exit
code for a catastrophic error.
This tweak includes additional logic that GNU grep adheres to, which seems
like good sense. Namely, if -q/--quiet is given, and an error occurs and
a match occurs, then ripgrep will emit a `0` exit code.
Closes #1159
Diffstat (limited to 'tests')
-rw-r--r-- | tests/regression.rs | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/regression.rs b/tests/regression.rs index d547c7e5..15a3bb46 100644 --- a/tests/regression.rs +++ b/tests/regression.rs @@ -593,10 +593,47 @@ rgtest!(r1130, |dir: Dir, mut cmd: TestCommand| { }); // See: https://github.com/BurntSushi/ripgrep/issues/1159 -rgtest!(r1159, |_: Dir, mut cmd: TestCommand| { +rgtest!(r1159_invalid_flag, |_: Dir, mut cmd: TestCommand| { cmd.arg("--wat").assert_exit_code(2); }); +// See: https://github.com/BurntSushi/ripgrep/issues/1159 +rgtest!(r1159_exit_status, |dir: Dir, _: TestCommand| { + dir.create("foo", "test"); + + // search with a match gets 0 exit status. + let mut cmd = dir.command(); + cmd.arg("test").assert_exit_code(0); + + // search with --quiet and a match gets 0 exit status. + let mut cmd = dir.command(); + cmd.arg("-q").arg("test").assert_exit_code(0); + + // search with a match and an error gets 2 exit status. + let mut cmd = dir.command(); + cmd.arg("test").arg("no-file").assert_exit_code(2); + + // search with a match in --quiet mode and an error gets 0 exit status. + let mut cmd = dir.command(); + cmd.arg("-q").arg("test").arg("foo").arg("no-file").assert_exit_code(0); + + // search with no match gets 1 exit status. + let mut cmd = dir.command(); + cmd.arg("nada").assert_exit_code(1); + + // search with --quiet and no match gets 1 exit status. + let mut cmd = dir.command(); + cmd.arg("-q").arg("nada").assert_exit_code(1); + + // search with no match and an error gets 2 exit status. + let mut cmd = dir.command(); + cmd.arg("nada").arg("no-file").assert_exit_code(2); + + // search with no match in --quiet mode and an error gets 2 exit status. + let mut cmd = dir.command(); + cmd.arg("-q").arg("nada").arg("foo").arg("no-file").assert_exit_code(2); +}); + // See: https://github.com/BurntSushi/ripgrep/issues/1163 rgtest!(r1163, |dir: Dir, mut cmd: TestCommand| { dir.create("bom.txt", "\u{FEFF}test123\ntest123"); |