mirror of
https://github.com/nushell/nushell.git
synced 2025-08-14 13:39:08 +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:
@ -1026,6 +1026,16 @@ pub fn test_external_call_head_interpolated_string(
|
||||
r#"hello world"#,
|
||||
"value is surrounded by backtick quote"
|
||||
)]
|
||||
#[case(
|
||||
r#"^foo `"hello world"`"#,
|
||||
"\"hello world\"",
|
||||
"value is surrounded by backtick quote, with inner double quote"
|
||||
)]
|
||||
#[case(
|
||||
r#"^foo `'hello world'`"#,
|
||||
"'hello world'",
|
||||
"value is surrounded by backtick quote, with inner single quote"
|
||||
)]
|
||||
pub fn test_external_call_arg_glob(#[case] input: &str, #[case] expected: &str, #[case] tag: &str) {
|
||||
test_external_call(input, tag, |name, args| {
|
||||
match &name.expr {
|
||||
@ -1120,16 +1130,6 @@ pub fn test_external_call_arg_raw_string(
|
||||
r#"foo\external call"#,
|
||||
"double quote with backslash"
|
||||
)]
|
||||
#[case(
|
||||
r#"^foo `"hello world"`"#,
|
||||
r#"hello world"#,
|
||||
"value is surrounded by backtick quote, with inner double quote"
|
||||
)]
|
||||
#[case(
|
||||
r#"^foo `'hello world'`"#,
|
||||
r#"hello world"#,
|
||||
"value is surrounded by backtick quote, with inner single quote"
|
||||
)]
|
||||
pub fn test_external_call_arg_string(
|
||||
#[case] input: &str,
|
||||
#[case] expected: &str,
|
||||
|
Reference in New Issue
Block a user