Git fork

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>

authored by

Neeraj Singh and committed by
Junio C Hamano
fb2d0db5 8a94d833

+54 -47
+44 -47
t/t5317-pack-objects-filter-objects.sh
··· 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 - 16 git init r1 && 17 for n in 1 2 3 4 5 18 do ··· 22 done 23 ' 24 25 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 | 29 sort >expected && 30 31 git -C r1 pack-objects --revs --stdout >all.pack <<-EOF && ··· 35 36 git -C r1 verify-pack -v ../all.pack >verify_result && 37 grep blob verify_result | 38 - awk -f print_1.awk | 39 sort >observed && 40 41 test_cmp expected observed ··· 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 | 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 | 63 sort >observed && 64 65 test_cmp expected observed ··· 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 | 128 sort >expected && 129 130 git -C r2 pack-objects --revs --stdout >all.pack <<-EOF && ··· 134 135 git -C r2 verify-pack -v ../all.pack >verify_result && 136 grep blob verify_result | 137 - awk -f print_1.awk | 138 sort >observed && 139 140 test_cmp expected observed ··· 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 | 166 sort >expected && 167 168 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1001 >filter.pack <<-EOF && ··· 172 173 git -C r2 verify-pack -v ../filter.pack >verify_result && 174 grep blob verify_result | 175 - awk -f print_1.awk | 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 | 184 sort >expected && 185 186 git -C r2 pack-objects --revs --stdout --filter=blob:limit=10001 >filter.pack <<-EOF && ··· 190 191 git -C r2 verify-pack -v ../filter.pack >verify_result && 192 grep blob verify_result | 193 - awk -f print_1.awk | 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 | 202 sort >expected && 203 204 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1k >filter.pack <<-EOF && ··· 208 209 git -C r2 verify-pack -v ../filter.pack >verify_result && 210 grep blob verify_result | 211 - awk -f print_1.awk | 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 | 220 sort >expected && 221 222 echo HEAD >objects && ··· 226 227 git -C r2 verify-pack -v ../filter.pack >verify_result && 228 grep blob verify_result | 229 - awk -f print_1.awk | 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 | 238 sort >expected && 239 240 git -C r2 pack-objects --revs --stdout --filter=blob:limit=1m >filter.pack <<-EOF && ··· 244 245 git -C r2 verify-pack -v ../filter.pack >verify_result && 246 grep blob verify_result | 247 - awk -f print_1.awk | 248 sort >observed && 249 250 test_cmp expected observed ··· 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 | 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 | 262 sort >observed && 263 264 test_cmp expected observed ··· 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 | 295 sort >expected && 296 297 git -C r3 pack-objects --revs --stdout >all.pack <<-EOF && ··· 301 302 git -C r3 verify-pack -v ../all.pack >verify_result && 303 grep blob verify_result | 304 - awk -f print_1.awk | 305 sort >observed && 306 307 test_cmp expected observed ··· 342 ' 343 344 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 | 348 sort >expected && 349 350 git -C r4 pack-objects --revs --stdout >all.pack <<-EOF && ··· 354 355 git -C r4 verify-pack -v ../all.pack >verify_result && 356 grep blob verify_result | 357 - awk -f print_1.awk | 358 sort >observed && 359 360 test_cmp expected observed 361 ' 362 363 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 | 366 sort >expected && 367 368 git -C r4 ls-files -s pattern >staged && 369 - oid=$(awk -f print_2.awk staged) && 370 git -C r4 pack-objects --revs --stdout --filter=sparse:oid=$oid >filter.pack <<-EOF && 371 HEAD 372 EOF ··· 374 375 git -C r4 verify-pack -v ../filter.pack >verify_result && 376 grep blob verify_result | 377 - awk -f print_1.awk | 378 sort >observed && 379 380 test_cmp expected observed 381 ' 382 383 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 | 386 sort >expected && 387 388 git -C r4 pack-objects --revs --stdout --filter=sparse:oid=main:pattern >filter.pack <<-EOF && ··· 392 393 git -C r4 verify-pack -v ../filter.pack >verify_result && 394 grep blob verify_result | 395 - awk -f print_1.awk | 396 sort >observed && 397 398 test_cmp expected observed ··· 402 # This models previously omitted objects that we did not receive. 403 404 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 | 408 sort >expected && 409 410 for id in `cat expected | sed "s|..|&/|"`
··· 10 # Test blob:none filter. 11 12 test_expect_success 'setup r1' ' 13 git init r1 && 14 for n in 1 2 3 4 5 15 do ··· 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' ' 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 36 git -C r1 verify-pack -v ../all.pack >verify_result && 37 grep blob verify_result | 38 + parse_verify_pack_blob_oid | 39 sort >observed && 40 41 test_cmp expected observed ··· 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 + 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 + parse_verify_pack_blob_oid | 63 sort >observed && 64 65 test_cmp expected observed ··· 123 ' 124 125 test_expect_success 'verify blob count in normal packfile' ' 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 135 git -C r2 verify-pack -v ../all.pack >verify_result && 136 grep blob verify_result | 137 + parse_verify_pack_blob_oid | 138 sort >observed && 139 140 test_cmp expected observed ··· 161 ' 162 163 test_expect_success 'verify blob:limit=1001' ' 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 173 git -C r2 verify-pack -v ../filter.pack >verify_result && 174 grep blob verify_result | 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 | 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 191 git -C r2 verify-pack -v ../filter.pack >verify_result && 192 grep blob verify_result | 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 | 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 209 git -C r2 verify-pack -v ../filter.pack >verify_result && 210 grep blob verify_result | 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 | 219 + test_parse_ls_files_stage_oids | 220 sort >expected && 221 222 echo HEAD >objects && ··· 226 227 git -C r2 verify-pack -v ../filter.pack >verify_result && 228 grep blob verify_result | 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 | 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 245 git -C r2 verify-pack -v ../filter.pack >verify_result && 246 grep blob verify_result | 247 + parse_verify_pack_blob_oid | 248 sort >observed && 249 250 test_cmp expected observed ··· 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 + 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 + parse_verify_pack_blob_oid | 262 sort >observed && 263 264 test_cmp expected observed ··· 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 + test_parse_ls_files_stage_oids | 294 sort >expected && 295 296 git -C r3 pack-objects --revs --stdout >all.pack <<-EOF && ··· 300 301 git -C r3 verify-pack -v ../all.pack >verify_result && 302 grep blob verify_result | 303 + parse_verify_pack_blob_oid | 304 sort >observed && 305 306 test_cmp expected observed ··· 341 ' 342 343 test_expect_success 'verify blob count in normal packfile' ' 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 && ··· 352 353 git -C r4 verify-pack -v ../all.pack >verify_result && 354 grep blob verify_result | 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' ' 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 && 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 ··· 372 373 git -C r4 verify-pack -v ../filter.pack >verify_result && 374 grep blob verify_result | 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' ' 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 && ··· 390 391 git -C r4 verify-pack -v ../filter.pack >verify_result && 392 grep blob verify_result | 393 + parse_verify_pack_blob_oid | 394 sort >observed && 395 396 test_cmp expected observed ··· 400 # This models previously omitted objects that we did not receive. 401 402 test_expect_success 'setup r1 - delete loose blobs' ' 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|..|&/|"`
+10
t/test-lib-functions.sh
··· 1706 echo "${1%$basename}/$basename" 1707 } 1708 1709 # Choose a port number based on the test script's number and store it in 1710 # the given variable name, unless that variable already contains a number. 1711 test_set_port () {
··· 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 () {