mirror of
https://github.com/git/git.git
synced 2024-11-23 18:05:29 +08:00
tests: add a special setup where prerequisites fail
As discussed in [1] there's a regression in the "pu" branch now because a new test implicitly assumed that a previous test guarded by a prerequisite had been run. Add a "GIT_TEST_FAIL_PREREQS" special test setup where we'll skip (nearly) all tests guarded by prerequisites, allowing us to easily emulate those platform where we don't run these tests. As noted in the documentation I'm adding I'm whitelisting the SYMLINKS prerequisite for now. A lot of tests started failing if we lied about not supporting symlinks. It's also unlikely that we'll have a failing test due to a hard dependency on symlinks without that being the obvious cause, so for now it's not worth the effort to make it work. 1. https://public-inbox.org/git/nycvar.QRO.7.76.6.1905131531000.44@tvgsbejvaqbjf.bet/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ab15ad1a3b
commit
dfe1a17df9
9
t/README
9
t/README
@ -334,6 +334,15 @@ that cannot be easily covered by a few specific test cases. These
|
||||
could be enabled by running the test suite with correct GIT_TEST_
|
||||
environment set.
|
||||
|
||||
GIT_TEST_FAIL_PREREQS<non-empty?> fails all prerequisites. This is
|
||||
useful for discovering issues with the tests where say a later test
|
||||
implicitly depends on an optional earlier test.
|
||||
|
||||
There's a "FAIL_PREREQS" prerequisite that can be used to test for
|
||||
whether this mode is active, and e.g. skip some tests that are hard to
|
||||
refactor to deal with it. The "SYMLINKS" prerequisite is currently
|
||||
excluded as so much relies on it, but this might change in the future.
|
||||
|
||||
GIT_TEST_GETTEXT_POISON=<non-empty?> turns all strings marked for
|
||||
translation into gibberish if non-empty (think "test -n"). Used for
|
||||
spotting those tests that need to be marked with a C_LOCALE_OUTPUT
|
||||
|
@ -726,7 +726,7 @@ donthaveit=yes
|
||||
test_expect_success DONTHAVEIT 'unmet prerequisite causes test to be skipped' '
|
||||
donthaveit=no
|
||||
'
|
||||
if test $haveit$donthaveit != yesyes
|
||||
if test -z "$GIT_TEST_FAIL_PREREQS" -a $haveit$donthaveit != yesyes
|
||||
then
|
||||
say "bug in test framework: prerequisite tags do not work reliably"
|
||||
exit 1
|
||||
@ -747,7 +747,7 @@ donthaveiteither=yes
|
||||
test_expect_success DONTHAVEIT,HAVEIT 'unmet prerequisites causes test to be skipped' '
|
||||
donthaveiteither=no
|
||||
'
|
||||
if test $haveit$donthaveit$donthaveiteither != yesyesyes
|
||||
if test -z "$GIT_TEST_FAIL_PREREQS" -a $haveit$donthaveit$donthaveiteither != yesyesyes
|
||||
then
|
||||
say "bug in test framework: multiple prerequisite tags do not work reliably"
|
||||
exit 1
|
||||
@ -763,7 +763,7 @@ test_expect_success !LAZY_TRUE 'missing lazy prereqs skip tests' '
|
||||
donthavetrue=no
|
||||
'
|
||||
|
||||
if test "$havetrue$donthavetrue" != yesyes
|
||||
if test -z "$GIT_TEST_FAIL_PREREQS" -a "$havetrue$donthavetrue" != yesyes
|
||||
then
|
||||
say 'bug in test framework: lazy prerequisites do not work'
|
||||
exit 1
|
||||
@ -779,7 +779,7 @@ test_expect_success LAZY_FALSE 'missing negative lazy prereqs will skip' '
|
||||
havefalse=no
|
||||
'
|
||||
|
||||
if test "$nothavefalse$havefalse" != yesyes
|
||||
if test -z "$GIT_TEST_FAIL_PREREQS" -a "$nothavefalse$havefalse" != yesyes
|
||||
then
|
||||
say 'bug in test framework: negative lazy prerequisites do not work'
|
||||
exit 1
|
||||
@ -790,7 +790,7 @@ test_expect_success 'tests clean up after themselves' '
|
||||
test_when_finished clean=yes
|
||||
'
|
||||
|
||||
if test $clean != yes
|
||||
if test -z "$GIT_TEST_FAIL_PREREQS" -a $clean != yes
|
||||
then
|
||||
say "bug in test framework: basic cleanup command does not work reliably"
|
||||
exit 1
|
||||
|
@ -352,7 +352,7 @@ test_expect_success 'log with grep.patternType configuration and command line' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'log with various grep.patternType configurations & command-lines' '
|
||||
test_expect_success !FAIL_PREREQS 'log with various grep.patternType configurations & command-lines' '
|
||||
git init pattern-type &&
|
||||
(
|
||||
cd pattern-type &&
|
||||
|
@ -417,7 +417,7 @@ test_expect_failure 'directory/submodule conflict; keep submodule clean' '
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_failure 'directory/submodule conflict; should not treat submodule files as untracked or in the way' '
|
||||
test_expect_failure !FAIL_PREREQS 'directory/submodule conflict; should not treat submodule files as untracked or in the way' '
|
||||
test_when_finished "git -C directory-submodule/path reset --hard" &&
|
||||
test_when_finished "git -C directory-submodule reset --hard" &&
|
||||
(
|
||||
|
@ -412,7 +412,7 @@ do
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success !PCRE "grep $L with grep.patterntype=perl errors without PCRE" '
|
||||
test_expect_success !FAIL_PREREQS,!PCRE "grep $L with grep.patterntype=perl errors without PCRE" '
|
||||
test_must_fail git -c grep.patterntype=perl grep "foo.*bar"
|
||||
'
|
||||
|
||||
@ -1234,7 +1234,7 @@ test_expect_success PCRE 'grep --perl-regexp pattern' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success !PCRE 'grep --perl-regexp pattern errors without PCRE' '
|
||||
test_expect_success !FAIL_PREREQS,!PCRE 'grep --perl-regexp pattern errors without PCRE' '
|
||||
test_must_fail git grep --perl-regexp "foo.*bar"
|
||||
'
|
||||
|
||||
@ -1249,7 +1249,7 @@ test_expect_success LIBPCRE2 "grep -P with (*NO_JIT) doesn't error out" '
|
||||
|
||||
'
|
||||
|
||||
test_expect_success !PCRE 'grep -P pattern errors without PCRE' '
|
||||
test_expect_success !FAIL_PREREQS,!PCRE 'grep -P pattern errors without PCRE' '
|
||||
test_must_fail git grep -P "foo.*bar"
|
||||
'
|
||||
|
||||
|
@ -309,6 +309,26 @@ test_unset_prereq () {
|
||||
}
|
||||
|
||||
test_set_prereq () {
|
||||
if test -n "$GIT_TEST_FAIL_PREREQS"
|
||||
then
|
||||
case "$1" in
|
||||
# The "!" case is handled below with
|
||||
# test_unset_prereq()
|
||||
!*)
|
||||
;;
|
||||
# (Temporary?) whitelist of things we can't easily
|
||||
# pretend not to support
|
||||
SYMLINKS)
|
||||
;;
|
||||
# Inspecting whether GIT_TEST_FAIL_PREREQS is on
|
||||
# should be unaffected.
|
||||
FAIL_PREREQS)
|
||||
;;
|
||||
*)
|
||||
return
|
||||
esac
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
!*)
|
||||
test_unset_prereq "${1#!}"
|
||||
|
@ -1607,3 +1607,7 @@ test_lazy_prereq SHA1 '
|
||||
test_lazy_prereq REBASE_P '
|
||||
test -z "$GIT_TEST_SKIP_REBASE_P"
|
||||
'
|
||||
|
||||
test_lazy_prereq FAIL_PREREQS '
|
||||
test -n "$GIT_TEST_FAIL_PREREQS"
|
||||
'
|
||||
|
Loading…
Reference in New Issue
Block a user