Skip to content

Commit

Permalink
ripgrep: use exit code 2 to indicate error
Browse files Browse the repository at this point in the history
Exit code 1 was shared to indicate both "no results" and "error." Use
status code 2 to indicate errors, similar to grep's behavior.

Fixes #948 

PR #954
  • Loading branch information
sirreal authored and BurntSushi committed Jun 19, 2018
1 parent 223d7d9 commit ca23a17
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 10 deletions.
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ fn main() {
Ok(_) => process::exit(0),
Err(err) => {
eprintln!("{}", err);
process::exit(1);
process::exit(2);
}
}
}
Expand Down
30 changes: 30 additions & 0 deletions tests/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2191,3 +2191,33 @@ fn type_list() {
// This can change over time, so just make sure we print something.
assert!(!lines.is_empty());
}

// See: https://github.com/BurntSushi/ripgrep/issues/948
sherlock!(
exit_code_match_success,
".",
".",
|wd: WorkDir, mut cmd: Command| {
wd.assert_exit_code(0, &mut cmd);
}
);

// See: https://github.com/BurntSushi/ripgrep/issues/948
sherlock!(
exit_code_no_match,
"6d28e48b5224a42b167e{10}",
".",
|wd: WorkDir, mut cmd: Command| {
wd.assert_exit_code(1, &mut cmd);
}
);

// See: https://github.com/BurntSushi/ripgrep/issues/948
sherlock!(
exit_code_error,
"*",
".",
|wd: WorkDir, mut cmd: Command| {
wd.assert_exit_code(2, &mut cmd);
}
);
37 changes: 28 additions & 9 deletions tests/workdir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -261,18 +261,37 @@ impl WorkDir {
pub fn assert_err(&self, cmd: &mut process::Command) {
let o = cmd.output().unwrap();
if o.status.success() {
panic!("\n\n===== {:?} =====\n\
command succeeded but expected failure!\
\n\ncwd: {}\
\n\nstatus: {}\
\n\nstdout: {}\n\nstderr: {}\
\n\n=====\n",
cmd, self.dir.display(), o.status,
String::from_utf8_lossy(&o.stdout),
String::from_utf8_lossy(&o.stderr));
panic!(
"\n\n===== {:?} =====\n\
command succeeded but expected failure!\
\n\ncwd: {}\
\n\nstatus: {}\
\n\nstdout: {}\n\nstderr: {}\
\n\n=====\n",
cmd,
self.dir.display(),
o.status,
String::from_utf8_lossy(&o.stdout),
String::from_utf8_lossy(&o.stderr)
);
}
}

/// Runs the given command and asserts that its exit code matches expected exit code.
pub fn assert_exit_code(&self, expected_code: i32, cmd: &mut process::Command) {
let code = cmd.status().unwrap().code().unwrap();

assert_eq!(
expected_code, code,
"\n\n===== {:?} =====\n\
expected exit code did not match\
\n\nexpected: {}\
\n\nfound: {}\
\n\n=====\n",
cmd, expected_code, code
);
}

/// Runs the given command and asserts that something was printed to
/// stderr.
pub fn assert_non_empty_stderr(&self, cmd: &mut process::Command) {
Expand Down

0 comments on commit ca23a17

Please sign in to comment.