{"thread":{"id":"65829","subject":"git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","startedAt":"2026-06-17T22:03:32Z","lastAt":"2026-06-19T07:21:20Z","messageCount":6,"participants":["Todd Zullinger","Patrick Steinhardt","Junio C Hamano","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"545806","messageId":"20260617220330.n6byiFQr@teonanacatl.net","threadId":"65829","inReplyTo":null,"subject":"git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Todd Zullinger","fromEmail":"tmz@pobox.com","sentAt":"2026-06-17T22:03:30Z","receivedAt":"2026-06-17T22:03:32Z","isPatch":false,"body":"Hi,\n\nBuilding git-2.55.0-rc1 today, all non-x86 architectures\nfailed with:\n\n    Test Summary Report\n    -------------------\n    t4216-log-bloom.sh                               (Wstat: 0 Tests: 167 Failed: 0)\n      Parse errors: Unknown TAP token: \"--- highbit1/expect 2026-06-17 19:44:07.555797743 +0000\"\n\t\t    Unknown TAP token: \"+++ highbit1/actual 2026-06-17 19:44:07.563651478 +0000\"\n\t\t    Unknown TAP token: \"@@ -1 +1 @@\"\n\t\t    Unknown TAP token: \"-52a9\"\n\t\t    Unknown TAP token: \"+c01f\"\n    Files=1047, Tests=34680, 1072 wallclock secs ( 7.61 usr  1.61 sys + 395.73 cusr 586.23 csys = 991.18 CPU)\n    Result: FAIL\n\nThe test output is:\n\n    ok 148 - setup check value of version 1 changed-path\n    --- highbit1/expect     2026-06-17 19:44:07.555797743 +0000\n    +++ highbit1/actual     2026-06-17 19:44:07.563651478 +0000\n    @@ -1 +1 @@\n    -52a9\n    +c01f\n    ok 149 # SKIP check value of version 1 changed-path (missing SIGNED_CHAR_BY_DEFAULT)\n\nThis looks like it comes from the following chunk of code in\nthe test:\n\n    # expect will not match actual if char is unsigned by default. Write the test\n    # in this way, so that a user running this test script can still see if the two\n    # files match. (It will appear as an ordinary success if they match, and a skip\n    # if not.)\n    if test_cmp highbit1/expect highbit1/actual\n    then\n\t    test_set_prereq SIGNED_CHAR_BY_DEFAULT\n    fi\n    test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '\n\t    # Only the prereq matters for this test.\n\t    true\n    '\n\nIt seems like we could (and perhaps should) redirect the\noutput from test_cmp to a file (or /dev/null).\n\nBut... are we expecting these tests to not pass the test_cmp\non any non-x86 arch in the first place?  Or is this exposing\nsomething broken in the test setup (test-tool read-graph\nbloom-filters) or elsewhere?\n\nLooking at some older builds for non-x86 architectures, they\nare indeed failing to set the SIGNED_CHAR_BY_DEFAULT prereq.\n\n-- \nTodd\n"},{"id":"545814","messageId":"ajOP1IOjA3EYvRfm@pks.im","threadId":"65829","inReplyTo":"20260617220330.n6byiFQr@teonanacatl.net","subject":"Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-06-18T06:27:32Z","receivedAt":"2026-06-18T06:27:38Z","isPatch":false,"body":"On Wed, Jun 17, 2026 at 06:03:30PM -0400, Todd Zullinger wrote:\n> Hi,\n> \n> Building git-2.55.0-rc1 today, all non-x86 architectures\n> failed with:\n> \n>     Test Summary Report\n>     -------------------\n>     t4216-log-bloom.sh                               (Wstat: 0 Tests: 167 Failed: 0)\n>       Parse errors: Unknown TAP token: \"--- highbit1/expect 2026-06-17 19:44:07.555797743 +0000\"\n> \t\t    Unknown TAP token: \"+++ highbit1/actual 2026-06-17 19:44:07.563651478 +0000\"\n> \t\t    Unknown TAP token: \"@@ -1 +1 @@\"\n> \t\t    Unknown TAP token: \"-52a9\"\n> \t\t    Unknown TAP token: \"+c01f\"\n>     Files=1047, Tests=34680, 1072 wallclock secs ( 7.61 usr  1.61 sys + 395.73 cusr 586.23 csys = 991.18 CPU)\n>     Result: FAIL\n> \n> The test output is:\n> \n>     ok 148 - setup check value of version 1 changed-path\n>     --- highbit1/expect     2026-06-17 19:44:07.555797743 +0000\n>     +++ highbit1/actual     2026-06-17 19:44:07.563651478 +0000\n>     @@ -1 +1 @@\n>     -52a9\n>     +c01f\n>     ok 149 # SKIP check value of version 1 changed-path (missing SIGNED_CHAR_BY_DEFAULT)\n> \n> This looks like it comes from the following chunk of code in\n> the test:\n> \n>     # expect will not match actual if char is unsigned by default. Write the test\n>     # in this way, so that a user running this test script can still see if the two\n>     # files match. (It will appear as an ordinary success if they match, and a skip\n>     # if not.)\n>     if test_cmp highbit1/expect highbit1/actual\n>     then\n> \t    test_set_prereq SIGNED_CHAR_BY_DEFAULT\n>     fi\n>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '\n> \t    # Only the prereq matters for this test.\n> \t    true\n>     '\n> \n> It seems like we could (and perhaps should) redirect the\n> output from test_cmp to a file (or /dev/null).\n> \n> But... are we expecting these tests to not pass the test_cmp\n> on any non-x86 arch in the first place?  Or is this exposing\n> something broken in the test setup (test-tool read-graph\n> bloom-filters) or elsewhere?\n\nHm, this thing is indeed somewhat puzzling to me. I assume the intent is\nto give the developer some information that their platform is using\nsigned characters by default? Other than that it's not really doing\nanything, as the prereq is only used by the one test shown above. I hope\nthat Taylor has some more insight here.\n\nThere's two potential fixes:\n\n  - We can just drop this completely, as it ultimately doesn't even end\n    up doing anything.\n\n  - We can convert the call to `test_cmp` into a `test_lazy_prereq`,\n    like done in the below patch, which retains the current behaviour.\n\n> Looking at some older builds for non-x86 architectures, they\n> are indeed failing to set the SIGNED_CHAR_BY_DEFAULT prereq.\n\nWell, I guess that's intended.\n\nPatrick\n\ndiff --git a/t/t4216-log-bloom.sh b/t/t4216-log-bloom.sh\nindex 1064990de3..c7478e2513 100755\n--- a/t/t4216-log-bloom.sh\n+++ b/t/t4216-log-bloom.sh\n@@ -581,10 +581,10 @@ test_expect_success 'setup check value of version 1 changed-path' '\n # in this way, so that a user running this test script can still see if the two\n # files match. (It will appear as an ordinary success if they match, and a skip\n # if not.)\n-if test_cmp highbit1/expect highbit1/actual\n-then\n-\ttest_set_prereq SIGNED_CHAR_BY_DEFAULT\n-fi\n+test_lazy_prereq SIGNED_CHAR_BY_DEFAULT '\n+\ttest_cmp highbit1/expect highbit1/actual\n+'\n+\n test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '\n \t# Only the prereq matters for this test.\n \ttrue\n"},{"id":"545905","messageId":"xmqq4iizpkig.fsf@gitster.g","threadId":"65829","inReplyTo":"ajOP1IOjA3EYvRfm@pks.im","subject":"Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-06-18T22:10:47Z","receivedAt":"2026-06-18T22:10:50Z","isPatch":false,"body":"Patrick Steinhardt <ps@pks.im> writes:\n\n>> Building git-2.55.0-rc1 today, all non-x86 architectures\n>> failed with:\n>>  ...\n>> This looks like it comes from the following chunk of code in\n>> the test:\n>> \n>>     # expect will not match actual if char is unsigned by default. Write the test\n>>     # in this way, so that a user running this test script can still see if the two\n>>     # files match. (It will appear as an ordinary success if they match, and a skip\n>>     # if not.)\n>>     if test_cmp highbit1/expect highbit1/actual\n>>     then\n>> \t    test_set_prereq SIGNED_CHAR_BY_DEFAULT\n>>     fi\n>>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '\n>> \t    # Only the prereq matters for this test.\n>> \t    true\n>>     '\n\nThe \"problematic\" part is from mid 2024, so it is not anything new\nin 2.55-rc1, is it?  Nobody built and ran tests for the past two\nyears on non-x86 boxes?\n\n> Hm, this thing is indeed somewhat puzzling to me. I assume the intent is\n> to give the developer some information that their platform is using\n> signed characters by default? Other than that it's not really doing\n> anything, as the prereq is only used by the one test shown above. I hope\n> that Taylor has some more insight here.\n>\n> There's two potential fixes:\n>\n>   - We can just drop this completely, as it ultimately doesn't even end\n>     up doing anything.\n>\n>   - We can convert the call to `test_cmp` into a `test_lazy_prereq`,\n>     like done in the below patch, which retains the current behaviour.\n\nYeah, unless Taylor can tell us something we are not seeing, I am\ninclined to say that we can just get rid of the whole thing.\nSIGNED_CHAR_BY_DEFAULT is not used anywhere else, and the only place\nit is used isd to run \"true\".\n\n"},{"id":"545906","messageId":"20260618233536.GA1431359@coredump.intra.peff.net","threadId":"65829","inReplyTo":"xmqq4iizpkig.fsf@gitster.g","subject":"Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2026-06-18T23:35:36Z","receivedAt":"2026-06-18T23:35:43Z","isPatch":false,"body":"On Thu, Jun 18, 2026 at 03:10:47PM -0700, Junio C Hamano wrote:\n\n> Patrick Steinhardt <ps@pks.im> writes:\n> \n> >> Building git-2.55.0-rc1 today, all non-x86 architectures\n> >> failed with:\n> >>  ...\n> >> This looks like it comes from the following chunk of code in\n> >> the test:\n> >> \n> >>     # expect will not match actual if char is unsigned by default. Write the test\n> >>     # in this way, so that a user running this test script can still see if the two\n> >>     # files match. (It will appear as an ordinary success if they match, and a skip\n> >>     # if not.)\n> >>     if test_cmp highbit1/expect highbit1/actual\n> >>     then\n> >> \t    test_set_prereq SIGNED_CHAR_BY_DEFAULT\n> >>     fi\n> >>     test_expect_success SIGNED_CHAR_BY_DEFAULT 'check value of version 1 changed-path' '\n> >> \t    # Only the prereq matters for this test.\n> >> \t    true\n> >>     '\n> \n> The \"problematic\" part is from mid 2024, so it is not anything new\n> in 2.55-rc1, is it?  Nobody built and ran tests for the past two\n> years on non-x86 boxes?\n\nPresumably they did not notice the extra cruft to stdout, either because\nit was being eaten by the TAP harness or for a raw \"make test\" it was\nmixed in with a million other lines of output. But since 389c83025d (t:\nlet prove fail when parsing invalid TAP output, 2026-06-04) it will\ncause a test failure.\n\n-Peff\n"},{"id":"545909","messageId":"xmqqeci3nz7h.fsf@gitster.g","threadId":"65829","inReplyTo":"20260618233536.GA1431359@coredump.intra.peff.net","subject":"Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2026-06-19T00:36:18Z","receivedAt":"2026-06-19T00:36:21Z","isPatch":false,"body":"Jeff King <peff@peff.net> writes:\n\n> ... But since 389c83025d (t:\n> let prove fail when parsing invalid TAP output, 2026-06-04) it will\n> cause a test failure.\n\nThanks.  That was the piece I was missing.\n"},{"id":"545921","messageId":"ajTt6xmQxYg6ppMG@pks.im","threadId":"65829","inReplyTo":"xmqqeci3nz7h.fsf@gitster.g","subject":"Re: git-2.55.0-rc1 t4216 broken TAP failures on non-x86 arch","fromName":"Patrick Steinhardt","fromEmail":"ps@pks.im","sentAt":"2026-06-19T07:21:15Z","receivedAt":"2026-06-19T07:21:20Z","isPatch":false,"body":"On Thu, Jun 18, 2026 at 05:36:18PM -0700, Junio C Hamano wrote:\n> Jeff King <peff@peff.net> writes:\n> \n> > ... But since 389c83025d (t:\n> > let prove fail when parsing invalid TAP output, 2026-06-04) it will\n> > cause a test failure.\n> \n> Thanks.  That was the piece I was missing.\n\nI've sent a patch via [1]. Thanks!\n\nPatrick\n\n[1]: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>\n"}]}