test-lib.sh: set prerequisite SANITY by testing what we really need
What we wanted out of the SANITY precondition is that the filesystem behaves sensibly with permission bits settings. - You should not be able to remove a file in a read-only directory, - You should not be able to tell if a file in a directory exists if the directory lacks read or execute permission bits. We used to cheat by approximating that condition with "is the / writable?" test and/or "are we running as root?" test. Neither test is sufficient or appropriate in environments like Cygwin. Signed-off-by: Torsten Bögershausen <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
eae69530ae
commit
f400e51c13
@ -997,9 +997,28 @@ test_lazy_prereq NOT_ROOT '
|
|||||||
test "$uid" != 0
|
test "$uid" != 0
|
||||||
'
|
'
|
||||||
|
|
||||||
# When the tests are run as root, permission tests will report that
|
# On a filesystem that lacks SANITY, a file can be deleted even if
|
||||||
# things are writable when they shouldn't be.
|
# the containing directory doesn't have write permissions, or a file
|
||||||
test -w / || test_set_prereq SANITY
|
# can be accessed even if the containing directory doesn't have read
|
||||||
|
# or execute permissions, causing our tests that validate that Git
|
||||||
|
# works sensibly in such situations.
|
||||||
|
test_lazy_prereq SANITY '
|
||||||
|
mkdir SANETESTD.1 SANETESTD.2 &&
|
||||||
|
|
||||||
|
chmod +w SANETESTD.1 SANETESTD.2 &&
|
||||||
|
>SANETESTD.1/x 2>SANETESTD.2/x &&
|
||||||
|
chmod -w SANETESTD.1 &&
|
||||||
|
chmod -rx SANETESTD.2 ||
|
||||||
|
error "bug in test sript: cannot prepare SANETESTD"
|
||||||
|
|
||||||
|
! rm SANETESTD.1/x && ! test -f SANETESTD.2/x
|
||||||
|
status=$?
|
||||||
|
|
||||||
|
chmod +rwx SANETESTD.1 SANETESTD.2 &&
|
||||||
|
rm -rf SANETESTD.1 SANETESTD.2 ||
|
||||||
|
error "bug in test sript: cannot clean SANETESTD"
|
||||||
|
return $status
|
||||||
|
'
|
||||||
|
|
||||||
GIT_UNZIP=${GIT_UNZIP:-unzip}
|
GIT_UNZIP=${GIT_UNZIP:-unzip}
|
||||||
test_lazy_prereq UNZIP '
|
test_lazy_prereq UNZIP '
|
||||||
|
Loading…
Reference in New Issue
Block a user