@@ -404,4 +404,50 @@ test_expect_success 'Bloom generation backfills empty commits' '
)
'
+get_bdat_offset () {
+ perl -0777 -ne \
+ 'print unpack("N", "$1") if /BDAT\0\0\0\0(....)/ or exit 1' \
+ .git/objects/info/commit-graph
+}
+
+get_first_changed_path_filter () {
+ BDAT_OFFSET=$(get_bdat_offset) &&
+ perl -0777 -ne \
+ 'print unpack("H*", substr($_, '$BDAT_OFFSET' + 12, 2))' \
+ .git/objects/info/commit-graph
+}
+
+# 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 &&
+ printf "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 'version 1 changed-path used when version 1 requested' '
+ (cd highbit1 &&
+ test_bloom_filters_used "-- $CENT")
+'
+
test_done