Subject: Re: Testsuite failure on s390x and sparc64 after 6840fe9ee2

From: Todd Zullinger <[email-masked]>
Date: Fri, 28 Mar 2025 10:08:04 -0400

John Paul Adrian Glaubitz wrote:
> Hi Patrick,
> 
> On Fri, 2025-03-28 at 10:29 +0100, Patrick Steinhardt wrote:
>>> I reported this during the rc period.  I didn't hear back on
>>> it, but hopefully your message will arrive at a more
>>> convenient time. :)
>>> 
>>> https://lore.kernel.org/git/[email-masked]/
>> 
>> Copy-pasting the test logs from that mail:
>> 
>>     expecting success of 5620.4 'do partial clone 2, backfill min batch size':
>>             git clone --no-checkout --filter=blob:none      \
>>                     --single-branch --branch=main           \
>>                     "file://$(pwd)/srv.bare" backfill2 &&
>>             GIT_TRACE2_EVENT="$(pwd)/batch-trace" git \
>>                     -C backfill2 backfill --min-batch-size=20 &&
>>             # Batches were used
>>             test_trace2_data promisor fetch_count 20 <batch-trace >matches &&
>>             test_line_count = 2 matches &&
>>             test_trace2_data promisor fetch_count 8 <batch-trace &&
>>             # No more missing objects!
>>             git -C backfill2 rev-list --quiet --objects --missing=print HEAD >revs2 &&
>>             test_line_count = 0 revs2
>>     +++ pwd
>>     ++ git clone --no-checkout --filter=blob:none --single-branch --branch=main 'file:///tmp/git-t.sYdo/trash directory.t5620-backfill/srv.bare' backfill2
>>     Cloning into 'backfill2'...
>>     +++ pwd
>>     ++ GIT_TRACE2_EVENT='/tmp/git-t.sYdo/trash directory.t5620-backfill/batch-trace'
>>     ++ git -C backfill2 backfill --min-batch-size=20
>>     ++ test_trace2_data promisor fetch_count 20
>>     ++ grep -e '"category":"promisor","key":"fetch_count","value":"20"'
>>     error: last command exited with $?=1
>>     not ok 4 - do partial clone 2, backfill min batch size
>> 
>> It would be nice to learn what the file contains instead of the expected
>> string, which might give us a bit more of a hint what's wrong. You can
>> for example apply the following patch:
>> 
>> diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
>> index 79377bc0fc2..197494cd28c 100644
>> --- a/t/test-lib-functions.sh
>> +++ b/t/test-lib-functions.sh
>> @@ -1975,7 +1975,7 @@ test_region () {
>>  #	GIT_TRACE2_EVENT="$(pwd)/trace.txt" git pack-objects ... &&
>>  #	test_trace2_data pack-objects reused N <trace2.txt
>>  test_trace2_data () {
>> -	grep -e '"category":"'"$1"'","key":"'"$2"'","value":"'"$3"'"'
>> +	test_grep -e '"category":"'"$1"'","key":"'"$2"'","value":"'"$3"'"'
>>  }
>>  
>>  # Given a GIT_TRACE2_EVENT log over stdin, writes to stdout a list of URLs
>> 
>> If you then re-run the test with `-ix` we should end up printing the
>> contents of that non-matching file.
> 
> Could you please post the complete command line? I have no clue where to pass "-ix".
> 
> I was previously running the tests with "make test".

You'd do something like:

    cd t && ./t5620-backfill.sh -ix

Though the patch to change grep to test_grep is incomplete,
I believe.  Using that, you get an error:

    error: bug in the test script: test_grep requires a file
    to read as the last parameter

I don't have a lot of time to poke at this today, but I'll
make another test run on an s390x build host without that
patch, but where I can save the output and post it
somewhere.

For the Fedora packaging, it will be something like this:

    make -C t all || {
        (cd t && ./t5620-backfill.sh -ix);
        ./print-failed-test-output;
    }

Where print-failed-test-output is a script¹ which snarfs up
the output files in t/test-results and the test directory,
since there is not direct shell access to the build host(s).

¹ https://src.fedoraproject.org/rpms/git/raw/0af3adf/f/print-failed-test-output

-- 
Todd