summaryrefslogtreecommitdiff
path: root/tests/chmod
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2015-01-13 03:30:33 +0000
committerPádraig Brady <P@draigBrady.com>2015-01-14 12:20:32 +0000
commit58cff8a009ed9b8280c5f35074cef97231286023 (patch)
tree771e8b3fa70fab99b548790931803b75dd272603 /tests/chmod
parent924b1cadff3f2782475516d7eca9aabe856dbf0f (diff)
downloadcoreutils-58cff8a009ed9b8280c5f35074cef97231286023.tar.xz
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.
Diffstat (limited to 'tests/chmod')
-rwxr-xr-xtests/chmod/octal.sh6
-rwxr-xr-xtests/chmod/umask-x.sh2
-rwxr-xr-xtests/chmod/usage.sh4
3 files changed, 6 insertions, 6 deletions
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