From: Junio C Hamano Date: Tue, 16 Nov 2021 06:09:08 GMT Subject: Re: [PATCH 2/2] test-lib: introduce required prereq for test runs Message-ID: In-Reply-To: <20211115160750.1208940-3-fs@gigacodes.de> Fabian Stelzer writes: > In certain environments or for specific test scenarios we might expect a > specific prerequisite check to be succeed. Therefore we would like to "to be succeed" -> "to succeed"? > trigger an error when 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 comma separated list of prereqs. If one of these > prereq tests fail then the whole test run will abort. > > Signed-off-by: Fabian Stelzer > --- > t/README | 6 ++++++ > t/test-lib-functions.sh | 11 +++++++++++ > 2 files changed, 17 insertions(+) > > diff --git a/t/README b/t/README > index 29f72354bf..18ce75976e 100644 > --- 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= allows specifying a comma 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 > ------------ > > diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh > index eef2262a36..2c8abf3420 100644 > --- a/t/test-lib-functions.sh > +++ b/t/test-lib-functions.sh > @@ -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,*) > + error "required prereq $prerequisite failed" > + ;; > + esac > + fi > + > if test -z "$missing_prereq" > then > missing_prereq=$prerequisite