test-lib-functions: add parsing helpers for ls-files and ls-tree

Several tests use awk to parse OIDs from the output of 'git ls-files --stage' and 'git ls-tree'. Introduce helpers to centralize these uses of awk. Update t5317-pack-objects-filter-objects.sh to use the new ls-files helper so that it has some usages to review. Other updates are left for the future. Signed-off-by: Neeraj Singh <neerajsi@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Neeraj Singh committed Apr 4, 2022 at 22:20 UTC fb2d0db502240231cde9584d2a908ae186a2ae06
2 files changed +54 -47
t/t5317-pack-objects-filter-objects.sh
+44 -47
@@ -10,9 +10,6 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
10 # Test blob:none filter.
11
12 test_expect_success 'setup r1' '
13 - echo "{print \$1}" >print_1.awk &&
14 - echo "{print \$2}" >print_2.awk &&
15 -
13 git init r1 &&
14 for n in 1 2 3 4 5
15 do
@@ -22,10 +19,13 @@ test_expect_success 'setup r1' '
19 done
20 '
21
22 +parse_verify_pack_blob_oid () {
23 + awk '{print $1}' -
24 +}
25 +
26 test_expect_success 'verify blob count in normal packfile' '
26 - git -C r1 ls-files -s file.1 file.2 file.3 file.4 file.5 \
27 - >ls_files_result &&
28 - awk -f print_2.awk ls_files_result |
27 + git -C r1 ls-files -s file.1 file.2 file.3 file.4 file.5 |
28 + test_parse_ls_files_stage_oids |
29 sort >expected &&
30
31 git -C r1 pack-objects --revs --stdout >all.pack <<-EOF &&
@@ -35,7 +35,7 @@ test_expect_success 'verify blob count in normal packfile' '
35
36 git -C r1 verify-pack -v ../all.pack >verify_result &&
37 grep blob verify_result |
38 - awk -f print_1.awk |
38 + parse_verify_pack_blob_oid |
39 sort >observed &&
40
41 test_cmp expected observed
@@ -54,12 +54,12 @@ test_expect_success 'verify blob:none packfile has no blobs' '
54 test_expect_success 'verify normal and blob:none packfiles have same commits/trees' '
55 git -C r1 verify-pack -v ../all.pack >verify_result &&
56 grep -E "commit|tree" verify_result |
57 - awk -f print_1.awk |
57 + parse_verify_pack_blob_oid |
58 sort >expected &&
59
60 git -C r1 verify-pack -v ../filter.pack >verify_result &&
61 grep -E "commit|tree" verify_result |
62 - awk -f print_1.awk |
62 + parse_verify_pack_blob_oid |
63 sort >observed &&
64
65 test_cmp expected observed
@@ -123,8 +123,8 @@ test_expect_success 'setup r2' '
123 '
124
125 test_expect_success 'verify blob count in normal packfile' '
126 - git -C r2 ls-files -s large.1000 large.10000 >ls_files_result &&
127 - awk -f print_2.awk ls_files_result |
126 + git -C r2 ls-files -s large.1000 large.10000 |
127 + test_parse_ls_files_stage_oids |
128 sort >expected &&
129
130 git -C r2 pack-objects --revs --stdout >all.pack <<-EOF &&
@@ -134,7 +134,7 @@ test_expect_success 'verify blob count in normal packfile' '
134
135 git -C r2 verify-pack -v ../all.pack >verify_result &&
136 grep blob verify_result |
137 - awk -f print_1.awk |
137 + parse_verify_pack_blob_oid |
138 sort >observed &&
139
140 test_cmp expected observed
@@ -161,8 +161,8 @@ test_expect_success 'verify blob:limit=1000' '
161 '
162
163 test_expect_success 'verify blob:limit=1001' '
164 - git -C r2 ls-files -s large.1000 >ls_files_result &&
165 - awk -f print_2.awk ls_files_result |
164 + git -C r2 ls-files -s large.1000 |
165 + test_parse_ls_files_stage_oids |
166 sort >expected &&
167
168 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1001 >filter.pack <<-EOF &&
@@ -172,15 +172,15 @@ test_expect_success 'verify blob:limit=1001' '
172
173 git -C r2 verify-pack -v ../filter.pack >verify_result &&
174 grep blob verify_result |
175 - awk -f print_1.awk |
175 + parse_verify_pack_blob_oid |
176 sort >observed &&
177
178 test_cmp expected observed
179 '
180
181 test_expect_success 'verify blob:limit=10001' '
182 - git -C r2 ls-files -s large.1000 large.10000 >ls_files_result &&
183 - awk -f print_2.awk ls_files_result |
182 + git -C r2 ls-files -s large.1000 large.10000 |
183 + test_parse_ls_files_stage_oids |
184 sort >expected &&
185
186 git -C r2 pack-objects --revs --stdout --filter=blob:limit=10001 >filter.pack <<-EOF &&
@@ -190,15 +190,15 @@ test_expect_success 'verify blob:limit=10001' '
190
191 git -C r2 verify-pack -v ../filter.pack >verify_result &&
192 grep blob verify_result |
193 - awk -f print_1.awk |
193 + parse_verify_pack_blob_oid |
194 sort >observed &&
195
196 test_cmp expected observed
197 '
198
199 test_expect_success 'verify blob:limit=1k' '
200 - git -C r2 ls-files -s large.1000 >ls_files_result &&
201 - awk -f print_2.awk ls_files_result |
200 + git -C r2 ls-files -s large.1000 |
201 + test_parse_ls_files_stage_oids |
202 sort >expected &&
203
204 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1k >filter.pack <<-EOF &&
@@ -208,15 +208,15 @@ test_expect_success 'verify blob:limit=1k' '
208
209 git -C r2 verify-pack -v ../filter.pack >verify_result &&
210 grep blob verify_result |
211 - awk -f print_1.awk |
211 + parse_verify_pack_blob_oid |
212 sort >observed &&
213
214 test_cmp expected observed
215 '
216
217 test_expect_success 'verify explicitly specifying oversized blob in input' '
218 - git -C r2 ls-files -s large.1000 large.10000 >ls_files_result &&
219 - awk -f print_2.awk ls_files_result |
218 + git -C r2 ls-files -s large.1000 large.10000 |
219 + test_parse_ls_files_stage_oids |
220 sort >expected &&
221
222 echo HEAD >objects &&
@@ -226,15 +226,15 @@ test_expect_success 'verify explicitly specifying oversized blob in input' '
226
227 git -C r2 verify-pack -v ../filter.pack >verify_result &&
228 grep blob verify_result |
229 - awk -f print_1.awk |
229 + parse_verify_pack_blob_oid |
230 sort >observed &&
231
232 test_cmp expected observed
233 '
234
235 test_expect_success 'verify blob:limit=1m' '
236 - git -C r2 ls-files -s large.1000 large.10000 >ls_files_result &&
237 - awk -f print_2.awk ls_files_result |
236 + git -C r2 ls-files -s large.1000 large.10000 |
237 + test_parse_ls_files_stage_oids |
238 sort >expected &&
239
240 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1m >filter.pack <<-EOF &&
@@ -244,7 +244,7 @@ test_expect_success 'verify blob:limit=1m' '
244
245 git -C r2 verify-pack -v ../filter.pack >verify_result &&
246 grep blob verify_result |
247 - awk -f print_1.awk |
247 + parse_verify_pack_blob_oid |
248 sort >observed &&
249
250 test_cmp expected observed
@@ -253,12 +253,12 @@ test_expect_success 'verify blob:limit=1m' '
253 test_expect_success 'verify normal and blob:limit packfiles have same commits/trees' '
254 git -C r2 verify-pack -v ../all.pack >verify_result &&
255 grep -E "commit|tree" verify_result |
256 - awk -f print_1.awk |
256 + parse_verify_pack_blob_oid |
257 sort >expected &&
258
259 git -C r2 verify-pack -v ../filter.pack >verify_result &&
260 grep -E "commit|tree" verify_result |
261 - awk -f print_1.awk |
261 + parse_verify_pack_blob_oid |
262 sort >observed &&
263
264 test_cmp expected observed
@@ -289,9 +289,8 @@ test_expect_success 'setup r3' '
289 '
290
291 test_expect_success 'verify blob count in normal packfile' '
292 - git -C r3 ls-files -s sparse1 sparse2 dir1/sparse1 dir1/sparse2 \
293 - >ls_files_result &&
294 - awk -f print_2.awk ls_files_result |
292 + git -C r3 ls-files -s sparse1 sparse2 dir1/sparse1 dir1/sparse2 |
293 + test_parse_ls_files_stage_oids |
294 sort >expected &&
295
296 git -C r3 pack-objects --revs --stdout >all.pack <<-EOF &&
@@ -301,7 +300,7 @@ test_expect_success 'verify blob count in normal packfile' '
300
301 git -C r3 verify-pack -v ../all.pack >verify_result &&
302 grep blob verify_result |
304 - awk -f print_1.awk |
303 + parse_verify_pack_blob_oid |
304 sort >observed &&
305
306 test_cmp expected observed
@@ -342,9 +341,8 @@ test_expect_success 'setup r4' '
341 '
342
343 test_expect_success 'verify blob count in normal packfile' '
345 - git -C r4 ls-files -s pattern sparse1 sparse2 dir1/sparse1 dir1/sparse2 \
346 - >ls_files_result &&
347 - awk -f print_2.awk ls_files_result |
344 + git -C r4 ls-files -s pattern sparse1 sparse2 dir1/sparse1 dir1/sparse2 |
345 + test_parse_ls_files_stage_oids |
346 sort >expected &&
347
348 git -C r4 pack-objects --revs --stdout >all.pack <<-EOF &&
@@ -354,19 +352,19 @@ test_expect_success 'verify blob count in normal packfile' '
352
353 git -C r4 verify-pack -v ../all.pack >verify_result &&
354 grep blob verify_result |
357 - awk -f print_1.awk |
355 + parse_verify_pack_blob_oid |
356 sort >observed &&
357
358 test_cmp expected observed
359 '
360
361 test_expect_success 'verify sparse:oid=OID' '
364 - git -C r4 ls-files -s dir1/sparse1 dir1/sparse2 >ls_files_result &&
365 - awk -f print_2.awk ls_files_result |
362 + git -C r4 ls-files -s dir1/sparse1 dir1/sparse2 |
363 + test_parse_ls_files_stage_oids |
364 sort >expected &&
365
366 git -C r4 ls-files -s pattern >staged &&
369 - oid=$(awk -f print_2.awk staged) &&
367 + oid=$(test_parse_ls_files_stage_oids <staged) &&
368 git -C r4 pack-objects --revs --stdout --filter=sparse:oid=$oid >filter.pack <<-EOF &&
369 HEAD
370 EOF
@@ -374,15 +372,15 @@ test_expect_success 'verify sparse:oid=OID' '
372
373 git -C r4 verify-pack -v ../filter.pack >verify_result &&
374 grep blob verify_result |
377 - awk -f print_1.awk |
375 + parse_verify_pack_blob_oid |
376 sort >observed &&
377
378 test_cmp expected observed
379 '
380
381 test_expect_success 'verify sparse:oid=oid-ish' '
384 - git -C r4 ls-files -s dir1/sparse1 dir1/sparse2 >ls_files_result &&
385 - awk -f print_2.awk ls_files_result |
382 + git -C r4 ls-files -s dir1/sparse1 dir1/sparse2 |
383 + test_parse_ls_files_stage_oids |
384 sort >expected &&
385
386 git -C r4 pack-objects --revs --stdout --filter=sparse:oid=main:pattern >filter.pack <<-EOF &&
@@ -392,7 +390,7 @@ test_expect_success 'verify sparse:oid=oid-ish' '
390
391 git -C r4 verify-pack -v ../filter.pack >verify_result &&
392 grep blob verify_result |
395 - awk -f print_1.awk |
393 + parse_verify_pack_blob_oid |
394 sort >observed &&
395
396 test_cmp expected observed
@@ -402,9 +400,8 @@ test_expect_success 'verify sparse:oid=oid-ish' '
400 # This models previously omitted objects that we did not receive.
401
402 test_expect_success 'setup r1 - delete loose blobs' '
405 - git -C r1 ls-files -s file.1 file.2 file.3 file.4 file.5 \
406 - >ls_files_result &&
407 - awk -f print_2.awk ls_files_result |
403 + git -C r1 ls-files -s file.1 file.2 file.3 file.4 file.5 |
404 + test_parse_ls_files_stage_oids |
405 sort >expected &&
406
407 for id in `cat expected | sed "s|..|&/|"`
t/test-lib-functions.sh
+10
@@ -1706,6 +1706,16 @@ test_oid_to_path () {
1706 echo "${1%$basename}/$basename"
1707 }
1708
1709 +# Parse oids from git ls-files --staged output
1710 +test_parse_ls_files_stage_oids () {
1711 + awk '{print $2}' -
1712 +}
1713 +
1714 +# Parse oids from git ls-tree output
1715 +test_parse_ls_tree_oids () {
1716 + awk '{print $3}' -
1717 +}
1718 +
1719 # Choose a port number based on the test script's number and store it in
1720 # the given variable name, unless that variable already contains a number.
1721 test_set_port () {