git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/2] test-lib: introduce required prereq for test runs

From
Fabian Stelzer <fs@gigacodes.de>
Date
Nov 15, 2021, 16:07 UTC
Message-ID
<20211115160750.1208940-3-fs@gigacodes.de>
In-Reply-To
<20211115160750.1208940-1-fs@gigacodes.de>

In certain environments or for specific test scenarios we might expect a specific prerequisite check to be succeed. Therefore we would like to 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 <fs@gigacodes.de>
---
 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=<list> 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
-- 
2.31.1
Previous: Fabian StelzerNext: Junio C Hamano
Message 10 of 11 in “test-lib: improve missing prereq handling”
  1. 0/2 test-lib: improve missing prereq handlingFabian Stelzer, Nov 15, 2021
  2. 1/2 test-lib: show missing prereq summaryFabian Stelzer, Nov 15, 2021
  3. Ævar Arnfjörð BjarmasonNov 15, 2021
  4. Junio C HamanoNov 15, 2021
  5. Fabian StelzerNov 15, 2021
  6. Junio C HamanoNov 15, 2021
  7. Fabian StelzerNov 16, 2021
  8. Junio C HamanoNov 17, 2021
  9. Fabian StelzerNov 17, 2021
  10. 2/2 test-lib: introduce required prereq for test runsFabian Stelzer, Nov 15, 2021
  11. Junio C HamanoNov 16, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.