]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t4216: test changed path filters with high bit paths
authorTaylor Blau <me@ttaylorr.com>
Tue, 25 Jun 2024 17:39:47 +0000 (13:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 25 Jun 2024 20:52:06 +0000 (13:52 -0700)
Subsequent commits will teach Git another version of changed path
filter that has different behavior with paths that contain at least
one character with its high bit set, so test the existing behavior as
a baseline.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t4216-log-bloom.sh

index c1977961d01c5a26cc26a9414cef38fb7d461a8a..49d11131713bab13728143f1267098713608cd4a 100755 (executable)
@@ -488,6 +488,57 @@ test_expect_success 'merge graph layers with incompatible Bloom settings' '
        test_must_be_empty err
 '
 
+get_first_changed_path_filter () {
+       test-tool read-graph bloom-filters >filters.dat &&
+       head -n 1 filters.dat
+}
+
+# chosen to be the same under all Unicode normalization forms
+CENT=$(printf "\302\242")
+
+test_expect_success 'set up repo with high bit path, version 1 changed-path' '
+       git init highbit1 &&
+       test_commit -C highbit1 c1 "$CENT" &&
+       git -C highbit1 commit-graph write --reachable --changed-paths
+'
+
+test_expect_success 'setup check value of version 1 changed-path' '
+       (
+               cd highbit1 &&
+               echo "52a9" >expect &&
+               get_first_changed_path_filter >actual
+       )
+'
+
+# 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
+'
+
+test_expect_success 'setup make another commit' '
+       # "git log" does not use Bloom filters for root commits - see how, in
+       # revision.c, rev_compare_tree() (the only code path that eventually calls
+       # get_bloom_filter()) is only called by try_to_simplify_commit() when the commit
+       # has one parent. Therefore, make another commit so that we perform the tests on
+       # a non-root commit.
+       test_commit -C highbit1 anotherc1 "another$CENT"
+'
+
+test_expect_success 'version 1 changed-path used when version 1 requested' '
+       (
+               cd highbit1 &&
+               test_bloom_filters_used "-- another$CENT"
+       )
+'
+
 corrupt_graph () {
        test_when_finished "rm -rf $graph" &&
        git commit-graph write --reachable --changed-paths &&