cli: map bare io::Error to user error

Suppose the error is emitted from Ui or external command, I don't think
io::Error in CLI is an internal error.
This commit is contained in:
Yuya Nishihara 2024-01-31 23:57:35 +09:00
parent ec0f2753ae
commit 8f118074fe
2 changed files with 3 additions and 3 deletions

View file

@ -134,7 +134,7 @@ impl From<std::io::Error> for CommandError {
CommandError::BrokenPipe
} else {
// TODO: Record the error as a chained cause
CommandError::InternalError(format!("I/O error: {err}"))
user_error(format!("I/O error: {err}"))
}
}
}

View file

@ -146,10 +146,10 @@ fn test_next_fails_on_branching_children_no_stdin() {
test_env.jj_cmd_ok(&repo_path, &["co", "@--"]);
// Try to advance the working copy commit.
let assert = test_env.jj_cmd(&repo_path, &["next"]).assert().code(255);
let assert = test_env.jj_cmd(&repo_path, &["next"]).assert().code(1);
let stderr = test_env.normalize_output(&get_stderr_string(&assert));
insta::assert_snapshot!(stderr,@r###"
Internal error: I/O error: Cannot prompt for input since the output is not connected to a terminal
Error: I/O error: Cannot prompt for input since the output is not connected to a terminal
"###);
}