mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
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_
|
could be enabled by running the test suite with correct GIT_TEST_
|
||||||
environment set.
|
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
|
GIT_TEST_GETTEXT_POISON=<non-empty?> turns all strings marked for
|
||||||
translation into gibberish if non-empty (think "test -n"). Used 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
|
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' '
|
test_expect_success DONTHAVEIT 'unmet prerequisite causes test to be skipped' '
|
||||||
donthaveit=no
|
donthaveit=no
|
||||||
'
|
'
|
||||||
if test $haveit$donthaveit != yesyes
|
if test -z "$GIT_TEST_FAIL_PREREQS" -a $haveit$donthaveit != yesyes
|
||||||
then
|
then
|
||||||
say "bug in test framework: prerequisite tags do not work reliably"
|
say "bug in test framework: prerequisite tags do not work reliably"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -747,7 +747,7 @@ donthaveiteither=yes
|
||||||
test_expect_success DONTHAVEIT,HAVEIT 'unmet prerequisites causes test to be skipped' '
|
test_expect_success DONTHAVEIT,HAVEIT 'unmet prerequisites causes test to be skipped' '
|
||||||
donthaveiteither=no
|
donthaveiteither=no
|
||||||
'
|
'
|
||||||
if test $haveit$donthaveit$donthaveiteither != yesyesyes
|
if test -z "$GIT_TEST_FAIL_PREREQS" -a $haveit$donthaveit$donthaveiteither != yesyesyes
|
||||||
then
|
then
|
||||||
say "bug in test framework: multiple prerequisite tags do not work reliably"
|
say "bug in test framework: multiple prerequisite tags do not work reliably"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -763,7 +763,7 @@ test_expect_success !LAZY_TRUE 'missing lazy prereqs skip tests' '
|
||||||
donthavetrue=no
|
donthavetrue=no
|
||||||
'
|
'
|
||||||
|
|
||||||
if test "$havetrue$donthavetrue" != yesyes
|
if test -z "$GIT_TEST_FAIL_PREREQS" -a "$havetrue$donthavetrue" != yesyes
|
||||||
then
|
then
|
||||||
say 'bug in test framework: lazy prerequisites do not work'
|
say 'bug in test framework: lazy prerequisites do not work'
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -779,7 +779,7 @@ test_expect_success LAZY_FALSE 'missing negative lazy prereqs will skip' '
|
||||||
havefalse=no
|
havefalse=no
|
||||||
'
|
'
|
||||||
|
|
||||||
if test "$nothavefalse$havefalse" != yesyes
|
if test -z "$GIT_TEST_FAIL_PREREQS" -a "$nothavefalse$havefalse" != yesyes
|
||||||
then
|
then
|
||||||
say 'bug in test framework: negative lazy prerequisites do not work'
|
say 'bug in test framework: negative lazy prerequisites do not work'
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -790,7 +790,7 @@ test_expect_success 'tests clean up after themselves' '
|
||||||
test_when_finished clean=yes
|
test_when_finished clean=yes
|
||||||
'
|
'
|
||||||
|
|
||||||
if test $clean != yes
|
if test -z "$GIT_TEST_FAIL_PREREQS" -a $clean != yes
|
||||||
then
|
then
|
||||||
say "bug in test framework: basic cleanup command does not work reliably"
|
say "bug in test framework: basic cleanup command does not work reliably"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
|
@ -352,7 +352,7 @@ test_expect_success 'log with grep.patternType configuration and command line' '
|
||||||
test_cmp expect actual
|
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 &&
|
git init pattern-type &&
|
||||||
(
|
(
|
||||||
cd 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/path reset --hard" &&
|
||||||
test_when_finished "git -C directory-submodule reset --hard" &&
|
test_when_finished "git -C directory-submodule reset --hard" &&
|
||||||
(
|
(
|
||||||
|
|
|
@ -412,7 +412,7 @@ do
|
||||||
test_cmp expected actual
|
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"
|
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_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"
|
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"
|
test_must_fail git grep -P "foo.*bar"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
|
@ -309,6 +309,26 @@ test_unset_prereq () {
|
||||||
}
|
}
|
||||||
|
|
||||||
test_set_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
|
case "$1" in
|
||||||
!*)
|
!*)
|
||||||
test_unset_prereq "${1#!}"
|
test_unset_prereq "${1#!}"
|
||||||
|
|
|
@ -1607,3 +1607,7 @@ test_lazy_prereq SHA1 '
|
||||||
test_lazy_prereq REBASE_P '
|
test_lazy_prereq REBASE_P '
|
||||||
test -z "$GIT_TEST_SKIP_REBASE_P"
|
test -z "$GIT_TEST_SKIP_REBASE_P"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_lazy_prereq FAIL_PREREQS '
|
||||||
|
test -n "$GIT_TEST_FAIL_PREREQS"
|
||||||
|
'
|
||||||
|
|
Loading…
Reference in a new issue