mirror of
https://github.com/git/git
synced 2024-11-04 16:17:49 +00:00
t5332-multi-pack-reuse.sh: extract pack-objects helper functions
Most of the tests in t5332 perform some setup before repeating a common refrain that looks like: : >trace2.txt && GIT_TRACE2_EVENT="$PWD/trace2.txt" \ git pack-objects --stdout --revs --all >/dev/null && test_pack_reused $objects_nr <trace2.txt && test_packs_reused $packs_nr <trace2.txt The next commit will add more tests which repeat the above refrain. Avoid duplicating this invocation even further and prepare for the following commit by wrapping the above in a helper function called `test_pack_objects_reused_all()`. Introduce another similar function `test_pack_objects_reused`, which expects to read a list of revisions over stdin for tests which need more fine-grained control of the contents of the pack they generate. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
2a540e432f
commit
7c01878eeb
1 changed files with 29 additions and 42 deletions
|
@ -23,6 +23,27 @@ pack_position () {
|
|||
grep "$1" objects | cut -d" " -f1
|
||||
}
|
||||
|
||||
# test_pack_objects_reused_all <pack-reused> <packs-reused>
|
||||
test_pack_objects_reused_all () {
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --revs --all --delta-base-offset \
|
||||
>/dev/null &&
|
||||
|
||||
test_pack_reused "$1" <trace2.txt &&
|
||||
test_packs_reused "$2" <trace2.txt
|
||||
}
|
||||
|
||||
# test_pack_objects_reused <pack-reused> <packs-reused>
|
||||
test_pack_objects_reused () {
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --revs >/dev/null &&
|
||||
|
||||
test_pack_reused "$1" <trace2.txt &&
|
||||
test_packs_reused "$2" <trace2.txt
|
||||
}
|
||||
|
||||
test_expect_success 'preferred pack is reused for single-pack reuse' '
|
||||
test_config pack.allowPackReuse single &&
|
||||
|
||||
|
@ -34,14 +55,10 @@ test_expect_success 'preferred pack is reused for single-pack reuse' '
|
|||
|
||||
git multi-pack-index write --bitmap &&
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --revs --all >/dev/null &&
|
||||
|
||||
test_pack_reused 3 <trace2.txt &&
|
||||
test_packs_reused 1 <trace2.txt
|
||||
test_pack_objects_reused_all 3 1
|
||||
'
|
||||
|
||||
|
||||
test_expect_success 'enable multi-pack reuse' '
|
||||
git config pack.allowPackReuse multi
|
||||
'
|
||||
|
@ -57,21 +74,11 @@ test_expect_success 'reuse all objects from subset of bitmapped packs' '
|
|||
^$(git rev-parse A)
|
||||
EOF
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --revs <in >/dev/null &&
|
||||
|
||||
test_pack_reused 6 <trace2.txt &&
|
||||
test_packs_reused 2 <trace2.txt
|
||||
test_pack_objects_reused 6 2 <in
|
||||
'
|
||||
|
||||
test_expect_success 'reuse all objects from all packs' '
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --revs --all >/dev/null &&
|
||||
|
||||
test_pack_reused 9 <trace2.txt &&
|
||||
test_packs_reused 3 <trace2.txt
|
||||
test_pack_objects_reused_all 9 3
|
||||
'
|
||||
|
||||
test_expect_success 'reuse objects from first pack with middle gap' '
|
||||
|
@ -104,12 +111,7 @@ test_expect_success 'reuse objects from first pack with middle gap' '
|
|||
^$(git rev-parse D)
|
||||
EOF
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
|
||||
|
||||
test_pack_reused 3 <trace2.txt &&
|
||||
test_packs_reused 1 <trace2.txt
|
||||
test_pack_objects_reused 3 1 <in
|
||||
'
|
||||
|
||||
test_expect_success 'reuse objects from middle pack with middle gap' '
|
||||
|
@ -125,12 +127,7 @@ test_expect_success 'reuse objects from middle pack with middle gap' '
|
|||
^$(git rev-parse D)
|
||||
EOF
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
|
||||
|
||||
test_pack_reused 3 <trace2.txt &&
|
||||
test_packs_reused 1 <trace2.txt
|
||||
test_pack_objects_reused 3 1 <in
|
||||
'
|
||||
|
||||
test_expect_success 'omit delta with uninteresting base (same pack)' '
|
||||
|
@ -160,10 +157,6 @@ test_expect_success 'omit delta with uninteresting base (same pack)' '
|
|||
^$base
|
||||
EOF
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
|
||||
|
||||
# We can only reuse the 3 objects corresponding to "other" from
|
||||
# the latest pack.
|
||||
#
|
||||
|
@ -175,8 +168,7 @@ test_expect_success 'omit delta with uninteresting base (same pack)' '
|
|||
# The remaining objects from the other pack are similarly not
|
||||
# reused because their objects are on the uninteresting side of
|
||||
# the query.
|
||||
test_pack_reused 3 <trace2.txt &&
|
||||
test_packs_reused 1 <trace2.txt
|
||||
test_pack_objects_reused 3 1 <in
|
||||
'
|
||||
|
||||
test_expect_success 'omit delta from uninteresting base (cross pack)' '
|
||||
|
@ -189,15 +181,10 @@ test_expect_success 'omit delta from uninteresting base (cross pack)' '
|
|||
|
||||
git multi-pack-index write --bitmap --preferred-pack="pack-$P.idx" &&
|
||||
|
||||
: >trace2.txt &&
|
||||
GIT_TRACE2_EVENT="$PWD/trace2.txt" \
|
||||
git pack-objects --stdout --delta-base-offset --all >/dev/null &&
|
||||
|
||||
packs_nr="$(find $packdir -type f -name "pack-*.pack" | wc -l)" &&
|
||||
objects_nr="$(git rev-list --count --all --objects)" &&
|
||||
|
||||
test_pack_reused $(($objects_nr - 1)) <trace2.txt &&
|
||||
test_packs_reused $packs_nr <trace2.txt
|
||||
test_pack_objects_reused_all $(($objects_nr - 1)) $packs_nr
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Loading…
Reference in a new issue