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/rm/r-root.sh | |
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/rm/r-root.sh')
-rwxr-xr-x | tests/rm/r-root.sh | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/tests/rm/r-root.sh b/tests/rm/r-root.sh index 179edf6ff..e8fe714af 100755 --- a/tests/rm/r-root.sh +++ b/tests/rm/r-root.sh @@ -143,8 +143,7 @@ for opts in \ 'rootlink2/' \ 'rootlink3/' ; do - exercise_rm_r_root $opts \ - && fail=1 + returns_ 1 exercise_rm_r_root $opts || fail=1 # For some of the synonyms, the error diagnostic slightly differs from that # of the basic "/" case (see gnulib's fts_open' and ROOT_DEV_INO_WARN): @@ -178,8 +177,7 @@ done # by setting the following variable. CU_TEST_SKIP_EXIT=1 -exercise_rm_r_root --preserve-root file1 '/' file2 \ - && fail=1 +returns_ 1 exercise_rm_r_root --preserve-root file1 '/' file2 || fail=1 unset CU_TEST_SKIP_EXIT @@ -219,8 +217,7 @@ for file in \ test -d "$file" || continue # if e.g. /etc does not exist. - exercise_rm_r_root --preserve-root "$file" \ - && fail=1 + returns_ 1 exercise_rm_r_root --preserve-root "$file" || fail=1 grep "^rm: refusing to remove '\.' or '\.\.' directory: skipping" err \ || fail=1 @@ -244,8 +241,7 @@ exercise_rm_r_root --interactive=never --no-preserve-root '/' \ || fail=1 # The 'err' file should not contain the above error diagnostic. -grep "^rm: it is dangerous to operate recursively on '/'" err \ - && fail=1 +grep "^rm: it is dangerous to operate recursively on '/'" err && fail=1 # Instead, rm(1) should have called the intercepted unlinkat() function, # i.e. the evidence file "x" should exist. |