1
0
mirror of https://github.com/nushell/nushell.git synced 2025-03-30 01:28:11 +01:00
nushell/crates/nu-command/tests/commands
Wind f7d647ac3c
open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation ()
# Description
This is a follow up to
https://github.com/nushell/nushell/pull/11621#issuecomment-1937484322

Also Fixes:  

## About the code change
It applys the same logic when we pass variables to external commands:


0487e9ffcb/crates/nu-command/src/system/run_external.rs (L162-L170)

That is: if user input dynamic things(like variables, sub-expression, or
string interpolation), it returns a quoted `NuPath`, then user input
won't be globbed
 
# User-Facing Changes
Given two input files: `a*c.txt`, `abc.txt`

* `let f = "a*c.txt"; rm $f` will remove one file: `a*c.txt`. 
~* `let f = "a*c.txt"; rm --glob $f` will remove `a*c.txt` and
`abc.txt`~
* `let f: glob = "a*c.txt"; rm $f` will remove `a*c.txt` and `abc.txt`

## Rules about globbing with *variable*
Given two files: `a*c.txt`, `abc.txt`
| Cmd Type | example | Result |
| ----- | ------------------ | ------ |
| builtin | let f = "a*c.txt"; rm $f | remove `a*c.txt` |
| builtin | let f: glob = "a*c.txt"; rm $f | remove `a*c.txt` and
`abc.txt`
| builtin | let f = "a*c.txt"; rm ($f \| into glob) | remove `a*c.txt`
and `abc.txt`
| custom | def crm [f: glob] { rm $f }; let f = "a*c.txt"; crm $f |
remove `a*c.txt` and `abc.txt`
| custom | def crm [f: glob] { rm ($f \| into string) }; let f =
"a*c.txt"; crm $f | remove `a*c.txt`
| custom | def crm [f: string] { rm $f }; let f = "a*c.txt"; crm $f |
remove `a*c.txt`
| custom | def crm [f: string] { rm $f }; let f = "a*c.txt"; crm ($f \|
into glob) | remove `a*c.txt` and `abc.txt`

In general, if a variable is annotated with `glob` type, nushell will
expand glob pattern. Or else, we need to use `into | glob` to expand
glob pattern

# Tests + Formatting
Done

# After Submitting
I think `str glob-escape` command will be no-longer required. We can
remove it.
2024-02-23 09:17:09 +08:00
..
assignment Match ++= capabilities with ++ () 2023-12-07 05:46:37 +08:00
conversions Fix 9156 endian consistency () 2023-08-24 07:08:58 -05:00
database Remove Record::from_raw_cols_vals_unchecked () 2024-02-18 14:20:22 +02:00
date fix format date based on users locale () 2024-02-20 11:08:49 -06:00
hash_ Clean up tests containing unnecessary cwd: tokens () 2023-07-17 18:43:51 +02:00
math Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
move_ open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
network Allow http commands' automatic redirect-following to be disabled () 2023-12-28 15:26:34 +08:00
path check existance w/o traversing symlinks () 2024-01-14 07:33:33 +08:00
platform refactor: move du from platform to filesystem () 2024-02-15 06:55:21 +08:00
query Feature cleanup () 2022-11-22 16:58:11 -08:00
random remove size command in favor of str stats () 2023-11-17 06:49:19 +08:00
skip Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
str_ use to_lowercase in str downcase () 2023-10-27 19:16:17 +02:00
take Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
url Allow 'url join' to print username without password () 2024-01-31 16:52:23 -06:00
alias.rs feat: Add default docs for aliases, generated from the command they point to () 2023-12-04 20:56:46 +02:00
all.rs Removes unnecessary cwd and pipeline from various tests () 2023-05-17 18:55:26 -05:00
any.rs Removes unnecessary cwd and pipeline from various tests () 2023-05-17 18:55:26 -05:00
append.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
break_.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
cal.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
cd.rs bump rust-toolchain to 1.72.1 () 2023-11-16 15:14:45 -06:00
compact.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
complete.rs Fix the test which fails on windows () 2024-01-03 07:22:43 -06:00
config_env_default.rs Command: Add config env/nu --default to print defaults () 2023-09-25 08:00:59 -05:00
config_nu_default.rs Command: Add config env/nu --default to print defaults () 2023-09-25 08:00:59 -05:00
continue_.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
cp.rs Send only absolute paths to uu_cp () 2023-11-17 07:30:57 +08:00
debug_info.rs Make debug info lazy () 2023-10-24 12:48:05 -05:00
def.rs Remove --flag: bool support () 2024-01-25 14:16:49 +08:00
default.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
detect_columns.rs Use long options for string () 2023-10-19 22:08:09 +02:00
do_.rs Replace bash with POSIX sh in tests () 2023-12-15 14:53:19 +08:00
drop.rs Refactor drop columns to fix issues () 2023-11-09 13:51:46 +01:00
du.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
each.rs REFACTOR: move the 0% commands to nu-cmd-extra () 2023-07-06 08:31:31 -07:00
echo.rs Change echo to print when not redirected () 2023-09-13 06:35:01 +12:00
empty.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
error_make.rs Refactor error make () 2023-11-03 10:09:33 -05:00
every.rs fix(nu-command/tests): further remove unnecessary pipeline() and cwd() () 2023-04-07 14:09:55 -07:00
exec.rs Allow spreading arguments to commands () 2023-12-28 15:43:20 +08:00
export_def.rs Removes unnecessary cwd and pipeline from various tests () 2023-05-17 18:55:26 -05:00
fill.rs Removes unnecessary cwd and pipeline from various tests () 2023-05-17 18:55:26 -05:00
find.rs Highlights find upgrade () 2024-01-30 08:06:20 -06:00
first.rs remove --column from length command and remove record processing () 2023-08-23 16:03:26 -05:00
flatten.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
for_.rs Change echo to print when not redirected () 2023-09-13 06:35:01 +12:00
format.rs update format signature to allow record to be passed in () 2023-08-02 10:57:58 -05:00
generate.rs rename unfold to generate () 2023-10-19 09:30:34 -05:00
get.rs Fix get -i ignoring errors for only the first cellpath () 2023-12-02 11:01:08 -06:00
glob.rs fix clippy () 2023-10-10 03:31:15 +13:00
group_by.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
headers.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
help.rs Tests: clean up unnecessary use of pipeline() () 2023-08-31 23:10:29 +02:00
histogram.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
insert.rs Fix replacement closures for update, insert, and upsert () 2023-12-09 15:22:45 -06:00
inspect.rs throw an error instead of a panic if no input is provided to inspect () 2023-05-22 13:54:04 -05:00
into_datetime.rs add table -> table to into datetime () 2023-07-23 20:14:51 +02:00
into_filesize.rs Update internal use of decimal to float () 2023-09-13 23:53:55 +02:00
into_int.rs fix some new chrono warnings () 2023-09-15 15:46:25 -05:00
join.rs Removes unnecessary cwd and pipeline from various tests () 2023-05-17 18:55:26 -05:00
last.rs remove --column from length command and remove record processing () 2023-08-23 16:03:26 -05:00
length.rs Spanned Value step 1: span all value cases () 2023-08-25 08:48:05 +12:00
let_.rs Support redirect stderr and stdout+stderr with a pipe () 2024-02-09 01:30:46 +08:00
lines.rs fix panic with lines on an error () 2023-08-09 14:12:58 +02:00
loop_.rs Change echo to print when not redirected () 2023-09-13 06:35:01 +12:00
ls.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
match_.rs Allow comments in match blocks () 2024-02-08 07:22:42 +08:00
merge.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
mkdir.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
mktemp.rs Add mktemp command () 2023-11-17 19:30:53 -06:00
mod.rs Fix panic in seq date () 2024-02-17 10:51:20 +02:00
mut_.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
nu_check.rs Use long options for string () 2023-10-19 22:08:09 +02:00
open.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
par_each.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
parse.rs Clippy in tests () 2023-09-16 21:49:10 +02:00
prepend.rs Fix warnings and old names () 2023-03-15 18:54:55 +13:00
print.rs Clean up tests containing unnecessary cwd: tokens () 2023-07-17 18:43:51 +02:00
range.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
redirection.rs make stderr works for failed external command () 2024-02-21 21:15:05 +08:00
reduce.rs Add long options for filters () 2023-10-08 13:12:46 +02:00
reject.rs Remove list of cell path support for select and reject () 2024-02-15 07:49:48 -06:00
rename.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
return_.rs allow early return outside of main () 2023-09-28 18:49:42 +02:00
reverse.rs Clean up tests containing unnecessary cwd: tokens () 2023-07-17 18:43:51 +02:00
rm.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
roll.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
rotate.rs Fix panic in rotate; Add safe record creation function () 2024-02-03 13:23:16 +02:00
run_external.rs Refactor tests (using cococo instead of ^echo) () 2024-01-05 11:40:56 +08:00
save.rs Fix an infinite loop if the input stream and output stream are the same () 2023-12-24 23:29:23 +08:00
select.rs Remove list of cell path support for select and reject () 2024-02-15 07:49:48 -06:00
semicolon.rs Slim down tests () 2023-04-28 13:25:44 +02:00
seq_char.rs Slim down tests () 2023-04-28 13:25:44 +02:00
seq_date.rs Fix panic in seq date () 2024-02-17 10:51:20 +02:00
seq.rs Slim down tests () 2023-04-28 13:25:44 +02:00
sort_by.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
sort.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
source_env.rs Tests: clean up unnecessary use of pipeline() () 2023-08-31 23:10:29 +02:00
split_by.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
split_column.rs Use long options for string () 2023-10-19 22:08:09 +02:00
split_row.rs Simplify rawstrings in tests () 2023-09-01 00:08:27 +02:00
table.rs Fix () 2023-11-16 05:28:54 -06:00
terminal.rs Add is-terminal to determine if stdin/out/err are a terminal () 2023-11-21 20:48:39 -06:00
to_text.rs Make to text stream ListStreams () 2022-12-22 16:38:07 -08:00
touch.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00
transpose.rs Slim down tests () 2023-04-28 13:25:44 +02:00
try_.rs Enforce call stack depth limit for all calls () 2024-02-08 06:42:24 +08:00
ucp.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation () 2024-02-23 09:17:09 +08:00
ulimit.rs FreeBSD compatibility patches () 2024-02-17 20:04:59 +01:00
umkdir.rs Add umkdir command () 2023-10-30 07:59:48 -05:00
uniq_by.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
uniq.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
update.rs Fix replacement closures for update, insert, and upsert () 2023-12-09 15:22:45 -06:00
upsert.rs Fix replacement closures for update, insert, and upsert () 2023-12-09 15:22:45 -06:00
use_.rs Error on use path item1 item2, if item1 is not a module () 2023-12-05 11:38:45 +01:00
where_.rs remove warnings in nu_command tests () 2023-08-29 13:18:52 -07:00
which.rs change the output of which to be more explicit () 2023-07-20 19:10:53 -05:00
while_.rs Change echo to print when not redirected () 2023-09-13 06:35:01 +12:00
with_env.rs Clean up tests containing unnecessary cwd: tokens () 2023-07-17 18:43:51 +02:00
wrap.rs Remove file I/O from tests that don't need it () 2023-11-29 23:21:34 +01:00
zip.rs Fix: remove unnecessary r#"..."# () () 2023-07-21 17:32:37 +02:00