mirror of
https://github.com/nushell/nushell.git
synced 2025-08-10 06:38:43 +02:00
don't run subcommand if it's surrounded with backtick quote (#14210)
# Description Fixes: #14202 After looking into the issue, I think #13910 it's not good to cut the span if it's in external argument. This pr is somehow revert the change, and fix https://github.com/nushell/nushell/issues/13431 in another way. It introduce a new state named `State::BackTickQuote`, so if an external arg include backtick quote, it enters the state, so backtick quote won't be the body of a string. # User-Facing Changes ### Before ```nushell > ^echo `(echo aa)` aa > ^echo `"aa"` # maybe it's not right to remove the inner quote. aa ``` ### After ```nushell > ^echo `(echo aa)` (echo aa) > ^echo `"aa"` # inner quote is keeped if there are backtick quote outside. "aa" ``` # Tests + Formatting Added 3 tests.
This commit is contained in:
@ -642,3 +642,13 @@ fn exit_code_stops_execution_for_loop() {
|
||||
assert!(actual.out.is_empty());
|
||||
assert!(!actual.err.contains("exited with code 42"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn arg_dont_run_subcommand_if_surrounded_with_quote() {
|
||||
let actual = nu!("nu --testbin cococo `(echo aa)`");
|
||||
assert_eq!(actual.out, "(echo aa)");
|
||||
let actual = nu!("nu --testbin cococo \"(echo aa)\"");
|
||||
assert_eq!(actual.out, "(echo aa)");
|
||||
let actual = nu!("nu --testbin cococo '(echo aa)'");
|
||||
assert_eq!(actual.out, "(echo aa)");
|
||||
}
|
||||
|
Reference in New Issue
Block a user