Disable pipeline echo (#8292)

# Description

Change behavior of block evaluation to not print result of intermediate
commands.
Previously result of every but last pipeline in a block was printed to
stdout, and last one was returned

![image](https://user-images.githubusercontent.com/17511668/222550110-3f62fbed-432c-4b46-b9b1-4cb45a1f893e.png)
With this change results of intermediate pipelines are discarded after
they finish and the last one is returned as before:

![image](https://user-images.githubusercontent.com/17511668/222550346-f1e74f80-f6b6-4aa3-98d6-888ea4cb4915.png)
Now one should use `print` explicitly to print something to stdout

![image](https://user-images.githubusercontent.com/17511668/222923955-fda0d77b-41b4-4f91-a80f-12b0a1880c05.png)

**Note, that this behavior is not limited to functions!** The scope of
this change are all blocks. All of the below are executed as blocks and
thus exibited this behavior in the same way:

![image](https://user-images.githubusercontent.com/17511668/222924062-342c15de-4273-4bf5-8b39-fe6e3aa96076.png)

With this change outputs for all types of blocks are cleaned:

![image](https://user-images.githubusercontent.com/17511668/222924118-7d51c27e-04bb-43e5-8efe-38b484683bfe.png)


# User-Facing Changes

All types of blocks (function bodies, closures, `if` branches, `for` and
`loop` bodies e.t.c.) no longer print result of intermediate pipelines.

# 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:
Artemiy
2023-03-17 01:53:46 +03:00
committed by GitHub
parent 8543b0789d
commit 19beafa865
11 changed files with 76 additions and 99 deletions

View File

@ -48,7 +48,7 @@ fn treats_dot_dot_as_path_not_range() {
r#"
mkdir temp;
cd temp;
echo (open ../nu_times.csv).name.0 | table;
print (open ../nu_times.csv).name.0 | table;
cd ..;
rmdir temp
"#
@ -385,9 +385,9 @@ fn let_env_hides_variable() {
cwd: ".",
r#"
let-env TESTENVVAR = "hello world"
echo $env.TESTENVVAR
print $env.TESTENVVAR
hide-env TESTENVVAR
echo $env.TESTENVVAR
print $env.TESTENVVAR
"#
);
@ -401,12 +401,12 @@ fn let_env_hides_variable_in_parent_scope() {
cwd: ".",
r#"
let-env TESTENVVAR = "hello world"
echo $env.TESTENVVAR
print $env.TESTENVVAR
do {
hide-env TESTENVVAR
echo $env.TESTENVVAR
print $env.TESTENVVAR
}
echo $env.TESTENVVAR
print $env.TESTENVVAR
"#
);
@ -446,14 +446,14 @@ fn unlet_variable_in_parent_scope() {
cwd: ".",
r#"
let-env DEBUG = "1"
echo $env.DEBUG
print $env.DEBUG
do {
let-env DEBUG = "2"
echo $env.DEBUG
print $env.DEBUG
hide-env DEBUG
echo $env.DEBUG
print $env.DEBUG
}
echo $env.DEBUG
print $env.DEBUG
"#
);
@ -477,7 +477,7 @@ fn proper_shadow_let_env_aliases() {
let actual = nu!(
cwd: ".",
r#"
let-env DEBUG = "true"; echo $env.DEBUG | table; do { let-env DEBUG = "false"; echo $env.DEBUG } | table; echo $env.DEBUG
let-env DEBUG = "true"; print $env.DEBUG | table; do { let-env DEBUG = "false"; print $env.DEBUG } | table; print $env.DEBUG
"#
);
assert_eq!(actual.out, "truefalsetrue");
@ -526,7 +526,7 @@ fn proper_shadow_load_env_aliases() {
let actual = nu!(
cwd: ".",
r#"
let-env DEBUG = "true"; echo $env.DEBUG | table; do { echo {DEBUG: "false"} | load-env; echo $env.DEBUG } | table; echo $env.DEBUG
let-env DEBUG = "true"; print $env.DEBUG | table; do { echo {DEBUG: "false"} | load-env; print $env.DEBUG } | table; print $env.DEBUG
"#
);
assert_eq!(actual.out, "truefalsetrue");
@ -576,7 +576,7 @@ fn proper_shadow_let_aliases() {
let actual = nu!(
cwd: ".",
r#"
let DEBUG = false; echo $DEBUG | table; do { let DEBUG = true; echo $DEBUG } | table; echo $DEBUG
let DEBUG = false; print $DEBUG | table; do { let DEBUG = true; print $DEBUG } | table; print $DEBUG
"#
);
assert_eq!(actual.out, "falsetruefalse");