Am 12.12.23 um 15:16 schrieb Ondrej Pohorelsky: > Hi everyone, > > As some might have heard, there is a proposal for Fedora 40 to > transition from zlib to zlib-ng[0]. Because of this, there has been a > rebuild of all packages to ensure every package works under zlib-ng. > > Git test suit has three breakages in t6300-for-each-ref.sh. > To be precise, it is: > > not ok 35 - basic atom: refs/heads/main objectsize:disk > not ok 107 - basic atom: refs/tags/testtag objectsize:disk > not ok 108 - basic atom: refs/tags/testtag *objectsize:disk > > > All of these tests are atomic, and they compare the result against > $disklen. Why do these three objects (HEAD commit of main, testtag and testtag target) have the same size? Half of the answer is that testtag points to the HEAD of main. But the other half is pure coincidence as far as I can see. > I can easily patch these tests in Fedora to be compatible with zlib-ng > only by not comparing to $disklen, but a concrete value, however I > would like to have a universal solution that works with both zlib and > zlib-ng. So if anyone has an idea on how to do it, please let me know. The test stores the expected values at the top, in the following lines, for the two possible repository formats: test_expect_success setup ' test_oid_cache <<-EOF && disklen sha1:138 disklen sha256:154 EOF So it's using hard-coded values already, which breaks when the compression rate changes. We could set core.compression to 0 to take compression out of the picture. Or we could get the sizes of the objects by checking their files, which would not require hard-coding anymore. Patch below. --- >8 --- Subject: [PATCH] t6300: avoid hard-coding object sizes f4ee22b526 (ref-filter: add tests for objectsize:disk, 2018-12-24) hard-coded the expected object sizes. Coincidentally the size of commit and tag is the same with zlib at the default compression level. 1f5f8f3e85 (t6300: abstract away SHA-1-specific constants, 2020-02-22) encoded the sizes as a single value, which coincidentally also works with sha256. Different compression libraries like zlib-ng may arrive at different values. Get them from the file system instead of hard-coding them to make switching the compression library (or changing the compression level) easier. Reported-by: Ondrej Pohorelsky <opohorel@xxxxxxxxxx> Signed-off-by: René Scharfe <l.s.r@xxxxxx> --- t/t6300-for-each-ref.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index 54e2281259..843a7fe143 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -20,12 +20,13 @@ setdate_and_increment () { export GIT_COMMITTER_DATE GIT_AUTHOR_DATE } -test_expect_success setup ' - test_oid_cache <<-EOF && - disklen sha1:138 - disklen sha256:154 - EOF +test_object_file_size () { + oid=$(git rev-parse "$1") + path=".git/objects/$(test_oid_to_path $oid)" + test_file_size "$path" +} +test_expect_success setup ' # setup .mailmap cat >.mailmap <<-EOF && A Thor <athor@xxxxxxxxxxx> A U Thor <author@xxxxxxxxxxx> @@ -94,7 +95,6 @@ test_atom () { } hexlen=$(test_oid hexsz) -disklen=$(test_oid disklen) test_atom head refname refs/heads/main test_atom head refname: refs/heads/main @@ -129,7 +129,7 @@ test_atom head push:strip=1 remotes/myfork/main test_atom head push:strip=-1 main test_atom head objecttype commit test_atom head objectsize $((131 + hexlen)) -test_atom head objectsize:disk $disklen +test_atom head objectsize:disk $(test_object_file_size refs/heads/main) test_atom head deltabase $ZERO_OID test_atom head objectname $(git rev-parse refs/heads/main) test_atom head objectname:short $(git rev-parse --short refs/heads/main) @@ -203,8 +203,8 @@ test_atom tag upstream '' test_atom tag push '' test_atom tag objecttype tag test_atom tag objectsize $((114 + hexlen)) -test_atom tag objectsize:disk $disklen -test_atom tag '*objectsize:disk' $disklen +test_atom tag objectsize:disk $(test_object_file_size refs/tags/testtag) +test_atom tag '*objectsize:disk' $(test_object_file_size refs/heads/main) test_atom tag deltabase $ZERO_OID test_atom tag '*deltabase' $ZERO_OID test_atom tag objectname $(git rev-parse refs/tags/testtag) -- 2.43.0