Fix string interpolation is not working with external command (#3686)

This commit is contained in:
Võ Anh Duy 2021-06-26 04:14:54 +08:00 committed by GitHub
parent 4ed615cfcc
commit 6cdd8a2b07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View File

@ -730,7 +730,9 @@ fn parse_external_arg(
lite_arg: &Spanned<String>,
scope: &dyn ParserScope,
) -> (SpannedExpression, Option<ParseError>) {
if lite_arg.item.starts_with('$') || lite_arg.item.starts_with('(') {
if lite_arg.item.starts_with('$') {
parse_dollar_expr(lite_arg, scope)
} else if lite_arg.item.starts_with('(') {
parse_full_column_path(lite_arg, scope)
} else {
(

View File

@ -368,4 +368,25 @@ mod external_command_arguments {
},
)
}
#[test]
fn string_interpolation_with_an_external_command() {
Playground::setup(
"string_interpolation_with_an_external_command",
|dirs, sandbox| {
sandbox.mkdir("cd");
sandbox.with_files(vec![EmptyFile("cd/jonathan_likes_cake.txt")]);
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
^ls $"(pwd)/cd"
"#
));
assert_eq!(actual.out, "jonathan_likes_cake.txt");
},
)
}
}