Bubble up errors passed to complete (#11313)

Errors passed in `PipelineData::Value` get thrown in `complete` now.

Also added two simple tests for the command.

Fix #11187
Fix #10204
This commit is contained in:
Andrej Kolchin 2023-12-16 15:07:08 +00:00 committed by GitHub
parent 7d5bd0d6be
commit 020e121391
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 0 deletions

View File

@ -101,6 +101,8 @@ impl Command for Complete {
Ok(Value::record(record, call.head).into_pipeline_data())
}
// bubble up errors from the previous command
PipelineData::Value(Value::Error { error, .. }, _) => Err(*error),
_ => Err(ShellError::GenericError {
error: "Complete only works with external streams".into(),
msg: "complete only works on external streams".into(),

View File

@ -0,0 +1,17 @@
use nu_test_support::nu;
#[test]
fn basic() {
let actual = nu!(r#"
(^echo a | complete) == {stdout: "a\n", exit_code: 0}
"#);
assert_eq!(actual.out, "true");
}
#[test]
fn error() {
let actual = nu!("do { not-found } | complete");
assert!(actual.err.contains("executable was not found"));
}

View File

@ -7,6 +7,7 @@ mod break_;
mod cal;
mod cd;
mod compact;
mod complete;
mod config_env_default;
mod config_nu_default;
mod continue_;