Merge branch 'jk/sanity'
The tests that wanted to see that file becomes unreadable after running "chmod a-r file", and the tests that wanted to make sure it is not run as root, we used "can we write into the / directory?" as a cheap substitute, but on some platforms that is not a good heuristics. The tests and their prerequisites have been updated to check what they really require. * jk/sanity: test-lib.sh: set prerequisite SANITY by testing what we really need tests: correct misuses of POSIXPERM t/lib-httpd: switch SANITY check for NOT_ROOT
This commit is contained in:
commit
75b49bb181
@ -37,7 +37,7 @@ then
|
|||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! test_have_prereq SANITY; then
|
if ! test_have_prereq NOT_ROOT; then
|
||||||
test_skip_or_die $GIT_TEST_HTTPD \
|
test_skip_or_die $GIT_TEST_HTTPD \
|
||||||
"Cannot run httpd tests as root"
|
"Cannot run httpd tests as root"
|
||||||
fi
|
fi
|
||||||
|
@ -34,7 +34,7 @@ test_expect_success POSIXPERM 'run_command reports EACCES' '
|
|||||||
grep "fatal: cannot exec.*hello.sh" err
|
grep "fatal: cannot exec.*hello.sh" err
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success POSIXPERM 'unreadable directory in PATH' '
|
test_expect_success POSIXPERM,SANITY 'unreadable directory in PATH' '
|
||||||
mkdir local-command &&
|
mkdir local-command &&
|
||||||
test_when_finished "chmod u+rwx local-command && rm -fr local-command" &&
|
test_when_finished "chmod u+rwx local-command && rm -fr local-command" &&
|
||||||
git config alias.nitfol "!echo frotz" &&
|
git config alias.nitfol "!echo frotz" &&
|
||||||
|
@ -98,8 +98,16 @@ test_foobar_foobar() {
|
|||||||
'
|
'
|
||||||
}
|
}
|
||||||
|
|
||||||
if ! test_have_prereq POSIXPERM || ! [ -w / ]; then
|
if ! test -w /
|
||||||
skip_all="Dangerous test skipped. Read this test if you want to execute it"
|
then
|
||||||
|
skip_all="Test requiring writable / skipped. Read this test if you want to run it"
|
||||||
|
test_done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -e /refs || test -e /objects || test -e /info || test -e /hooks ||
|
||||||
|
test -e /.git || test -e /foo || test -e /me
|
||||||
|
then
|
||||||
|
skip_all="Skip test that clobbers existing files in /"
|
||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -108,8 +116,9 @@ if [ "$IKNOWWHATIAMDOING" != "YES" ]; then
|
|||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$UID" = 0 ]; then
|
if ! test_have_prereq NOT_ROOT
|
||||||
skip_all="No you can't run this with root"
|
then
|
||||||
|
skip_all="No you can't run this as root"
|
||||||
test_done
|
test_done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1031,9 +1031,33 @@ test_lazy_prereq USR_BIN_TIME '
|
|||||||
test -x /usr/bin/time
|
test -x /usr/bin/time
|
||||||
'
|
'
|
||||||
|
|
||||||
# When the tests are run as root, permission tests will report that
|
test_lazy_prereq NOT_ROOT '
|
||||||
# things are writable when they shouldn't be.
|
uid=$(id -u) &&
|
||||||
test -w / || test_set_prereq SANITY
|
test "$uid" != 0
|
||||||
|
'
|
||||||
|
|
||||||
|
# On a filesystem that lacks SANITY, a file can be deleted even if
|
||||||
|
# the containing directory doesn't have write permissions, or a file
|
||||||
|
# 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