From 58cff8a009ed9b8280c5f35074cef97231286023 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Tue, 13 Jan 2015 03:30:33 +0000 Subject: tests: add extra protection against unexpected exits Many tests use `program ... && fail=1` to ensure expected error situations are indicated. However that would mask an unexpected exit (like a crash). Therefore explicitly check the expected exit code. Note where error messages are also verified, the extra protection is not added. * tests/init.sh (returns_): A new helper function to check the return code of a command, and used throughout the tests. * cfg.mk (sc_prohibit_and_fail_1): Add a syntax check to avoid new instances of this issue. --- tests/chmod/octal.sh | 6 +++--- tests/chmod/umask-x.sh | 2 +- tests/chmod/usage.sh | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'tests/chmod') diff --git a/tests/chmod/octal.sh b/tests/chmod/octal.sh index 6f47a076c..23d0542f7 100755 --- a/tests/chmod/octal.sh +++ b/tests/chmod/octal.sh @@ -22,8 +22,8 @@ print_ver_ chmod # Before coreutils-5.92, this would mistakenly succeed, # and act like 'chmod 0 .'. -chmod 0-followed-by-anything . 2> /dev/null && fail=1 -chmod 7-followed-by-anything . 2> /dev/null && fail=1 -chmod 8 . 2> /dev/null && fail=1 +for mode in '0-anything' '7-anything' '8'; do + returns_ 1 chmod "$mode" . 2>/dev/null || fail=1 +done Exit $fail diff --git a/tests/chmod/umask-x.sh b/tests/chmod/umask-x.sh index 85b087d05..f31452a3c 100755 --- a/tests/chmod/umask-x.sh +++ b/tests/chmod/umask-x.sh @@ -21,6 +21,6 @@ print_ver_ chmod touch file chmod 755 file -(umask 77 && chmod -x file) 2>/dev/null && fail=1 +(umask 77 && returns_ 1 chmod -x file) 2>/dev/null || fail=1 Exit $fail diff --git a/tests/chmod/usage.sh b/tests/chmod/usage.sh index 133115233..ac6d635ab 100755 --- a/tests/chmod/usage.sh +++ b/tests/chmod/usage.sh @@ -67,7 +67,7 @@ for case in $cases; do case $files in '') touch -- $all_files || framework_failure_ - chmod $args 2>/dev/null && fail=1 + returns_ 1 chmod $args 2>/dev/null || fail=1 ;; ?*) touch -- $files || framework_failure_ @@ -77,7 +77,7 @@ for case in $cases; do # chmod has a bug if it succeeds even though $file is absent. rm -f -- $all_files && touch -- $files && rm -- $file \ || framework_failure_ - chmod $args 2>/dev/null && fail=1 + returns_ 1 chmod $args 2>/dev/null || fail=1 done ;; esac -- cgit v1.2.3-70-g09d2