Merge branch 'ab/fail-prereqs-in-test'
Developer support to emulate unsatisfied prerequisites in tests to ensure that the remainer of the tests still succeeds when tests with prerequisites are skipped. * ab/fail-prereqs-in-test: tests: add a special setup where prerequisites fail
This commit is contained in:
commit
89d1b573d7
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