diff mbox series

[v2,2/6] t: extend test_lazy_prereq

Message ID 20250311212505.2920181-3-gitster@pobox.com (mailing list archive)
State New
Headers show
Series drop "name-rev --stdin" support | expand

Commit Message

Junio C Hamano March 11, 2025, 9:25 p.m. UTC
Allow test_lazy_prereq script to signal a programming error by
exiting with status 125 (like how bisect scripts do).  This is used
to signal a deprecated-and-then-removed prerequisite that should
never be used in tests anymore.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/README                | 6 ++++--
 t/test-lib-functions.sh | 5 +++++
 2 files changed, 9 insertions(+), 2 deletions(-)

Comments

Patrick Steinhardt March 12, 2025, 7:01 a.m. UTC | #1
On Tue, Mar 11, 2025 at 02:25:01PM -0700, Junio C Hamano wrote:
> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
> index 79377bc0fc..16eaaaf4c3 100644
> --- a/t/test-lib-functions.sh
> +++ b/t/test-lib-functions.sh
> @@ -773,6 +773,8 @@ mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-'"$1"'" &&
>  	rm -rf "$TRASH_DIRECTORY/prereq-test-dir-$1"
>  	if test "$eval_ret" = 0; then
>  		say >&3 "prerequisite $1 ok"
> +	elif test "$eval_ret" = 125; then
> +		:;
>  	else
>  		say >&3 "prerequisite $1 not satisfied"
>  	fi

The semicolon in ":;" threw me off a bit. Am I missing why we need it or
is it superfluous?

> @@ -811,6 +813,9 @@ test_have_prereq () {
>  				if test_run_lazy_prereq_ "$prerequisite" "$script"
>  				then
>  					test_set_prereq $prerequisite
> +				elif test $? = 125
> +				then
> +					BUG "Do not use $prerequisite"
>  				fi
>  				lazily_tested_prereq="$lazily_tested_prereq$prerequisite "
>  			esac

Hm, okay. It feels quite close to overthinking the whole deprecation
cycle around prerequisites as it's nothing that we tend to do very
often. But on the other hand the implementation is trivial enough, so I
don't mind it much.

Patrick
diff mbox series

Patch

diff --git a/t/README b/t/README
index 3ce9f5a393..e9ffd9a81c 100644
--- a/t/README
+++ b/t/README
@@ -983,8 +983,10 @@  see test-lib-functions.sh for the full list and their options.
    SYMLINKS ...".  The script is run in a temporary directory inside
    a subshell, so you do not have to worry about removing temporary
    files you create there.  When the script exits with status 0, the
-   prerequisite is set.  Exiting with non-zero status makes the
-   prerequisite unsatisified.
+   prerequisite is set.  Exiting with non-zero status other than 125
+   makes the prerequisite unsatisified.  Exiting the script with 125
+   signals a programming error and is used to mark a prerequisite that
+   should not be used by test scripts.
 
  - test_expect_code <exit-code> <command>
 
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 79377bc0fc..16eaaaf4c3 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -773,6 +773,8 @@  mkdir -p "$TRASH_DIRECTORY/prereq-test-dir-'"$1"'" &&
 	rm -rf "$TRASH_DIRECTORY/prereq-test-dir-$1"
 	if test "$eval_ret" = 0; then
 		say >&3 "prerequisite $1 ok"
+	elif test "$eval_ret" = 125; then
+		:;
 	else
 		say >&3 "prerequisite $1 not satisfied"
 	fi
@@ -811,6 +813,9 @@  test_have_prereq () {
 				if test_run_lazy_prereq_ "$prerequisite" "$script"
 				then
 					test_set_prereq $prerequisite
+				elif test $? = 125
+				then
+					BUG "Do not use $prerequisite"
 				fi
 				lazily_tested_prereq="$lazily_tested_prereq$prerequisite "
 			esac