t5316: refactor `max_chain()` to not depend on Perl

The `max_chain()` helper function is used to extract the maximum delta chain of a packfile as printed by git-index-pack(1). The script uses Perl to extract that data, but it can be trivially refactored to use awk(1) instead. Refactor the helper accordingly so that we can drop a couple of PERL_TEST_HELPERS prerequisites. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Apr 3, 2025 at 07:06 UTC 88bef8db847ae45a22e5238e324654d72d078a26
1 file changed +9 -9
t/t5316-pack-delta-depth.sh
+9 -9
@@ -76,18 +76,18 @@ test_expect_success 'create series of packs' '
76
77 max_chain() {
78 git index-pack --verify-stat-only "$1" >output &&
79 - perl -lne '
80 - BEGIN { $len = 0 }
81 - /chain length = (\d+)/ and $len = $1;
82 - END { print $len }
83 - ' output
79 + awk '
80 + BEGIN { len=0 }
81 + /chain length = [0-9]+:/{ len=$4 }
82 + END { print len }
83 + ' <output | tr -d ':'
84 }
85
86 # Note that this whole setup is pretty reliant on the current
87 # packing heuristics. We double-check that our test case
88 # actually produces a long chain. If it doesn't, it should be
89 # adjusted (or scrapped if the heuristics have become too unreliable)
90 -test_expect_success PERL_TEST_HELPERS 'packing produces a long delta' '
90 +test_expect_success 'packing produces a long delta' '
91 # Use --window=0 to make sure we are seeing reused deltas,
92 # not computing a new long chain.
93 pack=$(git pack-objects --all --window=0 </dev/null pack) &&
@@ -96,21 +96,21 @@ test_expect_success PERL_TEST_HELPERS 'packing produces a long delta' '
96 test_cmp expect actual
97 '
98
99 -test_expect_success PERL_TEST_HELPERS '--depth limits depth' '
99 +test_expect_success '--depth limits depth' '
100 pack=$(git pack-objects --all --depth=5 </dev/null pack) &&
101 echo 5 >expect &&
102 max_chain pack-$pack.pack >actual &&
103 test_cmp expect actual
104 '
105
106 -test_expect_success PERL_TEST_HELPERS '--depth=0 disables deltas' '
106 +test_expect_success '--depth=0 disables deltas' '
107 pack=$(git pack-objects --all --depth=0 </dev/null pack) &&
108 echo 0 >expect &&
109 max_chain pack-$pack.pack >actual &&
110 test_cmp expect actual
111 '
112
113 -test_expect_success PERL_TEST_HELPERS 'negative depth disables deltas' '
113 +test_expect_success 'negative depth disables deltas' '
114 pack=$(git pack-objects --all --depth=-1 </dev/null pack) &&
115 echo 0 >expect &&
116 max_chain pack-$pack.pack >actual &&