Volume XXII, number 280Wednesday, October 7, 2026Latest message 2 hours ago

The Git List

News and archive of git@vger.kernel.org, since April 2005

git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

6 messages between Jun 17, 2026 and Jun 19, 2026, from Todd Zullinger, Patrick Steinhardt, Junio C Hamano, Jeff King.

Plain Markdown or JSON for tools and agents.

Todd ZullingerJun 17, 2026, 22:03 UTC on lore
Hi,

Building git-2.55.0-rc1 today, all non-x86 architectures failed with:

    Test Summary Report
    -------------------
    t4216-log-bloom.sh                               (Wstat: 0 Tests: 167 Failed: 0)
      Parse errors: Unknown TAP token: "--- highbit1/expect 2026-06-17 19:44:07.555797743 +0000"
		    Unknown TAP token: "+++ highbit1/actual 2026-06-17 19:44:07.563651478 +0000"
		    Unknown TAP token: "@@ -1 +1 @@"
		    Unknown TAP token: "-52a9"
		    Unknown TAP token: "+c01f"
    Files=1047, Tests=34680, 1072 wallclock secs ( 7.61 usr  1.61 sys + 395.73 cusr 586.23 csys = 991.18 CPU)
    Result: FAIL
The test output is:
    ok 148 - setup check value of version 1 changed-path
    --- highbit1/expect     2026-06-17 19:44:07.555797743 +0000
    +++ highbit1/actual     2026-06-17 19:44:07.563651478 +0000
    @@ -1 +1 @@
    -52a9
    +c01f
    ok 149 # SKIP check value of version 1 changed-path (missing SIGNED_CHAR_BY_DEFAULT)

This looks like it comes from the following chunk of code in the test:

    # expect will not match actual if char is unsigned by default. Write the test
    # in this way, so that a user running this test script can still see if the two
    # files match. (It will appear as an ordinary success if they match, and a skip
    # if not.)
    if test_cmp highbit1/expect highbit1/actual
    then
	    test_set_prereq SIGNED_CHAR_BY_DEFAULT
    fi
    test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '
	    # Only the prereq matters for this test.
	    true
    '

It seems like we could (and perhaps should) redirect the output from test_cmp to a file (or /dev/null).

But... are we expecting these tests to not pass the test_cmp on any non-x86 arch in the first place? Or is this exposing something broken in the test setup (test-tool read-graph bloom-filters) or elsewhere?

Looking at some older builds for non-x86 architectures, they are indeed failing to set the SIGNED_CHAR_BY_DEFAULT prereq.

-- 
Todd
Patrick SteinhardtJun 18, 2026, 06:27 UTC in reply to Todd Zullinger on lore

Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

On Wed, Jun 17, 2026 at 06:03:30PM -0400, Todd Zullinger wrote:
Show 49 quoted lines
> Hi,
> 
> Building git-2.55.0-rc1 today, all non-x86 architectures
> failed with:
> 
>     Test Summary Report
>     -------------------
>     t4216-log-bloom.sh                               (Wstat: 0 Tests: 167 Failed: 0)
>       Parse errors: Unknown TAP token: "--- highbit1/expect 2026-06-17 19:44:07.555797743 +0000"
> 		    Unknown TAP token: "+++ highbit1/actual 2026-06-17 19:44:07.563651478 +0000"
> 		    Unknown TAP token: "@@ -1 +1 @@"
> 		    Unknown TAP token: "-52a9"
> 		    Unknown TAP token: "+c01f"
>     Files=1047, Tests=34680, 1072 wallclock secs ( 7.61 usr  1.61 sys + 395.73 cusr 586.23 csys = 991.18 CPU)
>     Result: FAIL
> 
> The test output is:
> 
>     ok 148 - setup check value of version 1 changed-path
>     --- highbit1/expect     2026-06-17 19:44:07.555797743 +0000
>     +++ highbit1/actual     2026-06-17 19:44:07.563651478 +0000
>     @@ -1 +1 @@
>     -52a9
>     +c01f
>     ok 149 # SKIP check value of version 1 changed-path (missing SIGNED_CHAR_BY_DEFAULT)
> 
> This looks like it comes from the following chunk of code in
> the test:
> 
>     # expect will not match actual if char is unsigned by default. Write the test
>     # in this way, so that a user running this test script can still see if the two
>     # files match. (It will appear as an ordinary success if they match, and a skip
>     # if not.)
>     if test_cmp highbit1/expect highbit1/actual
>     then
> 	    test_set_prereq SIGNED_CHAR_BY_DEFAULT
>     fi
>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '
> 	    # Only the prereq matters for this test.
> 	    true
>     '
> 
> It seems like we could (and perhaps should) redirect the
> output from test_cmp to a file (or /dev/null).
> 
> But... are we expecting these tests to not pass the test_cmp
> on any non-x86 arch in the first place?  Or is this exposing
> something broken in the test setup (test-tool read-graph
> bloom-filters) or elsewhere?

Hm, this thing is indeed somewhat puzzling to me. I assume the intent is to give the developer some information that their platform is using signed characters by default? Other than that it's not really doing anything, as the prereq is only used by the one test shown above. I hope that Taylor has some more insight here.

There's two potential fixes:
  - We can just drop this completely, as it ultimately doesn't even end
    up doing anything.
  - We can convert the call to `test_cmp` into a `test_lazy_prereq`,
    like done in the below patch, which retains the current behaviour.
> Looking at some older builds for non-x86 architectures, they
> are indeed failing to set the SIGNED_CHAR_BY_DEFAULT prereq.
Well, I guess that's intended.
Patrick
diff --git a/t/t4216-log-bloom.sh b/t/t4216-log-bloom.sh
index 1064990de3..c7478e2513 100755
--- a/t/t4216-log-bloom.sh
+++ b/t/t4216-log-bloom.sh
@@ -581,10 +581,10 @@ test_expect_success 'setup check value of version 1 changed-path' '
 # in this way, so that a user running this test script can still see if the two
 # files match. (It will appear as an ordinary success if they match, and a skip
 # if not.)
-if test_cmp highbit1/expect highbit1/actual
-then
-	test_set_prereq SIGNED_CHAR_BY_DEFAULT
-fi
+test_lazy_prereq SIGNED_CHAR_BY_DEFAULT '
+	test_cmp highbit1/expect highbit1/actual
+'
+
 test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '
 	# Only the prereq matters for this test.
 	true
Junio C HamanoJun 18, 2026, 22:10 UTC in reply to Patrick Steinhardt on lore

Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

Patrick Steinhardt <ps@pks.im> writes:
Show 18 quoted lines
>> Building git-2.55.0-rc1 today, all non-x86 architectures
>> failed with:
>>  ...
>> This looks like it comes from the following chunk of code in
>> the test:
>> 
>>     # expect will not match actual if char is unsigned by default. Write the test
>>     # in this way, so that a user running this test script can still see if the two
>>     # files match. (It will appear as an ordinary success if they match, and a skip
>>     # if not.)
>>     if test_cmp highbit1/expect highbit1/actual
>>     then
>> 	    test_set_prereq SIGNED_CHAR_BY_DEFAULT
>>     fi
>>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '
>> 	    # Only the prereq matters for this test.
>> 	    true
>>     '

The "problematic" part is from mid 2024, so it is not anything new in 2.55-rc1, is it? Nobody built and ran tests for the past two years on non-x86 boxes?

Show 13 quoted lines
> Hm, this thing is indeed somewhat puzzling to me. I assume the intent is
> to give the developer some information that their platform is using
> signed characters by default? Other than that it's not really doing
> anything, as the prereq is only used by the one test shown above. I hope
> that Taylor has some more insight here.
>
> There's two potential fixes:
>
>   - We can just drop this completely, as it ultimately doesn't even end
>     up doing anything.
>
>   - We can convert the call to `test_cmp` into a `test_lazy_prereq`,
>     like done in the below patch, which retains the current behaviour.

Yeah, unless Taylor can tell us something we are not seeing, I am inclined to say that we can just get rid of the whole thing. SIGNED_CHAR_BY_DEFAULT is not used anywhere else, and the only place it is used isd to run "true".

Jeff KingJun 18, 2026, 23:35 UTC in reply to Junio C Hamano on lore

Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

On Thu, Jun 18, 2026 at 03:10:47PM -0700, Junio C Hamano wrote:
Show 24 quoted lines
> Patrick Steinhardt <ps@pks.im> writes:
> 
> >> Building git-2.55.0-rc1 today, all non-x86 architectures
> >> failed with:
> >>  ...
> >> This looks like it comes from the following chunk of code in
> >> the test:
> >> 
> >>     # expect will not match actual if char is unsigned by default. Write the test
> >>     # in this way, so that a user running this test script can still see if the two
> >>     # files match. (It will appear as an ordinary success if they match, and a skip
> >>     # if not.)
> >>     if test_cmp highbit1/expect highbit1/actual
> >>     then
> >> 	    test_set_prereq SIGNED_CHAR_BY_DEFAULT
> >>     fi
> >>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '
> >> 	    # Only the prereq matters for this test.
> >> 	    true
> >>     '
> 
> The "problematic" part is from mid 2024, so it is not anything new
> in 2.55-rc1, is it?  Nobody built and ran tests for the past two
> years on non-x86 boxes?

Presumably they did not notice the extra cruft to stdout, either because it was being eaten by the TAP harness or for a raw "make test" it was mixed in with a million other lines of output. But since 389c83025d (t: let prove fail when parsing invalid TAP output, 2026-06-04) it will cause a test failure.

-Peff
Junio C HamanoJun 19, 2026, 00:36 UTC in reply to Jeff King on lore

Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

Jeff King <peff@peff.net> writes:
> ... But since 389c83025d (t:
> let prove fail when parsing invalid TAP output, 2026-06-04) it will
> cause a test failure.
Thanks.  That was the piece I was missing.
Patrick SteinhardtJun 19, 2026, 07:21 UTC in reply to Junio C Hamano on lore

Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch

On Thu, Jun 18, 2026 at 05:36:18PM -0700, Junio C Hamano wrote:
Show 7 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > ... But since 389c83025d (t:
> > let prove fail when parsing invalid TAP output, 2026-06-04) it will
> > cause a test failure.
> 
> Thanks.  That was the piece I was missing.
I've sent a patch via [1]. Thanks!
Patrick
[1]: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>

Back to recent threads