forked from extern/nushell
redirection: fix internal commands error with o+e>
redirection (#10816)
# Description Currently the following command is broken: ```nushell echo a o+e> 1.txt ``` It's because we don't redirect output of `echo` command. This pr is trying to fix it.
This commit is contained in:
parent
d93315d8f5
commit
f35741d50e
@ -216,12 +216,14 @@ fn redirect_support_variable() {
|
||||
|
||||
assert!(output.out.contains("hello"));
|
||||
|
||||
let output = nu!(
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"let x = 'tmp_file'; echo 'hello' out+err> $x; open tmp_file"
|
||||
"let x = 'tmp_file'; echo 'hello there' out+err> $x; open tmp_file"
|
||||
);
|
||||
|
||||
assert!(output.out.contains("hello"));
|
||||
// check for stdout redirection file.
|
||||
let expected_out_file = dirs.test().join("tmp_file");
|
||||
let actual = file_contents(expected_out_file);
|
||||
assert!(actual.contains("hello there"));
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -925,15 +925,18 @@ fn eval_element_with_input(
|
||||
*is_subexpression,
|
||||
)?
|
||||
}
|
||||
_ => eval_element_with_input(
|
||||
engine_state,
|
||||
stack,
|
||||
&PipelineElement::Expression(*cmd_span, cmd_exp.clone()),
|
||||
input,
|
||||
redirect_stdout,
|
||||
redirect_stderr,
|
||||
)
|
||||
.map(|x| x.0)?,
|
||||
_ => {
|
||||
// we need to redirect output, so the result can be saved and pass to `save` command.
|
||||
eval_element_with_input(
|
||||
engine_state,
|
||||
stack,
|
||||
&PipelineElement::Expression(*cmd_span, cmd_exp.clone()),
|
||||
input,
|
||||
true,
|
||||
redirect_stderr,
|
||||
)
|
||||
.map(|x| x.0)?
|
||||
}
|
||||
};
|
||||
eval_element_with_input(
|
||||
engine_state,
|
||||
|
Loading…
Reference in New Issue
Block a user