Merge branch 'jn/maint-test-merge-verify-parents'

* jn/maint-test-merge-verify-parents:
  tests: teach verify_parents to check for extra parents
  tests: eliminate unnecessary setup test assertions
This commit is contained in:
Junio C Hamano 2011-05-11 11:38:10 -07:00
commit bd9a268845
2 changed files with 98 additions and 99 deletions

View File

@ -8,38 +8,38 @@ test_description='Merge base and parent list computation.
. ./test-lib.sh . ./test-lib.sh
M=1130000000
Z=+0000
GIT_COMMITTER_EMAIL=git@comm.iter.xz
GIT_COMMITTER_NAME='C O Mmiter'
GIT_AUTHOR_NAME='A U Thor'
GIT_AUTHOR_EMAIL=git@au.thor.xz
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
doit () {
OFFSET=$1 &&
NAME=$2 &&
shift 2 &&
PARENTS= &&
for P
do
PARENTS="${PARENTS}-p $P "
done &&
GIT_COMMITTER_DATE="$(($M + $OFFSET)) $Z" &&
GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE &&
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE &&
commit=$(echo $NAME | git commit-tree $T $PARENTS) &&
echo $commit >.git/refs/tags/$NAME &&
echo $commit
}
test_expect_success 'setup' ' test_expect_success 'setup' '
T=$(git write-tree) && T=$(git mktree </dev/null)
M=1130000000 &&
Z=+0000 &&
GIT_COMMITTER_EMAIL=git@comm.iter.xz &&
GIT_COMMITTER_NAME="C O Mmiter" &&
GIT_AUTHOR_NAME="A U Thor" &&
GIT_AUTHOR_EMAIL=git@au.thor.xz &&
export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL &&
doit() {
OFFSET=$1 &&
NAME=$2 &&
shift 2 &&
PARENTS= &&
for P
do
PARENTS="${PARENTS}-p $P "
done &&
GIT_COMMITTER_DATE="$(($M + $OFFSET)) $Z" &&
GIT_AUTHOR_DATE=$GIT_COMMITTER_DATE &&
export GIT_COMMITTER_DATE GIT_AUTHOR_DATE &&
commit=$(echo $NAME | git commit-tree $T $PARENTS) &&
echo $commit >.git/refs/tags/$NAME &&
echo $commit
}
' '
test_expect_success 'set up G and H' ' test_expect_success 'set up G and H' '

View File

@ -28,80 +28,79 @@ Testing basic merge operations/option parsing.
. ./test-lib.sh . ./test-lib.sh
test_expect_success 'set up test data and helpers' ' printf '%s\n' 1 2 3 4 5 6 7 8 9 >file
printf "%s\n" 1 2 3 4 5 6 7 8 9 >file && printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >file.1
printf "%s\n" "1 X" 2 3 4 5 6 7 8 9 >file.1 && printf '%s\n' 1 2 3 4 '5 X' 6 7 8 9 >file.5
printf "%s\n" 1 2 3 4 "5 X" 6 7 8 9 >file.5 && printf '%s\n' 1 2 3 4 5 6 7 8 '9 X' >file.9
printf "%s\n" 1 2 3 4 5 6 7 8 "9 X" >file.9 && printf '%s\n' '1 X' 2 3 4 5 6 7 8 9 >result.1
printf "%s\n" "1 X" 2 3 4 5 6 7 8 9 >result.1 && printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 9 >result.1-5
printf "%s\n" "1 X" 2 3 4 "5 X" 6 7 8 9 >result.1-5 && printf '%s\n' '1 X' 2 3 4 '5 X' 6 7 8 '9 X' >result.1-5-9
printf "%s\n" "1 X" 2 3 4 "5 X" 6 7 8 "9 X" >result.1-5-9 &&
create_merge_msgs() { create_merge_msgs () {
echo "Merge commit '\''c2'\''" >msg.1-5 && echo "Merge commit 'c2'" >msg.1-5 &&
echo "Merge commit '\''c2'\''; commit '\''c3'\''" >msg.1-5-9 && echo "Merge commit 'c2'; commit 'c3'" >msg.1-5-9 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c1 git log --no-merges ^HEAD c1
} >squash.1 && } >squash.1 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c2 git log --no-merges ^HEAD c2
} >squash.1-5 && } >squash.1-5 &&
{ {
echo "Squashed commit of the following:" && echo "Squashed commit of the following:" &&
echo && echo &&
git log --no-merges ^HEAD c2 c3 git log --no-merges ^HEAD c2 c3
} >squash.1-5-9 && } >squash.1-5-9 &&
echo >msg.nolog && echo >msg.nolog &&
{ {
echo "* commit '\''c3'\'':" && echo "* commit 'c3':" &&
echo " commit 3" && echo " commit 3" &&
echo echo
} >msg.log } >msg.log
} && }
verify_merge() { verify_merge () {
test_cmp "$2" "$1" && test_cmp "$2" "$1" &&
git update-index --refresh && git update-index --refresh &&
git diff --exit-code && git diff --exit-code &&
if test -n "$3" if test -n "$3"
then then
git show -s --pretty=format:%s HEAD >msg.act && git show -s --pretty=format:%s HEAD >msg.act &&
test_cmp "$3" msg.act test_cmp "$3" msg.act
fi fi
} && }
verify_head() { verify_head () {
echo "$1" >head.expected && echo "$1" >head.expected &&
git rev-parse HEAD >head.actual && git rev-parse HEAD >head.actual &&
test_cmp head.expected head.actual test_cmp head.expected head.actual
} && }
verify_parents() { verify_parents () {
printf "%s\n" "$@" >parents.expected && printf '%s\n' "$@" >parents.expected &&
>parents.actual && >parents.actual &&
i=1 && i=1 &&
while test $i -le $# while test $i -le $#
do do
git rev-parse HEAD^$i >>parents.actual && git rev-parse HEAD^$i >>parents.actual &&
i=$(expr $i + 1) || i=$(expr $i + 1) ||
return 1 return 1
done && done &&
test_cmp parents.expected parents.actual test_must_fail git rev-parse --verify "HEAD^$i" &&
} && test_cmp parents.expected parents.actual
}
verify_mergeheads() { verify_mergeheads () {
printf "%s\n" "$@" >mergehead.expected && printf '%s\n' "$@" >mergehead.expected &&
test_cmp mergehead.expected .git/MERGE_HEAD test_cmp mergehead.expected .git/MERGE_HEAD
} && }
verify_no_mergehead() { verify_no_mergehead () {
! test -e .git/MERGE_HEAD ! test -e .git/MERGE_HEAD
} }
'
test_expect_success 'setup' ' test_expect_success 'setup' '
git add file && git add file &&