t/t5332-multi-pack-reuse.sh: verify pack generation with --strict

In our tests for multi-pack reuse, we have two helper functions: - test_pack_objects_reused_all(), and - test_pack_objects_reused() which invoke pack-objects (either with `--all`, or the supplied tips via stdin, respectively) and ensure that (a) the number of reused objects, and (b) the number of packs which those objects were reused from both match the expected values. Both functions discard the output of pack-objects and assert only on the contents of the trace2 stream. However, if we store the pack and attempt to index it with `--strict`, we find that a number of our tests are broken, indicating a bug within multi-pack reuse. That bug will be addressed in a subsequent commit. But let's first harden these tests by trying to index the resulting pack, marking the tests which fail appropriately. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Aug 27, 2024 at 17:13 UTC bbc393a9f3acc689f611fd602499064a2fe27d1a
1 file changed +12 -8
t/t5332-multi-pack-reuse.sh
+12 -8
@@ -31,20 +31,24 @@ test_pack_objects_reused_all () {
31 : >trace2.txt &&
32 GIT_TRACE2_EVENT="$PWD/trace2.txt" \
33 git pack-objects --stdout --revs --all --delta-base-offset \
34 - >/dev/null &&
34 + >got.pack &&
35
36 test_pack_reused "$1" <trace2.txt &&
37 - test_packs_reused "$2" <trace2.txt
37 + test_packs_reused "$2" <trace2.txt &&
38 +
39 + git index-pack --strict -o got.idx got.pack
40 }
41
42 # test_pack_objects_reused <pack-reused> <packs-reused>
43 test_pack_objects_reused () {
44 : >trace2.txt &&
45 GIT_TRACE2_EVENT="$PWD/trace2.txt" \
44 - git pack-objects --stdout --revs >/dev/null &&
46 + git pack-objects --stdout --revs >got.pack &&
47
48 test_pack_reused "$1" <trace2.txt &&
47 - test_packs_reused "$2" <trace2.txt
49 + test_packs_reused "$2" <trace2.txt &&
50 +
51 + git index-pack --strict -o got.idx got.pack
52 }
53
54 test_expect_success 'preferred pack is reused for single-pack reuse' '
@@ -65,7 +69,7 @@ test_expect_success 'multi-pack reuse is disabled by default' '
69 test_pack_objects_reused_all 3 1
70 '
71
68 -test_expect_success 'feature.experimental implies multi-pack reuse' '
72 +test_expect_failure 'feature.experimental implies multi-pack reuse' '
73 test_config feature.experimental true &&
74
75 test_pack_objects_reused_all 6 2
@@ -82,7 +86,7 @@ test_expect_success 'enable multi-pack reuse' '
86 git config pack.allowPackReuse multi
87 '
88
85 -test_expect_success 'reuse all objects from subset of bitmapped packs' '
89 +test_expect_failure 'reuse all objects from subset of bitmapped packs' '
90 test_commit C &&
91 git repack -d &&
92
@@ -96,7 +100,7 @@ test_expect_success 'reuse all objects from subset of bitmapped packs' '
100 test_pack_objects_reused 6 2 <in
101 '
102
99 -test_expect_success 'reuse all objects from all packs' '
103 +test_expect_failure 'reuse all objects from all packs' '
104 test_pack_objects_reused_all 9 3
105 '
106
@@ -190,7 +194,7 @@ test_expect_success 'omit delta with uninteresting base (same pack)' '
194 test_pack_objects_reused 3 1 <in
195 '
196
193 -test_expect_success 'omit delta from uninteresting base (cross pack)' '
197 +test_expect_failure 'omit delta from uninteresting base (cross pack)' '
198 cat >in <<-EOF &&
199 $(git rev-parse $base)
200 ^$(git rev-parse $delta)