X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=run-tests.sh;h=4cfea29007c13e091d0abd7af82b70b93f17f0d9;hb=941842c6bdda382c5b16124a55d2ab1cf2270d07;hp=97cd281ee446377118302cff35f7237c50526ef1;hpb=f15d645e56167afc4490e5735c999705456a66ec;p=apply-default-acl.git diff --git a/run-tests.sh b/run-tests.sh index 97cd281..4cfea29 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,14 +1,39 @@ #!/bin/bash +# +# Exit codes +# + +# Exit with this when a test fails. +EXIT_FAILURE=1 + +# We use a few system users in the tests. If these users aren't +# present, we exit with a different (non-EXIT_FAILURE). +EXIT_MISSING_USERS=2 + +# Define the users that we'll use in the tests below. We store the +# names as variables to avoid repeating them everywhere. +# +# WARNING: These must be in alphabetical order; otherwise the getfacl +# output will not match. +# +USERS=( bin daemon ) + +# Check to see if the above users exist. If not, bail. +for idx in $( seq 0 $((${#USERS[@]} - 1)) ); do + id ${USERS[idx]} >/dev/null 2>&1 || exit $EXIT_MISSING_USERS +done + # The program name. -BIN=./src/reapply_default_acl +BIN=src/apply-default-acl # The directory where we'll do all the ACL manipulation. TESTDIR=test acl_reset() { # Remove any ACLs on our test directory and remove its contents. - setfacl --remove-all --recursive "$TESTDIR" + setfacl --remove-all --recursive "${TESTDIR}" + chmod 755 "${TESTDIR}" rm -rf "${TESTDIR}"/* } @@ -18,11 +43,15 @@ compare() { acl_reset else echo "Failure (#${TESTNUM})" - echo "Expected result:" + echo 'Expected result:' + echo '================' echo "${EXPECTED}" - echo "Actual result:" + echo '================' + echo 'Actual result:' + echo '================' echo "${ACTUAL}" - exit 1 + echo '================' + exit $EXIT_FAILURE fi } @@ -35,11 +64,11 @@ mkdir "${TESTDIR}" # permissions should all be propagated to the mode bits. TESTNUM=1 TARGET="${TESTDIR}"/foo +touch "${TARGET}" +chmod 777 "${TARGET}" setfacl -d -m user::r-- "${TESTDIR}" setfacl -d -m group::r-- "${TESTDIR}" setfacl -d -m other::r-- "${TESTDIR}" -touch "${TARGET}" -chmod 777 "${TARGET}" $BIN "${TARGET}" EXPECTED=$(cat <