Subject: Re: [PATCH 01/22] t/test-lib: allow skipping leak checks for passing tests

From: Junio C Hamano <[email-masked]>
Date: Tue, 27 Aug 2024 15:38:59 -0700

Patrick Steinhardt <[email-masked]> writes:

> With `GIT_TEST_PASSING_SANITIZE_LEAK=check`, one can double check
> whether a memory leak fix caused some test suites to become leak free.
> It is somewhat slow to execute though because it runs all of our test
> suites with the leak sanitizer enabled. It is also pointless in most
> cases, because the only test suites that need to be checked are those
> which _aren't_ yet marked with `TEST_PASSES_SANITIZE_LEAK=true`.
>
> Introduce a new value "check-failing". If set, we will only check those
> tests which are not yet marked as leak free.

A very welcome addition.  I am already liking it while running
locally.

Thanks.

>
> Signed-off-by: Patrick Steinhardt <[email-masked]>
> ---
>  t/test-lib.sh | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/t/test-lib.sh b/t/test-lib.sh
> index 54247604cbc..64bd36531c1 100644
> --- a/t/test-lib.sh
> +++ b/t/test-lib.sh
> @@ -1558,8 +1558,16 @@ then
>  		passes_sanitize_leak=t
>  	fi
>  
> -	if test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check"
> +	if test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check" ||
> +	   test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check-failing"
>  	then
> +		if test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check-failing" &&
> +		   test -n "$passes_sanitize_leak"
> +		then
> +			skip_all="skipping leak-free $this_test under GIT_TEST_PASSING_SANITIZE_LEAK=check-failing"
> +			test_done
> +		fi
> +
>  		sanitize_leak_check=t
>  		if test -n "$invert_exit_code"
>  		then
> @@ -1597,6 +1605,7 @@ then
>  	export LSAN_OPTIONS
>  
>  elif test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check" ||
> +     test "$GIT_TEST_PASSING_SANITIZE_LEAK" = "check-failing" ||
>       test_bool_env GIT_TEST_PASSING_SANITIZE_LEAK false
>  then
>  	BAIL_OUT_ENV_NEEDS_SANITIZE_LEAK "GIT_TEST_PASSING_SANITIZE_LEAK=true"