X-Git-Url: http://gitweb.michael.orlitzky.com/?p=apply-default-acl.git;a=blobdiff_plain;f=run-tests.sh;h=07ad496584faa680cde5992e2fde03dee698e628;hp=7f7ba8fb41f456a54b9155e9aec26640ef285a98;hb=450699ecf86f3bebab00ca162349270730026d7f;hpb=e5d36040a86457ed66782496d79136d6bdc4d9a3 diff --git a/run-tests.sh b/run-tests.sh index 7f7ba8f..07ad496 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -32,7 +32,7 @@ for idx in $( seq 0 $((${#USERS[@]} - 1)) ); do done # The program name. -BIN=src/apply-default-acl +BIN=$(realpath src/apply-default-acl) # The directory where we'll do all the ACL manipulation. TESTDIR=test @@ -671,14 +671,16 @@ compare # If we call apply-default-acl on a single file that does not exist, # we get the expected error. TESTNUM=25 -ACTUAL=$( ${BIN} test/nonexistent 2>&1 ) -EXPECTED="${BIN}: test/nonexistent: No such file or directory" +ACTUAL=$( "${BIN}" test/nonexistent 2>&1 ) +ACTUAL="${ACTUAL#*: }" +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 ) +ACTUAL="${ACTUAL#*: }" +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 +689,9 @@ 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 ) +ACTUAL="${ACTUAL#*: }" +EXPECTED="test/nonexistent: No such file or directory" compare @@ -749,3 +752,117 @@ other::r-- EOF ) compare + + +# We should be able to run the tool with a relative path from within a +# directory that contains a symlink, so long as the relative path +# doesn't contain one. +TESTNUM=31 +TARGET="${TESTDIR}/foo/bar" +LINK2TARGET="${TESTDIR}/baz" +mkdir -p $(dirname "${TARGET}") +touch "${TARGET}" +ln -s foo "${TESTDIR}/baz" +setfacl --default --modify user:${USERS[0]}:rw $(dirname "${TARGET}") +pushd "${TESTDIR}/baz" > /dev/null +"${BIN}" bar +popd > /dev/null +ACTUAL=$( getfacl --omit-header "${TARGET}" ) +EXPECTED=$(cat </dev/null +ACTUAL="$?" +EXPECTED="1" +compare + + +# Test that one "failure" exit code overrides two "successes" +TESTNUM=37 +mkdir "${TESTDIR}/foo" +ln -s foo "${TESTDIR}/bar" +mkdir "${TESTDIR}/baz" +"${BIN}" "${TESTDIR}/foo" "${TESTDIR}/bar" "${TESTDIR}/baz" +ACTUAL="$?" +EXPECTED="1" +compare + + +# And test the buggy behavior again; the previous test should return +# success (ignoring the failure) when --recursive is used. +TESTNUM=38 +mkdir "${TESTDIR}/foo" +ln -s foo "${TESTDIR}/bar" +mkdir "${TESTDIR}/baz" +"${BIN}" --recursive "${TESTDIR}" +ACTUAL="$?" +EXPECTED="0" +compare