t5500: Modernize test style
Code outside of the test harness was emitting "Initializing..." from git-init. Fixup this test to be more modern: - test_expect_object_count() and count_objects() are unused - use grep directly instead of test "..." = $(grep ...) - end the test_expect_success line with a single-quote and put the test on a new line - put as much code inside the test harness as possible - no_strict_count_check is unused and duplicates the test "new object count" - use && whenever possible to catch errors early - use test_tick instead of GIT_AUTHOR_DATE=$sec - remove debugging aid log.txt - use subshells instead of cd-ing around Also merge the pull test into one large test. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
d7107ca65f
commit
3902985a58
@ -3,9 +3,8 @@
|
||||
# Copyright (c) 2005 Johannes Schindelin
|
||||
#
|
||||
|
||||
test_description='Testing multi_ack pack fetching
|
||||
test_description='Testing multi_ack pack fetching'
|
||||
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
# Test fetch-pack/upload-pack pair.
|
||||
@ -13,77 +12,60 @@ test_description='Testing multi_ack pack fetching
|
||||
# Some convenience functions
|
||||
|
||||
add () {
|
||||
name=$1
|
||||
text="$@"
|
||||
branch=`echo $name | sed -e 's/^\(.\).*$/\1/'`
|
||||
parents=""
|
||||
name=$1 &&
|
||||
text="$@" &&
|
||||
branch=`echo $name | sed -e 's/^\(.\).*$/\1/'` &&
|
||||
parents="" &&
|
||||
|
||||
shift
|
||||
shift &&
|
||||
while test $1; do
|
||||
parents="$parents -p $1"
|
||||
parents="$parents -p $1" &&
|
||||
shift
|
||||
done
|
||||
done &&
|
||||
|
||||
echo "$text" > test.txt
|
||||
git update-index --add test.txt
|
||||
tree=$(git write-tree)
|
||||
echo "$text" > test.txt &&
|
||||
git update-index --add test.txt &&
|
||||
tree=$(git write-tree) &&
|
||||
# make sure timestamps are in correct order
|
||||
sec=$(($sec+1))
|
||||
commit=$(echo "$text" | GIT_AUTHOR_DATE=$sec \
|
||||
git commit-tree $tree $parents 2>>log2.txt)
|
||||
eval "$name=$commit; export $name"
|
||||
echo $commit > .git/refs/heads/$branch
|
||||
test_tick &&
|
||||
commit=$(echo "$text" | git commit-tree $tree $parents) &&
|
||||
eval "$name=$commit; export $name" &&
|
||||
echo $commit > .git/refs/heads/$branch &&
|
||||
eval ${branch}TIP=$commit
|
||||
}
|
||||
|
||||
count_objects () {
|
||||
ls .git/objects/??/* 2>>log2.txt | wc -l | tr -d " "
|
||||
}
|
||||
|
||||
test_expect_object_count () {
|
||||
message=$1
|
||||
count=$2
|
||||
|
||||
output="$(count_objects)"
|
||||
test_expect_success \
|
||||
"new object count $message" \
|
||||
"test $count = $output"
|
||||
}
|
||||
|
||||
pull_to_client () {
|
||||
number=$1
|
||||
heads=$2
|
||||
count=$3
|
||||
no_strict_count_check=$4
|
||||
number=$1 &&
|
||||
heads=$2 &&
|
||||
count=$3 &&
|
||||
test_expect_success "$number pull" '
|
||||
(
|
||||
cd client &&
|
||||
git fetch-pack -k -v .. $heads &&
|
||||
|
||||
cd client
|
||||
test_expect_success "$number pull" \
|
||||
"git fetch-pack -k -v .. $heads"
|
||||
case "$heads" in *A*) echo $ATIP > .git/refs/heads/A;; esac
|
||||
case "$heads" in *B*) echo $BTIP > .git/refs/heads/B;; esac
|
||||
git symbolic-ref HEAD refs/heads/`echo $heads | sed -e 's/^\(.\).*$/\1/'`
|
||||
case "$heads" in
|
||||
*A*)
|
||||
echo $ATIP > .git/refs/heads/A;;
|
||||
esac &&
|
||||
case "$heads" in *B*)
|
||||
echo $BTIP > .git/refs/heads/B;;
|
||||
esac &&
|
||||
git symbolic-ref HEAD refs/heads/`echo $heads \
|
||||
| sed -e "s/^\(.\).*$/\1/"` &&
|
||||
|
||||
test_expect_success "fsck" 'git fsck --full > fsck.txt 2>&1'
|
||||
git fsck --full &&
|
||||
|
||||
test_expect_success 'check downloaded results' \
|
||||
'mv .git/objects/pack/pack-* . &&
|
||||
p=`ls -1 pack-*.pack` &&
|
||||
git unpack-objects <$p &&
|
||||
git fsck --full'
|
||||
mv .git/objects/pack/pack-* . &&
|
||||
p=`ls -1 pack-*.pack` &&
|
||||
git unpack-objects <$p &&
|
||||
git fsck --full &&
|
||||
|
||||
test_expect_success "new object count after $number pull" \
|
||||
'idx=`echo pack-*.idx` &&
|
||||
pack_count=`git show-index <$idx | wc -l` &&
|
||||
test $pack_count = $count'
|
||||
test -z "$pack_count" && pack_count=0
|
||||
if [ -z "$no_strict_count_check" ]; then
|
||||
test_expect_success "minimal count" "test $count = $pack_count"
|
||||
else
|
||||
test $count != $pack_count && \
|
||||
echo "WARNING: $pack_count objects transmitted, only $count of which were needed"
|
||||
fi
|
||||
rm -f pack-*
|
||||
cd ..
|
||||
idx=`echo pack-*.idx` &&
|
||||
pack_count=`git show-index <$idx | wc -l` &&
|
||||
test $pack_count = $count &&
|
||||
rm -f pack-*
|
||||
)
|
||||
'
|
||||
}
|
||||
|
||||
# Here begins the actual testing
|
||||
@ -94,89 +76,129 @@ pull_to_client () {
|
||||
|
||||
# client pulls A20, B1. Then tracks only B. Then pulls A.
|
||||
|
||||
(
|
||||
test_expect_success 'setup' '
|
||||
mkdir client &&
|
||||
cd client &&
|
||||
git init 2>> log2.txt &&
|
||||
git config transfer.unpacklimit 0
|
||||
)
|
||||
|
||||
add A1
|
||||
|
||||
prev=1; cur=2; while [ $cur -le 10 ]; do
|
||||
add A$cur $(eval echo \$A$prev)
|
||||
prev=$cur
|
||||
cur=$(($cur+1))
|
||||
done
|
||||
|
||||
add B1 $A1
|
||||
|
||||
echo $ATIP > .git/refs/heads/A
|
||||
echo $BTIP > .git/refs/heads/B
|
||||
git symbolic-ref HEAD refs/heads/B
|
||||
(
|
||||
cd client &&
|
||||
git init &&
|
||||
git config transfer.unpacklimit 0
|
||||
) &&
|
||||
add A1 &&
|
||||
prev=1 &&
|
||||
cur=2 &&
|
||||
while [ $cur -le 10 ]; do
|
||||
add A$cur $(eval echo \$A$prev) &&
|
||||
prev=$cur &&
|
||||
cur=$(($cur+1))
|
||||
done &&
|
||||
add B1 $A1
|
||||
echo $ATIP > .git/refs/heads/A &&
|
||||
echo $BTIP > .git/refs/heads/B &&
|
||||
git symbolic-ref HEAD refs/heads/B
|
||||
'
|
||||
|
||||
pull_to_client 1st "B A" $((11*3))
|
||||
|
||||
add A11 $A10
|
||||
|
||||
prev=1; cur=2; while [ $cur -le 65 ]; do
|
||||
add B$cur $(eval echo \$B$prev)
|
||||
prev=$cur
|
||||
cur=$(($cur+1))
|
||||
done
|
||||
test_expect_success 'post 1st pull setup' '
|
||||
add A11 $A10 &&
|
||||
prev=1 &&
|
||||
cur=2 &&
|
||||
while [ $cur -le 65 ]; do
|
||||
add B$cur $(eval echo \$B$prev) &&
|
||||
prev=$cur &&
|
||||
cur=$(($cur+1))
|
||||
done
|
||||
'
|
||||
|
||||
pull_to_client 2nd "B" $((64*3))
|
||||
|
||||
pull_to_client 3rd "A" $((1*3)) # old fails
|
||||
pull_to_client 3rd "A" $((1*3))
|
||||
|
||||
test_expect_success "clone shallow" 'git clone --depth 2 "file://$(pwd)/." shallow'
|
||||
|
||||
(cd shallow; git count-objects -v) > count.shallow
|
||||
|
||||
test_expect_success "clone shallow object count" \
|
||||
"test \"in-pack: 18\" = \"$(grep in-pack count.shallow)\""
|
||||
|
||||
count_output () {
|
||||
sed -e '/^in-pack:/d' -e '/^packs:/d' -e '/^size-pack:/d' -e '/: 0$/d' "$1"
|
||||
}
|
||||
|
||||
test_expect_success "clone shallow object count (part 2)" '
|
||||
test -z "$(count_output count.shallow)"
|
||||
test_expect_success 'clone shallow' '
|
||||
git clone --depth 2 "file://$(pwd)/." shallow
|
||||
'
|
||||
|
||||
test_expect_success "fsck in shallow repo" \
|
||||
"(cd shallow; git fsck --full)"
|
||||
test_expect_success 'clone shallow object count' '
|
||||
(
|
||||
cd shallow &&
|
||||
git count-objects -v
|
||||
) > count.shallow &&
|
||||
grep "^in-pack: 18" count.shallow
|
||||
'
|
||||
|
||||
#test_done; exit
|
||||
test_expect_success 'clone shallow object count (part 2)' '
|
||||
sed -e "/^in-pack:/d" -e "/^packs:/d" -e "/^size-pack:/d" \
|
||||
-e "/: 0$/d" count.shallow > count_output &&
|
||||
! test -s count_output
|
||||
'
|
||||
|
||||
add B66 $B65
|
||||
add B67 $B66
|
||||
test_expect_success 'fsck in shallow repo' '
|
||||
(
|
||||
cd shallow &&
|
||||
git fsck --full
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success "pull in shallow repo" \
|
||||
"(cd shallow; git pull .. B)"
|
||||
test_expect_success 'add two more' '
|
||||
add B66 $B65 &&
|
||||
add B67 $B66
|
||||
'
|
||||
|
||||
(cd shallow; git count-objects -v) > count.shallow
|
||||
test_expect_success "clone shallow object count" \
|
||||
"test \"count: 6\" = \"$(grep count count.shallow)\""
|
||||
test_expect_success 'pull in shallow repo' '
|
||||
(
|
||||
cd shallow &&
|
||||
git pull .. B
|
||||
)
|
||||
'
|
||||
|
||||
add B68 $B67
|
||||
add B69 $B68
|
||||
test_expect_success 'clone shallow object count' '
|
||||
(
|
||||
cd shallow &&
|
||||
git count-objects -v
|
||||
) > count.shallow &&
|
||||
grep "^count: 6" count.shallow
|
||||
'
|
||||
|
||||
test_expect_success "deepening pull in shallow repo" \
|
||||
"(cd shallow; git pull --depth 4 .. B)"
|
||||
test_expect_success 'add two more (part 2)' '
|
||||
add B68 $B67 &&
|
||||
add B69 $B68
|
||||
'
|
||||
|
||||
(cd shallow; git count-objects -v) > count.shallow
|
||||
test_expect_success "clone shallow object count" \
|
||||
"test \"count: 12\" = \"$(grep count count.shallow)\""
|
||||
test_expect_success 'deepening pull in shallow repo' '
|
||||
(
|
||||
cd shallow &&
|
||||
git pull --depth 4 .. B
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success "deepening fetch in shallow repo" \
|
||||
"(cd shallow; git fetch --depth 4 .. A:A)"
|
||||
test_expect_success 'clone shallow object count' '
|
||||
(
|
||||
cd shallow &&
|
||||
git count-objects -v
|
||||
) > count.shallow &&
|
||||
grep "^count: 12" count.shallow
|
||||
'
|
||||
|
||||
(cd shallow; git count-objects -v) > count.shallow
|
||||
test_expect_success "clone shallow object count" \
|
||||
"test \"count: 18\" = \"$(grep count count.shallow)\""
|
||||
test_expect_success 'deepening fetch in shallow repo' '
|
||||
(
|
||||
cd shallow &&
|
||||
git fetch --depth 4 .. A:A
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success "pull in shallow repo with missing merge base" \
|
||||
"(cd shallow && test_must_fail git pull --depth 4 .. A)"
|
||||
test_expect_success 'clone shallow object count' '
|
||||
(
|
||||
cd shallow &&
|
||||
git count-objects -v
|
||||
) > count.shallow &&
|
||||
grep "^count: 18" count.shallow
|
||||
'
|
||||
|
||||
test_expect_success 'pull in shallow repo with missing merge base' '
|
||||
(
|
||||
cd shallow &&
|
||||
test_must_fail git pull --depth 4 .. A
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user