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/ls | |
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/ls')
-rwxr-xr-x | tests/ls/dangle.sh | 12 | ||||
-rwxr-xr-x | tests/ls/follow-slink.sh | 4 | ||||
-rwxr-xr-x | tests/ls/stat-failed.sh | 4 |
3 files changed, 13 insertions, 7 deletions
diff --git a/tests/ls/dangle.sh b/tests/ls/dangle.sh index 1f1849d2b..d27f03fe5 100755 --- a/tests/ls/dangle.sh +++ b/tests/ls/dangle.sh @@ -19,6 +19,9 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ ls +LS_MINOR_PROBLEM=1 +LS_FAILURE=2 + ln -s no-such-file dangle || framework_failure_ mkdir -p dir/sub || framework_failure_ ln -s dir slink-to-dir || framework_failure_ @@ -27,11 +30,10 @@ ln -s no-such d/dangle || framework_failure_ printf '? dangle\n' > subdir_Li_exp || framework_failure_ printf 'total 0\n? dangle\n' > subdir_Ls_exp || framework_failure_ - # This must exit nonzero. -ls -L dangle > /dev/null 2>&1 && fail=1 +returns_ $LS_FAILURE ls -L dangle > /dev/null 2>&1 || fail=1 # So must this. -ls -H dangle > /dev/null 2>&1 && fail=1 +returns_ $LS_FAILURE ls -H dangle > /dev/null 2>&1 || fail=1 # This must exit successfully. ls dangle >> out || fail=1 @@ -51,12 +53,12 @@ compare exp out || fail=1 # Ensure that ls -Li prints "?" as the inode of a dangling symlink. rm -f out -ls -Li d > out 2>/dev/null && fail=1 +returns_ $LS_MINOR_PROBLEM ls -Li d > out 2>/dev/null || fail=1 compare subdir_Li_exp out || fail=1 # Ensure that ls -Ls prints "?" as the allocation of a dangling symlink. rm -f out -ls -Ls d > out 2>/dev/null && fail=1 +returns_ $LS_MINOR_PROBLEM ls -Ls d > out 2>/dev/null || fail=1 compare subdir_Ls_exp out || fail=1 Exit $fail diff --git a/tests/ls/follow-slink.sh b/tests/ls/follow-slink.sh index 58d77fba4..edf6a4810 100755 --- a/tests/ls/follow-slink.sh +++ b/tests/ls/follow-slink.sh @@ -19,6 +19,8 @@ . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src print_ver_ ls +LS_FAILURE=2 + # Isolate output files from directory being listed mkdir dir dir/sub dir1 || framework_failure_ cd dir || framework_failure_ @@ -32,7 +34,7 @@ ls -F link > /dev/null || framework_failure_ # When explicitly listing a broken link, the command must fail. -ls -L link 2> /dev/null && fail=1 +returns_ $LS_FAILURE ls -L link 2> /dev/null || fail=1 # When encountering a broken link implicitly, Solaris 9 and OpenBSD 3.4 # list the link, provided no further information about the link needed diff --git a/tests/ls/stat-failed.sh b/tests/ls/stat-failed.sh index cb8b3bd26..002b71cf4 100755 --- a/tests/ls/stat-failed.sh +++ b/tests/ls/stat-failed.sh @@ -21,6 +21,8 @@ print_ver_ ls skip_if_root_ +LS_MINOR_PROBLEM=1 + mkdir d || framework_failure_ ln -s / d/s || framework_failure_ chmod 600 d || framework_failure_ @@ -38,7 +40,7 @@ sed 's/^l/?/' out | compare exp - || fail=1 # Ensure that the offsets in --dired output are accurate. rm -f out exp -ls --dired -l d > out && fail=1 +returns_ $LS_MINOR_PROBLEM ls --dired -l d > out || fail=1 cat <<\EOF > exp || fail=1 total 0 |