diff options
author | Pádraig Brady <P@draigBrady.com> | 2015-01-13 03:30:33 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2015-01-14 12:20:32 +0000 |
commit | 58cff8a009ed9b8280c5f35074cef97231286023 (patch) | |
tree | 771e8b3fa70fab99b548790931803b75dd272603 /tests/mkdir | |
parent | 924b1cadff3f2782475516d7eca9aabe856dbf0f (diff) | |
download | coreutils-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/mkdir')
-rwxr-xr-x | tests/mkdir/p-3.sh | 3 | ||||
-rwxr-xr-x | tests/mkdir/parents.sh | 2 | ||||
-rwxr-xr-x | tests/mkdir/perm.sh | 2 | ||||
-rwxr-xr-x | tests/mkdir/special-1.sh | 2 |
4 files changed, 5 insertions, 4 deletions
diff --git a/tests/mkdir/p-3.sh b/tests/mkdir/p-3.sh index 6ffa533a2..199e7e1de 100755 --- a/tests/mkdir/p-3.sh +++ b/tests/mkdir/p-3.sh @@ -27,7 +27,8 @@ mkdir no-acce2s || framework_failure_ mkdir -p no-acce3s/d || framework_failure_ p=$(pwd) -(cd no-access && chmod 0 . && mkdir -p "$p/a/b" u/v) 2> /dev/null && fail=1 +(cd no-access && chmod 0 . && mkdir -p "$p/a/b" u/v) 2> /dev/null +test $? -eq 1 || fail=1 test -d "$p/a/b" || fail=1 # Same as above, but with a following *absolute* name, it should succeed diff --git a/tests/mkdir/parents.sh b/tests/mkdir/parents.sh index 2bc5419ba..ebdb52713 100755 --- a/tests/mkdir/parents.sh +++ b/tests/mkdir/parents.sh @@ -26,7 +26,7 @@ mkdir -m 700 e-dir || framework_failure_ # Make sure 'mkdir -p existing-dir' succeeds # and that 'mkdir existing-dir' fails. mkdir -p e-dir || fail=1 -mkdir e-dir > /dev/null 2>&1 && fail=1 +returns_ 1 mkdir e-dir > /dev/null 2>&1 || fail=1 # Create an existing directory. umask 077 diff --git a/tests/mkdir/perm.sh b/tests/mkdir/perm.sh index ab78f1f89..ff0a57dce 100755 --- a/tests/mkdir/perm.sh +++ b/tests/mkdir/perm.sh @@ -59,7 +59,7 @@ for p in empty -p; do # If we're not using -p, then create the parent manually, # and adjust expectations accordingly. - test x$p = x && \ + test x$p = x && { mkdir -m =,u=rwx parent || fail=1 parent_perms=drwx------ diff --git a/tests/mkdir/special-1.sh b/tests/mkdir/special-1.sh index 94b6f8c34..a6ba642f8 100755 --- a/tests/mkdir/special-1.sh +++ b/tests/mkdir/special-1.sh @@ -36,7 +36,7 @@ rmdir $tmp || fail=1 tmp2=$tmp/sub # This should fail. -mkdir -m$set_mode_string $tmp2 2> /dev/null && fail=1 +returns_ 1 mkdir -m$set_mode_string $tmp2 2> /dev/null || fail=1 # Now test the --parents option. mkdir --parents -m$set_mode_string $tmp2 || fail=1 |