]> git.ipfire.org Git - thirdparty/git.git/commitdiff
test-lib: introduce required prereq for test runs
authorFabian Stelzer <fs@gigacodes.de>
Sat, 20 Nov 2021 15:04:00 +0000 (16:04 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 21 Nov 2021 07:24:12 +0000 (23:24 -0800)
In certain environments or for specific test scenarios we might expect a
specific prerequisite check to succeed. Therefore we would like to abort
running our tests if this is not the case.

To remedy this we add the environment variable GIT_TEST_REQUIRE_PREREQ
which can be set to a space separated list of prereqs. If one of these
prereq tests fail then the whole test run will abort.

Signed-off-by: Fabian Stelzer <fs@gigacodes.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/README
t/test-lib-functions.sh

index 29f72354bf17e959abcc2e14243816b1a0262e52..2353a4c5e136d331290c808bedf25500b98ca762 100644 (file)
--- a/t/README
+++ b/t/README
@@ -466,6 +466,12 @@ explicitly providing repositories when accessing submodule objects is
 complete or needs to be abandoned for whatever reason (in which case the
 migrated codepaths still retain their performance benefits).
 
+GIT_TEST_REQUIRE_PREREQ=<list> allows specifying a space speparated list of
+prereqs that are required to succeed. If a prereq in this list is triggered by
+a test and then fails then the whole test run will abort. This can help to make
+sure the expected tests are executed and not silently skipped when their
+dependency breaks or is simply not present in a new environment.
+
 Naming Tests
 ------------
 
index eef2262a3608aaf44786f0481b1c1739ae17ea6f..389153e591620a379ebe496026eaa05db8ac8dc2 100644 (file)
@@ -680,6 +680,17 @@ test_have_prereq () {
                        # Keep a list of missing prerequisites; restore
                        # the negative marker if necessary.
                        prerequisite=${negative_prereq:+!}$prerequisite
+
+                       # Abort if this prereq was marked as required
+                       if test -n "$GIT_TEST_REQUIRE_PREREQ"
+                       then
+                               case " $GIT_TEST_REQUIRE_PREREQ " in
+                               *" $prerequisite "*)
+                                       BAIL_OUT "required prereq $prerequisite failed"
+                                       ;;
+                               esac
+                       fi
+
                        if test -z "$missing_prereq"
                        then
                                missing_prereq=$prerequisite