diff mbox series

tests: fix incorrect --write-junit-xml code

Message ID pull.1288.git.1657789234416.gitgitgadget@gmail.com (mailing list archive)
State Accepted
Commit 7253f7ca9fdc5a19f2a9ee5867a20182e10551d6
Headers show
Series tests: fix incorrect --write-junit-xml code | expand

Commit Message

Johannes Schindelin July 14, 2022, 9 a.m. UTC
From: Johannes Schindelin <johannes.schindelin@gmx.de>

In 78d5e4cfb4b (tests: refactor --write-junit-xml code, 2022-05-21),
this developer refactored the `--write-junit-xml` code a bit, including
the part where the current test case's title was used in a `set`
invocation, but failed to account for the fact that some test cases'
titles start with a long option, which the `set` misinterprets as being
intended for parsing.

Let's fix this by using the `set -- <...>` form.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
    tests(JUnit): fix a regression introduced by refactoring
    
    As if another data point was needed to corroborate my claim that
    refactorings are neither free of cost nor of risk, this patch fixes a
    regression I myself introduced while refactoring the JUnit XML output
    code. At least this refactoring was motivated by an ulterior goal to
    improve Git's contributor experience, not just refactoring for
    refactoring's sake.
    
    Unfortunately, I noticed this regression no earlier than when I needed
    to validate Git for Windows v2.37.1. Since v2.37.1 was an embargoed
    release, I could not use GitHub Actions for the CI testing, so I had to
    reinstate Git's Azure Pipeline.
    
    It will probably surprise only few, if at all, that this is far from the
    only regression in the CI code that I had to fix just so I could run the
    Azure Pipeline successfully. I plan on contributing all of these
    regression fixes, of course, packaged into neat little,
    logically-separate patch series that should be easy on reviewers.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1288%2Fdscho%2Ffix-junit-xml-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1288/dscho/fix-junit-xml-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1288

 t/test-lib-junit.sh | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)


base-commit: 4e2a4d1dd44367d7783f33b169698f2930ff13c0

Comments

Junio C Hamano July 14, 2022, 4:14 p.m. UTC | #1
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

>     Unfortunately, I noticed this regression no earlier than when I needed
>     to validate Git for Windows v2.37.1. Since v2.37.1 was an embargoed
>     release, I could not use GitHub Actions for the CI testing, so I had to
>     reinstate Git's Azure Pipeline.

I wonder if it would make your life easier if the same GitHub
Actions CI stuff were available for the Cabal repository we use for
embargoed work, by allowing you to use the same validation for usual
releases and the enbargoed ones?

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

>  t/test-lib-junit.sh | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/t/test-lib-junit.sh b/t/test-lib-junit.sh
> index c959183c7e2..79c31c788b9 100644
> --- a/t/test-lib-junit.sh
> +++ b/t/test-lib-junit.sh
> @@ -46,7 +46,7 @@ finalize_test_case_output () {
>  	shift
>  	case "$test_case_result" in
>  	ok)
> -		set "$*"
> +		set -- "$*"
>  		;;
>  	failure)
>  		junit_insert="<failure message=\"not ok $test_count -"
> @@ -65,17 +65,17 @@ finalize_test_case_output () {
>  			junit_insert="$junit_insert<system-err>$(xml_attr_encode \
>  				"$(cat "$GIT_TEST_TEE_OUTPUT_FILE")")</system-err>"
>  		fi
> -		set "$1" "      $junit_insert"
> +		set -- "$1" "      $junit_insert"
>  		;;
>  	fixed)
> -		set "$* (breakage fixed)"
> +		set -- "$* (breakage fixed)"
>  		;;
>  	broken)
> -		set "$* (known breakage)"
> +		set -- "$* (known breakage)"
>  		;;
>  	skip)
>  		message="$(xml_attr_encode --no-lf "$skipped_reason")"
> -		set "$1" "      <skipped message=\"$message\" />"
> +		set -- "$1" "      <skipped message=\"$message\" />"
>  		;;
>  	esac

OK.  Ancient shells did not understand "--" and it was idiomatic to
say "set x ...; shift", but we already do assume "set --" is usable
everywhere we care about in many of our scripts and tests.

Looks good to me.

Thanks.  Will queue.
Ævar Arnfjörð Bjarmason July 15, 2022, 9:25 a.m. UTC | #2
On Thu, Jul 14 2022, Junio C Hamano wrote:

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
>
>>     Unfortunately, I noticed this regression no earlier than when I needed
>>     to validate Git for Windows v2.37.1. Since v2.37.1 was an embargoed
>>     release, I could not use GitHub Actions for the CI testing, so I had to
>>     reinstate Git's Azure Pipeline.
>
> I wonder if it would make your life easier if the same GitHub
> Actions CI stuff were available for the Cabal repository we use for
> embargoed work, by allowing you to use the same validation for usual
> releases and the enbargoed ones?

Isn't it. Looking at
e.g. https://github.com/git/cabal/actions/runs/2284056293 (private link)
that's the CI run for the latest push to "master" (same as
https://github.com/git/git/commit/e8005e4871f130c4e402ddca2032c111252f070a).

So I didn't get this idea that we must have Azure to resurrect for
"private CI", don't we have that already, and anyone can use it by
re-pushing git.git to a private repo (the limitation being that on
GitHub you can't make a private fork of a public repo)?
Johannes Schindelin Aug. 8, 2022, 1:40 p.m. UTC | #3
Hi Junio,

On Thu, 14 Jul 2022, Junio C Hamano wrote:

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
>
> >     Unfortunately, I noticed this regression no earlier than when I needed
> >     to validate Git for Windows v2.37.1. Since v2.37.1 was an embargoed
> >     release, I could not use GitHub Actions for the CI testing, so I had to
> >     reinstate Git's Azure Pipeline.
>
> I wonder if it would make your life easier

It would make my life easier if Chesterton's Fences were left alone ;-)

> if the same GitHub Actions CI stuff were available for the Cabal
> repository we use for embargoed work, by allowing you to use the same
> validation for usual releases and the enbargoed ones?

GitHub Actions are available in the Cabal repository. The problem is that
due to the private nature of said repository, the number of included build
minutes is limited.

I did manage to get GitHub to sponsor the Git project specifically to
increase said build minutes. But that only scratches the problem at the
surface.

I still think that we need to slow the heck down with refactoring for
refactoring's sake because it's not only the CI builds that are affected.
I pay a lot of time to accommodate for those refactorings, and so do
others, and the benefit of most of those refactorings escapes me. My best
guess is that they adapt Git's source code to individual tastes, which is
of course a losing game because too many individuals with too many
different tastes are involved in the Git project. Unless we start valuing
particular individuals' tastes over others', which I believe we should not
do.

You asked me in private to provide more reviews for those refactorings so
that they see some push-back, but I lack the bandwidth for that.

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
>
> >  t/test-lib-junit.sh | 10 +++++-----
> >  1 file changed, 5 insertions(+), 5 deletions(-)
> >
> > diff --git a/t/test-lib-junit.sh b/t/test-lib-junit.sh
> > index c959183c7e2..79c31c788b9 100644
> > --- a/t/test-lib-junit.sh
> > +++ b/t/test-lib-junit.sh
> > @@ -46,7 +46,7 @@ finalize_test_case_output () {
> >  	shift
> >  	case "$test_case_result" in
> >  	ok)
> > -		set "$*"
> > +		set -- "$*"
> >  		;;
> >  	failure)
> >  		junit_insert="<failure message=\"not ok $test_count -"
> > @@ -65,17 +65,17 @@ finalize_test_case_output () {
> >  			junit_insert="$junit_insert<system-err>$(xml_attr_encode \
> >  				"$(cat "$GIT_TEST_TEE_OUTPUT_FILE")")</system-err>"
> >  		fi
> > -		set "$1" "      $junit_insert"
> > +		set -- "$1" "      $junit_insert"
> >  		;;
> >  	fixed)
> > -		set "$* (breakage fixed)"
> > +		set -- "$* (breakage fixed)"
> >  		;;
> >  	broken)
> > -		set "$* (known breakage)"
> > +		set -- "$* (known breakage)"
> >  		;;
> >  	skip)
> >  		message="$(xml_attr_encode --no-lf "$skipped_reason")"
> > -		set "$1" "      <skipped message=\"$message\" />"
> > +		set -- "$1" "      <skipped message=\"$message\" />"
> >  		;;
> >  	esac
>
> OK.  Ancient shells did not understand "--" and it was idiomatic to
> say "set x ...; shift", but we already do assume "set --" is usable
> everywhere we care about in many of our scripts and tests.
>
> Looks good to me.
>
> Thanks.  Will queue.

Thank you,
Dscho
Junio C Hamano Aug. 8, 2022, 4:47 p.m. UTC | #4
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> I still think that we need to slow the heck down with refactoring for
> refactoring's sake because it's not only the CI builds that are affected.
> I pay a lot of time to accommodate for those refactorings, and so do
> others, and the benefit of most of those refactorings escapes me.

Absolutely.

> You asked me in private to provide more reviews for those refactorings so
> that they see some push-back, but I lack the bandwidth for that.

I do remember telling you to push back what you do not want to see
in 'seen' and advance to 'next'.  If everybody lacks the bandwidth
for shooting down bad ideas and only has time to promote their own
ideas, which are not guaranteed to be good ones, it does not lead
to a good place X-<.
Johannes Schindelin Aug. 9, 2022, 8:42 a.m. UTC | #5
Hi Junio,

On Mon, 8 Aug 2022, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > You asked me in private to provide more reviews for those refactorings so
> > that they see some push-back, but I lack the bandwidth for that.
>
> I do remember telling you to push back what you do not want to see
> in 'seen' and advance to 'next'.  If everybody lacks the bandwidth
> for shooting down bad ideas and only has time to promote their own
> ideas, which are not guaranteed to be good ones, it does not lead
> to a good place X-<.

The funny thing is that you're usually simply not picking up patches that
do not get any reviews, but for these refactorings it is somehow
different, and I do not understand why it needs to be different.

I do not _want_ to spend time reviewing patch series of dubious benefit.
And that would hold true even if I could justify spending that time, which
I can't.

There are so many more contributions that promise a much higher return of
investment for reviewing them.

Ciao,
Dscho
Junio C Hamano Aug. 10, 2022, 6:44 p.m. UTC | #6
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> The funny thing is that you're usually simply not picking up patches that
> do not get any reviews, but for these refactorings it is somehow
> different, and I do not understand why it needs to be different.

Well, I am not sure if encouraging the maintainer to drop patches
that are not reviewed is a good overall direction you would want to
go in.

But let's try that.  Less work for me, less disruption to our tree,
and the world may be quieter and more pleasant ;-)
Johannes Schindelin Aug. 12, 2022, 9 p.m. UTC | #7
Hi Junio,

On Wed, 10 Aug 2022, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > The funny thing is that you're usually simply not picking up patches that
> > do not get any reviews, but for these refactorings it is somehow
> > different, and I do not understand why it needs to be different.
>
> Well, I am not sure if encouraging the maintainer to drop patches
> that are not reviewed is a good overall direction you would want to
> go in.

I am not encouraging you to drop high-quality patches that have a clear
benefit to the project and/or Git's users. You probably know me better
than to assume that I would ever do such a thing. You probably meant this
comment tongue-in-cheek, but I cannot really tell.

It's about these long patch series that touch everything and their dog and
the end result brings no clear benefit to users nor the Git project
itself. I can easily imagine how wonderful it would be not to see such
patch series ever again. ;-)

> But let's try that.  Less work for me, less disruption to our tree,
> and the world may be quieter and more pleasant ;-)

Amen!

Ciao,
Dscho
diff mbox series

Patch

diff --git a/t/test-lib-junit.sh b/t/test-lib-junit.sh
index c959183c7e2..79c31c788b9 100644
--- a/t/test-lib-junit.sh
+++ b/t/test-lib-junit.sh
@@ -46,7 +46,7 @@  finalize_test_case_output () {
 	shift
 	case "$test_case_result" in
 	ok)
-		set "$*"
+		set -- "$*"
 		;;
 	failure)
 		junit_insert="<failure message=\"not ok $test_count -"
@@ -65,17 +65,17 @@  finalize_test_case_output () {
 			junit_insert="$junit_insert<system-err>$(xml_attr_encode \
 				"$(cat "$GIT_TEST_TEE_OUTPUT_FILE")")</system-err>"
 		fi
-		set "$1" "      $junit_insert"
+		set -- "$1" "      $junit_insert"
 		;;
 	fixed)
-		set "$* (breakage fixed)"
+		set -- "$* (breakage fixed)"
 		;;
 	broken)
-		set "$* (known breakage)"
+		set -- "$* (known breakage)"
 		;;
 	skip)
 		message="$(xml_attr_encode --no-lf "$skipped_reason")"
-		set "$1" "      <skipped message=\"$message\" />"
+		set -- "$1" "      <skipped message=\"$message\" />"
 		;;
 	esac