Fix for inconsistency when quoted strings are used with with_env shorthand (#1900)

This commit is contained in:
k-brk 2020-05-26 21:03:55 +02:00 committed by GitHub
parent a915471b38
commit 9567c1f564
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 2 deletions

View File

@ -29,3 +29,38 @@ fn shorthand_doesnt_reorder_arguments() {
assert_eq!(actual.out, "firstsecond"); assert_eq!(actual.out, "firstsecond");
} }
#[test]
fn with_env_shorthand_trims_quotes() {
let actual = nu!(
cwd: "tests/fixtures/formats",
"FOO='BARRRR' echo $nu.env | get FOO"
);
assert_eq!(actual.out, "BARRRR");
}
#[test]
fn with_env_and_shorthand_same_result() {
let actual_shorthand = nu!(
cwd: "tests/fixtures/formats",
"FOO='BARRRR' echo $nu.env | get FOO"
);
let actual_normal = nu!(
cwd: "tests/fixtures/formats",
"with-env [FOO BARRRR] {echo $nu.env} | get FOO"
);
assert_eq!(actual_shorthand.out, actual_normal.out);
}
#[test]
fn with_env_shorthand_nested_quotes() {
let actual = nu!(
cwd: "tests/fixtures/formats",
"FOO='-arg \"hello world\"' echo $nu.env | get FOO"
);
assert_eq!(actual.out, "-arg \"hello world\"");
}

View File

@ -1362,7 +1362,9 @@ fn expand_shorthand_forms(
) )
} else { } else {
let original_span = lite_pipeline.commands[0].name.span; let original_span = lite_pipeline.commands[0].name.span;
let (variable_name, value) = (assignment[0], assignment[1]); let env_value = trim_quotes(assignment[1]);
let (variable_name, value) = (assignment[0], env_value);
let mut lite_pipeline = lite_pipeline.clone(); let mut lite_pipeline = lite_pipeline.clone();
if !lite_pipeline.commands[0].args.is_empty() { if !lite_pipeline.commands[0].args.is_empty() {
@ -1377,7 +1379,7 @@ fn expand_shorthand_forms(
lite_pipeline, lite_pipeline,
Some(( Some((
variable_name.to_string().spanned(original_span), variable_name.to_string().spanned(original_span),
value.to_string().spanned(original_span), value.spanned(original_span),
)), )),
None, None,
) )