X-Git-Url: http://gitweb.michael.orlitzky.com/?p=apply-default-acl.git;a=blobdiff_plain;f=run-tests.sh;h=d6e72bf6f46639cda021f0a65c6a887ad7b9a681;hp=923c19c6a3a9c222001270726af5d0fe392be253;hb=44e1b8dbbc5f4c41a142467acc7da6a277a09d40;hpb=940d3a24319ed7fd67ae0f400add78af4e37b1c7 diff --git a/run-tests.sh b/run-tests.sh index 923c19c..d6e72bf 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -13,13 +13,16 @@ EXIT_FAILURE=1 # 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. +# Define the users and groups that we'll use in the tests below. We +# store the names as variables to avoid repeating them everywhere. +# Since GROUPS is already part of everyone's environment, we need +# a different name. # # WARNING: These must be in alphabetical order; otherwise the getfacl # output will not match. # USERS=( bin daemon ) +TESTGROUPS=( bin daemon ) # Check to see if the above users exist. If not, bail. for idx in $( seq 0 $((${#USERS[@]} - 1)) ); do @@ -259,7 +262,7 @@ ACTUAL=$(getfacl --omit-header "${TARGET}") compare -# A slightly modified test #1 to make sure it works right. +# A slightly modified version of the first test, to make sure it works. ((TESTNUM++)) TARGET="${TESTDIR}"/foo touch "${TARGET}" @@ -306,7 +309,7 @@ compare # The --recursive mode should work normally if the argument is a -# normal file. See Test #1. +# normal file. See the first test. ((TESTNUM++)) TARGET="${TESTDIR}"/foo setfacl -d -m user::r-- "${TESTDIR}" @@ -533,57 +536,6 @@ compare -# Test #16's setup repeated with the --no-exec-mask flag. -# -((TESTNUM++)) -TARGET="${TESTDIR}"/foo -touch "${TARGET}" -chmod 644 "${TARGET}" -# The directory allows execute for user, group, and other, so the file -# should actually inherit them regardless of its initial mode when the -# --no-exec-mask flag is passed. -setfacl -d -m user:${USERS[0]}:rwx "${TESTDIR}" - -$BIN --no-exec-mask "${TARGET}" - -EXPECTED=$(cat <&1 ) EXPECTED="test/nonexistent: No such file or directory" compare + # Same as the previous test, but with --recursive. ((TESTNUM++)) ACTUAL=$( "${BIN}" --recursive test/nonexistent 2>&1 ) EXPECTED="test/nonexistent: No such file or directory" compare + # If we call apply-default-acl on more than one file, it should report any # that don't exist (but proceed to operate on the others). ((TESTNUM++)) @@ -712,8 +666,7 @@ EOF compare -# Ensure that symlinks are not followed in subdirectories -# (recursively). +# Ensure that symlinks are not followed in subdirectories (recursively). ((TESTNUM++)) TARGET="${TESTDIR}/bar" touch "${TARGET}" @@ -916,3 +869,117 @@ EXPECTED="1" "${BIN}" --recursive "${TARGET}" ACTUAL=$? compare + + +# Ensure that "." works as an argument. +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir "${TARGET}/foo" +mkdir "${TARGET}/bar" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo" ) +pushd "${TARGET}/bar" > /dev/null +"${BIN}" "." +ACTUAL=$( getfacl --omit-header "." ) +popd > /dev/null +compare + +# Ensure that "." works as an argument (recursive). +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir -p "${TARGET}/foo/baz" +mkdir -p "${TARGET}/bar/baz" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" --recursive "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo/baz" ) +pushd "${TARGET}/bar" > /dev/null +"${BIN}" --recursive "." +ACTUAL=$( getfacl --omit-header "./baz" ) +popd > /dev/null +compare + +# Ensure that "./" works as an argument. +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir "${TARGET}/foo" +mkdir "${TARGET}/bar" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo" ) +pushd "${TARGET}/bar" > /dev/null +"${BIN}" "./" +ACTUAL=$( getfacl --omit-header "./" ) +popd > /dev/null +compare + +# Ensure that ".." works as an argument. +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir "${TARGET}/foo" +mkdir -p "${TARGET}/bar/baz" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo" ) +pushd "${TARGET}/bar/baz" > /dev/null +"${BIN}" ".." +ACTUAL=$( getfacl --omit-header ".." ) +popd > /dev/null +compare + +# Ensure that ".." works as an argument (recursive). +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir -p "${TARGET}/foo/baz" +mkdir -p "${TARGET}/bar/baz" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" --recursive "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo/baz" ) +pushd "${TARGET}/bar/baz" > /dev/null +"${BIN}" --recursive ".." +ACTUAL=$( getfacl --omit-header "." ) +popd > /dev/null +compare + +# Ensure that "../" works as an argument. +((TESTNUM++)) +TARGET="${TESTDIR}" +mkdir "${TARGET}/foo" +mkdir -p "${TARGET}/bar/baz" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +"${BIN}" "${TARGET}/foo" +EXPECTED=$( getfacl --omit-header "${TARGET}/foo" ) +pushd "${TARGET}/bar/baz" > /dev/null +"${BIN}" "../" +ACTUAL=$( getfacl --omit-header "../" ) +popd > /dev/null +compare + + +# Ensure that multiple named-user and named-group entries all get +# applied individually rather than the last one taking precedence. +# This is a regression test against a bug that made it into a release +# and was reported by Michał Bartoszkiewicz. +((TESTNUM++)) +TARGET="${TESTDIR}" +TARGET="${TESTDIR}"/foo +touch "${TARGET}" +setfacl -d -m user:${USERS[0]}:rw- "${TESTDIR}" +setfacl -d -m group:${TESTGROUPS[0]}:rw- "${TESTDIR}" +setfacl -d -m user:${USERS[1]}:--- "${TESTDIR}" +setfacl -d -m group:${TESTGROUPS[1]}:--- "${TESTDIR}" +"${BIN}" "${TARGET}" +EXPECTED=$(cat <