A set of fixes for stderr redirect (#7219)

# Description

This is a set of fixes to `err>` to make it work a bit more predictably.

I've also revised the tests, which accidentally tested the wrong thing
for redirection, but should be more correct now.

# User-Facing Changes

_(List of all changes that impact the user experience here. This helps
us keep track of breaking changes.)_

# Tests + Formatting

Don't forget to add tests that cover your changes.

Make sure you've run and fixed any issues with these commands:

- `cargo fmt --all -- --check` to check standard code formatting (`cargo
fmt --all` applies these changes)
- `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A
clippy::needless_collect` to check that you're using the standard code
style
- `cargo test --workspace` to check that all tests pass

# After Submitting

If your PR had any user-facing changes, update [the
documentation](https://github.com/nushell/nushell.github.io) after the
PR is merged, if necessary. This will help us keep the docs up to date.
This commit is contained in:
JT
2022-11-24 16:58:15 +13:00
committed by GitHub
parent 651e86a3c0
commit 8cca447e8c
9 changed files with 118 additions and 51 deletions

View File

@ -9,6 +9,8 @@ fn capture_errors_works() {
"#
));
eprintln!("actual.err: {:?}", actual.err);
assert!(actual.err.contains("column_not_found"));
}
@ -65,7 +67,7 @@ fn ignore_shell_errors_works_for_external_with_semicolon() {
let actual = nu!(
cwd: ".", pipeline(
r#"
do -s { fail }; `text`
do -s { open asdfasdf.txt }; "text"
"#
));

View File

@ -323,7 +323,7 @@ fn parse_string_as_script() {
"#
));
println!("the out put is {}", actual.err);
println!("the output is {}", actual.err);
assert!(actual.err.contains("Failed to parse content"));
})
}

View File

@ -7,10 +7,10 @@ fn redirect_err() {
Playground::setup("redirect_err_test", |dirs, _sandbox| {
let output = nu!(
cwd: dirs.test(),
"cat asdfasdfasdf.txt err> a; cat a"
"cat asdfasdfasdf.txt err> a.txt; cat a.txt"
);
assert!(output.err.contains("asdfasdfasdf.txt"));
assert!(output.out.contains("asdfasdfasdf.txt"));
})
}
@ -20,10 +20,10 @@ fn redirect_err() {
Playground::setup("redirect_err_test", |dirs, _sandbox| {
let output = nu!(
cwd: dirs.test(),
"type asdfasdfasdf.txt err> a; type a"
"dir missingapplication err> a; (open a | size).bytes >= 16"
);
assert!(output.err.contains("asdfasdfasdf.txt"));
assert!(output.out.contains("true"));
})
}
@ -36,7 +36,7 @@ fn redirect_outerr() {
"cat asdfasdfasdf.txt out+err> a; cat a"
);
assert!(output.err.contains("asdfasdfasdf.txt"));
assert!(output.out.contains("asdfasdfasdf.txt"));
})
}
@ -46,10 +46,10 @@ fn redirect_outerr() {
Playground::setup("redirect_outerr_test", |dirs, _sandbox| {
let output = nu!(
cwd: dirs.test(),
"type asdfasdfasdf.txt out+err> a; type a"
"dir missingapplication out+err> a; (open a | size).bytes >= 16"
);
assert!(output.err.contains("asdfasdfasdf.txt"));
assert!(output.out.contains("true"));
})
}