diff mbox series

[v2] Implement run-built-tests=no for make xcheck, always build xtests

Message ID 87a5g2gnej.fsf@oldenburg.str.redhat.com
State New
Headers show
Series [v2] Implement run-built-tests=no for make xcheck, always build xtests | expand

Commit Message

Florian Weimer Sept. 20, 2024, 7:01 p.m. UTC
Previously, the second occurrence of the xtests target
expected all xtests to run (as the result of specifying
$(xtests)), but these tests have not been run due to
the the first xtests target is set up for run-built-tests=no:
it only runs tests in $(xtests-special).  Consequently,
xtests are reported as UNSUPPORTED with “make xcheck
run-built-tests=no”.  The xtests were not built, either.

After this change always, xtests are built regardless
of the $(run-built-tests) variable (except for xtests listed
in $(tests-unsupported)).  To fix the UNSUPPORTED issue,
introduce xtests-expected and use that manage test
expectations in the second xtests target.

---
v2: Slightly different approach.  Also build xtests unconditionally.
 Rules | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)


base-commit: e64a1e81aadf6c401174ac9471ced0f0125c2912

Comments

Carlos O'Donell Sept. 20, 2024, 9:21 p.m. UTC | #1
On 9/20/24 3:01 PM, Florian Weimer wrote:
> Previously, the second occurrence of the xtests target
> expected all xtests to run (as the result of specifying
> $(xtests)), but these tests have not been run due to
> the the first xtests target is set up for run-built-tests=no:
> it only runs tests in $(xtests-special).  Consequently,
> xtests are reported as UNSUPPORTED with “make xcheck
> run-built-tests=no”.  The xtests were not built, either.
> 
> After this change always, xtests are built regardless
> of the $(run-built-tests) variable (except for xtests listed
> in $(tests-unsupported)).  To fix the UNSUPPORTED issue,
> introduce xtests-expected and use that manage test
> expectations in the second xtests target.

This looks really good. Thank you for taking some of the suggestions
and improving the patch.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

> 
> ---
> v2: Slightly different approach.  Also build xtests unconditionally.
>  Rules | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
> 
> diff --git a/Rules b/Rules
> index 27846abf82..713c225d2e 100644
> --- a/Rules
> +++ b/Rules
> @@ -143,8 +143,9 @@ endif
>  others: $(py-const)
>  
>  ifeq ($(run-built-tests),no)
> +# The $(xtests) dependency ensures that xtests are always built.
>  tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
> -                                          $(tests) $(tests-internal) \
> +                                          $(tests) $(tests-internal) $(xtests) \

OK. Solid improvement to ensure the tests keep building.

By definition we don't know how to "build" xtests-special, so this is the best we can do.

>  					  $(tests-container) \
>  					  $(tests-mcheck:%=%-mcheck) \
>  					  $(tests-malloc-check:%=%-malloc-check) \
> @@ -153,8 +154,10 @@ tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
>  			     $(test-srcs)) $(tests-special) \
>  			     $(tests-printers-programs)
>  xtests: tests $(xtests-special)
> -else
> +else # $(run-built-tests) != no
> +# The $(xtests) dependency ensures that xtests are always built.
>  tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
> +       $(addprefix $(objpfx),$(filter-out $(tests-unsupported), $(xtests))) \

OK. Again ensures we build them but filter them.

>         $(tests-container:%=$(objpfx)%.out) \
>         $(tests-mcheck:%=$(objpfx)%-mcheck.out) \
>         $(tests-malloc-check:%=$(objpfx)%-malloc-check.out) \
> @@ -162,26 +165,28 @@ tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
>         $(tests-malloc-hugetlb2:%=$(objpfx)%-malloc-hugetlb2.out) \
>         $(tests-special) $(tests-printers-out)
>  xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
> -endif
> +endif # $(run-built-tests) != no

OK.

>  
>  tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
>  xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
>  ifeq ($(run-built-tests),no)
>  tests-expected =
> -else
> +xtests-expected =

OK. Nice to mirror the same setup.

> +else # $(run-built-tests) != no
>  tests-expected = $(tests) $(tests-internal) $(tests-printers) \
>  	$(tests-container) $(tests-malloc-check:%=%-malloc-check) \
>  	$(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
>  	$(tests-malloc-hugetlb2:%=%-malloc-hugetlb2) \
>  	$(tests-mcheck:%=%-mcheck)
> -endif
> +xtests-expected = $(xtests)
> +endif # $(run-built-tests) != no
>  tests:
>  	$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
>  	  $(sort $(tests-expected) $(tests-special-notdir:.out=)) \
>  	  > $(objpfx)subdir-tests.sum
>  xtests:
>  	$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
> -	  $(sort $(xtests) $(xtests-special-notdir:.out=)) \
> +	  $(sort $(xtests-expected) $(xtests-special-notdir:.out=)) \

OK.

>  	  > $(objpfx)subdir-xtests.sum
>  
>  ifeq ($(build-programs),yes)
> 
> base-commit: e64a1e81aadf6c401174ac9471ced0f0125c2912
>
diff mbox series

Patch

diff --git a/Rules b/Rules
index 27846abf82..713c225d2e 100644
--- a/Rules
+++ b/Rules
@@ -143,8 +143,9 @@  endif
 others: $(py-const)
 
 ifeq ($(run-built-tests),no)
+# The $(xtests) dependency ensures that xtests are always built.
 tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
-                                          $(tests) $(tests-internal) \
+                                          $(tests) $(tests-internal) $(xtests) \
 					  $(tests-container) \
 					  $(tests-mcheck:%=%-mcheck) \
 					  $(tests-malloc-check:%=%-malloc-check) \
@@ -153,8 +154,10 @@  tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \
 			     $(test-srcs)) $(tests-special) \
 			     $(tests-printers-programs)
 xtests: tests $(xtests-special)
-else
+else # $(run-built-tests) != no
+# The $(xtests) dependency ensures that xtests are always built.
 tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
+       $(addprefix $(objpfx),$(filter-out $(tests-unsupported), $(xtests))) \
        $(tests-container:%=$(objpfx)%.out) \
        $(tests-mcheck:%=$(objpfx)%-mcheck.out) \
        $(tests-malloc-check:%=$(objpfx)%-malloc-check.out) \
@@ -162,26 +165,28 @@  tests: $(tests:%=$(objpfx)%.out) $(tests-internal:%=$(objpfx)%.out) \
        $(tests-malloc-hugetlb2:%=$(objpfx)%-malloc-hugetlb2.out) \
        $(tests-special) $(tests-printers-out)
 xtests: tests $(xtests:%=$(objpfx)%.out) $(xtests-special)
-endif
+endif # $(run-built-tests) != no
 
 tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
 xtests-special-notdir = $(patsubst $(objpfx)%, %, $(xtests-special))
 ifeq ($(run-built-tests),no)
 tests-expected =
-else
+xtests-expected =
+else # $(run-built-tests) != no
 tests-expected = $(tests) $(tests-internal) $(tests-printers) \
 	$(tests-container) $(tests-malloc-check:%=%-malloc-check) \
 	$(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \
 	$(tests-malloc-hugetlb2:%=%-malloc-hugetlb2) \
 	$(tests-mcheck:%=%-mcheck)
-endif
+xtests-expected = $(xtests)
+endif # $(run-built-tests) != no
 tests:
 	$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
 	  $(sort $(tests-expected) $(tests-special-notdir:.out=)) \
 	  > $(objpfx)subdir-tests.sum
 xtests:
 	$(..)scripts/merge-test-results.sh -s $(objpfx) $(subdir) \
-	  $(sort $(xtests) $(xtests-special-notdir:.out=)) \
+	  $(sort $(xtests-expected) $(xtests-special-notdir:.out=)) \
 	  > $(objpfx)subdir-xtests.sum
 
 ifeq ($(build-programs),yes)