diff --git a/src/builtins/test.rs b/src/builtins/test.rs index b005811a7..8d6917e12 100644 --- a/src/builtins/test.rs +++ b/src/builtins/test.rs @@ -684,10 +684,11 @@ fn parse_4_arg_expression( if let Token::UnaryBoolean(token) = first_token { let subject = self.parse_3_arg_expression(start + 1, end)?; + let range = start..subject.range().end; UnaryOperator { subject, token, - range: start..end, + range, } .into_some_box() } else if first_token == Token::ParenOpen { diff --git a/src/builtins/tests/test_tests.rs b/src/builtins/tests/test_tests.rs index 3fdefae04..43da29212 100644 --- a/src/builtins/tests/test_tests.rs +++ b/src/builtins/tests/test_tests.rs @@ -99,6 +99,12 @@ fn test_test() { assert!(run_test_test(1, &["!", "15", "-ge", "10"])); assert!(run_test_test(0, &["!", "!", "15", "-ge", "10"])); + assert!(run_test_test(0, &[ + "(", "-d", "/", ")", + "-o", + "(", "!", "-d", "/", ")", + ])); + assert!(run_test_test(0, &["0", "-ne", "1", "-a", "0", "-eq", "0"])); assert!(run_test_test(0, &["0", "-ne", "1", "-a", "-n", "5"])); assert!(run_test_test(0, &["-n", "5", "-a", "10", "-gt", "5"]));