X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=run-tests.sh;h=2df25af45d1e5baecf6902aec5634a605a713a73;hb=3149daa9c8f443bdb9dc086316c130046ec852cf;hp=d87c678b811e90ce23bf32514914dbd0c0901460;hpb=95356899dfc03215a775868b77d4d1bcb5613027;p=apply-default-acl.git diff --git a/run-tests.sh b/run-tests.sh index d87c678..2df25af 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -219,7 +219,6 @@ setfacl -d -m user:${USERS[0]}:rwx "${TESTDIR}" setfacl -d -m user:${USERS[1]}:rwx "${TESTDIR}" $BIN "${TARGET}" - EXPECTED=$(cat <&1 ) -EXPECTED="${BIN}: test/nonexistent: No such file or directory" +ACTUAL=$( "${BIN}" test/nonexistent 2>&1 ) +EXPECTED="test/nonexistent: No such file or directory" compare # Same as the previous test, but with --recursive. TESTNUM=26 -ACTUAL=$( ${BIN} --recursive test/nonexistent 2>&1 ) -EXPECTED="${BIN}: test/nonexistent: No such file or directory" +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 @@ -687,8 +685,8 @@ TESTNUM=27 DUMMY1="${TESTDIR}/dummy1" DUMMY2="${TESTDIR}/dummy2" touch "${DUMMY1}" "${DUMMY2}" -ACTUAL=$( ${BIN} "${DUMMY1}" test/nonexistent "${DUMMY2}" 2>&1 ) -EXPECTED="${BIN}: test/nonexistent: No such file or directory" +ACTUAL=$( "${BIN}" "${DUMMY1}" test/nonexistent "${DUMMY2}" 2>&1 ) +EXPECTED="test/nonexistent: No such file or directory" compare @@ -760,7 +758,7 @@ LINK2TARGET="${TESTDIR}/baz" mkdir -p $(dirname "${TARGET}") touch "${TARGET}" ln -s foo "${TESTDIR}/baz" -setfacl --default --modify user:${USERS[0]}:rw "${TESTDIR}/foo" +setfacl --default --modify user:${USERS[0]}:rw $(dirname "${TARGET}") pushd "${TESTDIR}/baz" > /dev/null "${BIN}" bar popd > /dev/null @@ -775,3 +773,141 @@ other::r-- EOF ) compare + + +# Ensure that symlinks in non-terminal path components are not followed. +TESTNUM=32 +TARGET="${TESTDIR}/foo/bar/baz" +LINK2FOO="${TESTDIR}/quux" +mkdir -p $(dirname "${TARGET}") +touch "${TARGET}" +ln -s foo "${LINK2FOO}" +setfacl --default --modify user:${USERS[0]}:rw $(dirname "${TARGET}") +"${BIN}" "${LINK2FOO}/bar/baz" +ACTUAL=$( getfacl --omit-header "${TARGET}" ) +EXPECTED=$(cat </dev/null +ACTUAL="$?" +EXPECTED="1" +compare + + +# Test that one "failure" exit code overrides two "successes" +# We need a default ACL on ${TESTDIR} because otherwise we do +# nothing, successfully, on the symlink path. +TESTNUM=37 +mkdir "${TESTDIR}/foo" +ln -s foo "${TESTDIR}/bar" +mkdir "${TESTDIR}/baz" +setfacl --default --modify user:${USERS[0]}:rw "${TESTDIR}" +"${BIN}" "${TESTDIR}/foo" "${TESTDIR}/bar" "${TESTDIR}/baz" +ACTUAL="$?" +EXPECTED="1" +compare + + +# The failure should prevail when using --recursive, too. +TESTNUM=38 +mkdir "${TESTDIR}/foo" +ln -s foo "${TESTDIR}/bar" +mkdir "${TESTDIR}/baz" +"${BIN}" --recursive "${TESTDIR}" +ACTUAL="$?" +EXPECTED="1" +compare + + +# We should get "Not a directory" if we stick a trailing slash on the +# end of the path to a file. +TESTNUM=39 +TARGET="${TESTDIR}/foo" +touch "${TARGET}" +ACTUAL=$( "${BIN}" "${TARGET}/" 2>&1 ) +EXPECTED="${TARGET}/: Not a directory" +compare + + +# We should be a no-op on files contained in directories that have no +# default ACL. +TESTNUM=40 +TARGET="${TESTDIR}/foo" +touch "${TARGET}" +setfacl --modify user:${USERS[0]}:rw "${TARGET}" +EXPECTED=$( getfacl --omit-header "${TARGET}" ) +"${BIN}" "${TARGET}" +ACTUAL=$( getfacl --omit-header "${TARGET}" ) +compare + + +# We should be a no-op on directories contained in directories that +# have no default ACL (same as the previous test, but with a directory). +TESTNUM=41 +TARGET="${TESTDIR}/foo" +mkdir "${TARGET}" +setfacl --modify user:${USERS[0]}:rw "${TARGET}" +setfacl --default --modify user:${USERS[0]}:rw "${TARGET}" +EXPECTED=$( getfacl --omit-header "${TARGET}" ) +"${BIN}" --recursive "${TARGET}" +ACTUAL=$( getfacl --omit-header "${TARGET}" ) +compare + + +# Make sure we descend into subdirectories that don't have default ACLs. +TESTNUM=42 +TARGET="${TESTDIR}/foo/bar/baz" +mkdir -p $(dirname "${TARGET}") +touch "${TARGET}" +touch "${TARGET}-direct" +setfacl --default --modify user:${USERS[0]}:rw $(dirname "${TARGET}") +"${BIN}" "${TARGET}-direct" +EXPECTED=$( getfacl --omit-header "${TARGET}-direct" ) +"${BIN}" --recursive "${TESTDIR}" +ACTUAL=$( getfacl --omit-header "${TARGET}" ) +compare