Module Name: src Committed By: rillig Date: Sat Mar 15 07:02:07 UTC 2025
Modified Files: src/tests/bin/expr: t_expr.sh Log Message: tests/expr: demonstrate eager evaluation of '|' and '&' To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/tests/bin/expr/t_expr.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/bin/expr/t_expr.sh diff -u src/tests/bin/expr/t_expr.sh:1.9 src/tests/bin/expr/t_expr.sh:1.10 --- src/tests/bin/expr/t_expr.sh:1.9 Sat Mar 15 06:53:06 2025 +++ src/tests/bin/expr/t_expr.sh Sat Mar 15 07:02:07 2025 @@ -1,4 +1,4 @@ -# $NetBSD: t_expr.sh,v 1.9 2025/03/15 06:53:06 rillig Exp $ +# $NetBSD: t_expr.sh,v 1.10 2025/03/15 07:02:07 rillig Exp $ # # Copyright (c) 2007 The NetBSD Foundation, Inc. # All rights reserved. @@ -266,17 +266,32 @@ regex_body() { test_finish } +atf_test_case short_circuit +short_circuit_head() { + atf_set "descr" "Test short-circuit evaluation of '|' and '&'" +} +short_circuit_body() { + test_expr 0 \| 1 / 0 "expr: second argument to '/' must not be zero" + # FIXME: The right-hand side of '|' must not be evaluated. + test_expr 123 \| 1 / 0 "expr: second argument to '/' must not be zero" + + # FIXME: The right-hand side of '&' must not be evaluated. + test_expr 0 \& 1 / 0 "expr: second argument to '/' must not be zero" + test_expr 123 \& 1 / 0 "expr: second argument to '/' must not be zero" + + test_finish +} + atf_test_case string_length string_length_head() { atf_set "descr" "Test the string length operator" } string_length_body() { + # The 'length' operator is an extension to POSIX 2024. test_expr length "" '0' test_expr length + 'expr: syntax error' test_expr length \! '1' test_expr length ++ '2' - - # POSIX says "unspecified results" test_expr length length '6' test_finish @@ -298,5 +313,6 @@ atf_init_test_cases() atf_add_test_case math_precedence atf_add_test_case precedence atf_add_test_case regex + atf_add_test_case short_circuit atf_add_test_case string_length }