]> git.ipfire.org Git - thirdparty/git.git/commitdiff
hash-object: add a >4GB/LLP64 test case using filtered input
authorPhilip Oakley <philipoakley@iee.email>
Tue, 16 Jun 2026 14:49:57 +0000 (14:49 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Jun 2026 16:02:33 +0000 (09:02 -0700)
To verify that the `clean` side of the `clean`/`smudge` filter code is
correct with regards to LLP64 (read: to ensure that `size_t` is used
instead of `unsigned long`), here is a test case using a trivial filter,
specifically _not_ writing anything to the object store to limit the
scope of the test case.

As in previous commits, the `big` file from previous test cases is
reused if available, to save setup time, otherwise re-generated.

Signed-off-by: Philip Oakley <philipoakley@iee.email>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t1007-hash-object.sh

index f96c29ce68ea4943818e526f4494d4f0003571ce..4bc82dd9682954cbd1bfc319a5e6c154a82c97c1 100755 (executable)
@@ -285,4 +285,16 @@ test_expect_success EXPENSIVE,SIZE_T_IS_64BIT \
        test_cmp expect actual
 '
 
+# This clean filter does nothing, other than excercising the interface.
+# We ensure that cleaning doesn't mangle large files on 64-bit Windows.
+test_expect_success EXPENSIVE,SIZE_T_IS_64BIT \
+               'hash filtered files over 4GB correctly' '
+       { test -f big || test-tool genzeros $((5*1024*1024*1024)) >big; } &&
+       test_oid large5GB >expect &&
+       test_config filter.null-filter.clean "cat" &&
+       echo "big filter=null-filter" >.gitattributes &&
+       git hash-object -- big >actual &&
+       test_cmp expect actual
+'
+
 test_done