Fix parsing dot dot path (#3331)

This commit is contained in:
JT 2021-04-20 08:18:29 +12:00 committed by GitHub
parent ea5bf9db36
commit 61768aa2fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 6 deletions

View File

@ -486,13 +486,11 @@ fn parse_dollar_expr(
//Return invocation
trace!("Parsing invocation expression");
parse_invocation(lite_arg, scope)
} else if lite_arg.item.contains("..") {
parse_range(lite_arg, scope)
} else if lite_arg.item.contains('.') {
trace!("Parsing path expression");
parse_full_column_path(lite_arg, scope)
} else if let (expr, None) = parse_range(lite_arg, scope) {
(expr, None)
} else if let (expr, None) = parse_full_column_path(lite_arg, scope) {
(expr, None)
} else {
trace!("Parsing variable expression");
parse_variable(lite_arg, scope)
}
}

View File

@ -34,6 +34,33 @@ fn takes_rows_of_nu_value_strings_and_pipes_it_to_stdin_of_external() {
})
}
#[test]
fn treats_dot_dot_as_path_not_range() {
Playground::setup("dot_dot_dir", |dirs, sandbox| {
sandbox.with_files(vec![FileWithContentToBeTrimmed(
"nu_times.csv",
r#"
name,rusty_luck,origin
Jason,1,Canada
"#,
)]);
let actual = nu!(
cwd: dirs.test(), pipeline(
r#"
mkdir temp;
cd temp;
echo $(open ../nu_times.csv).name | autoview;
cd ..;
rmdir temp
"#
));
// chop will remove the last escaped double quote from \"Estados Unidos\"
assert_eq!(actual.out, "Jason");
})
}
#[test]
fn invocation_properly_redirects() {
let actual = nu!(