don't expand tilde if we quote external arguments (#7711)

# Description

As title
Fixes: #7673
Fixes: #4205
Also possiblely fixes: https://github.com/nushell/nushell/issues/6993

# User-Facing Changes

Before:
```
> ^echo "~"
/Users/ttt
```

After:
```
> ^echo "~"
~
```
# 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:
WindSoilder 2023-01-12 08:14:19 +08:00 committed by GitHub
parent d4d28ab796
commit 5419e8ae9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 3 deletions

View File

@ -600,9 +600,11 @@ impl ExternalCommand {
span: arg.span, span: arg.span,
}; };
arg.item = nu_path::expand_tilde(arg.item) if !keep_raw {
.to_string_lossy() arg.item = nu_path::expand_tilde(arg.item)
.to_string(); .to_string_lossy()
.to_string();
}
let cwd = PathBuf::from(cwd); let cwd = PathBuf::from(cwd);

View File

@ -201,6 +201,17 @@ fn external_command_escape_args() {
}) })
} }
#[test]
fn external_command_not_expand_tilde_with_quotes() {
Playground::setup(
"external command not expand tilde with quotes",
|dirs, _| {
let actual = nu!(cwd: dirs.test(), pipeline(r#"nu --testbin nonu "~""#));
assert_eq!(actual.out, r#"~"#);
},
)
}
#[cfg(windows)] #[cfg(windows)]
#[test] #[test]
fn explicit_glob_windows() { fn explicit_glob_windows() {