3ba9ba8f34
These two tests fail on msysGit because /dev/null is an alias for nul on Windows and when reading the value back from git config the alias does not match the real filename. Also the HOME environment variable has a unix-style path but git returns a native equivalent path for '~'. As these are platform-dependent equivalent results it seems simplest to skip the test entirely. Moves the NOT_MINGW prereq from t5503 into the test library. Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
167 lines
3.2 KiB
Bash
Executable File
167 lines
3.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='test automatic tag following'
|
|
|
|
. ./test-lib.sh
|
|
|
|
if !test_have_prereq NOT_MINGW; then
|
|
say "GIT_DEBUG_SEND_PACK not supported - skipping tests"
|
|
fi
|
|
|
|
# End state of the repository:
|
|
#
|
|
# T - tag1 S - tag2
|
|
# / /
|
|
# L - A ------ O ------ B
|
|
# \ \ \
|
|
# \ C - origin/cat \
|
|
# origin/master master
|
|
|
|
test_expect_success NOT_MINGW setup '
|
|
test_tick &&
|
|
echo ichi >file &&
|
|
git add file &&
|
|
git commit -m L &&
|
|
L=$(git rev-parse --verify HEAD) &&
|
|
|
|
(
|
|
mkdir cloned &&
|
|
cd cloned &&
|
|
git init-db &&
|
|
git remote add -f origin ..
|
|
) &&
|
|
|
|
test_tick &&
|
|
echo A >file &&
|
|
git add file &&
|
|
git commit -m A &&
|
|
A=$(git rev-parse --verify HEAD)
|
|
'
|
|
|
|
U=UPLOAD_LOG
|
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $A
|
|
#E
|
|
EOF
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'fetch A (new commit : 1 connection)' '
|
|
rm -f $U
|
|
(
|
|
cd cloned &&
|
|
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
|
test $A = $(git rev-parse --verify origin/master)
|
|
) &&
|
|
test -s $U &&
|
|
cut -d" " -f1,2 $U >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success NOT_MINGW "create tag T on A, create C on branch cat" '
|
|
git tag -a -m tag1 tag1 $A &&
|
|
T=$(git rev-parse --verify tag1) &&
|
|
|
|
git checkout -b cat &&
|
|
echo C >file &&
|
|
git add file &&
|
|
git commit -m C &&
|
|
C=$(git rev-parse --verify HEAD) &&
|
|
git checkout master
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $C
|
|
want $T
|
|
#E
|
|
EOF
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'fetch C, T (new branch, tag : 1 connection)' '
|
|
rm -f $U
|
|
(
|
|
cd cloned &&
|
|
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
|
test $C = $(git rev-parse --verify origin/cat) &&
|
|
test $T = $(git rev-parse --verify tag1) &&
|
|
test $A = $(git rev-parse --verify tag1^0)
|
|
) &&
|
|
test -s $U &&
|
|
cut -d" " -f1,2 $U >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success NOT_MINGW "create commits O, B, tag S on B" '
|
|
test_tick &&
|
|
echo O >file &&
|
|
git add file &&
|
|
git commit -m O &&
|
|
|
|
test_tick &&
|
|
echo B >file &&
|
|
git add file &&
|
|
git commit -m B &&
|
|
B=$(git rev-parse --verify HEAD) &&
|
|
|
|
git tag -a -m tag2 tag2 $B &&
|
|
S=$(git rev-parse --verify tag2)
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $B
|
|
want $S
|
|
#E
|
|
EOF
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'fetch B, S (commit and tag : 1 connection)' '
|
|
rm -f $U
|
|
(
|
|
cd cloned &&
|
|
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
|
test $B = $(git rev-parse --verify origin/master) &&
|
|
test $B = $(git rev-parse --verify tag2^0) &&
|
|
test $S = $(git rev-parse --verify tag2)
|
|
) &&
|
|
test -s $U &&
|
|
cut -d" " -f1,2 $U >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'setup expect' '
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $B
|
|
want $S
|
|
#E
|
|
EOF
|
|
'
|
|
|
|
test_expect_success NOT_MINGW 'new clone fetch master and tags' '
|
|
git branch -D cat
|
|
rm -f $U
|
|
(
|
|
mkdir clone2 &&
|
|
cd clone2 &&
|
|
git init &&
|
|
git remote add origin .. &&
|
|
GIT_DEBUG_SEND_PACK=3 git fetch 3>../$U &&
|
|
test $B = $(git rev-parse --verify origin/master) &&
|
|
test $S = $(git rev-parse --verify tag2) &&
|
|
test $B = $(git rev-parse --verify tag2^0) &&
|
|
test $T = $(git rev-parse --verify tag1) &&
|
|
test $A = $(git rev-parse --verify tag1^0)
|
|
) &&
|
|
test -s $U &&
|
|
cut -d" " -f1,2 $U >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_done
|