8b02c64a3c
The test opens fd 3 and instructs git-upload-pack (via GIT_DEBUG_SEND_PACK) to log information to that channel. The way in which new processes are spawned by git on MinGW does not inherit all file descriptors to the child processes, but only 0, 1, and 2. The tests in t5503 require that file descriptor 3 is inherited from git-fetch to git-upload-pack. A complete implementation is non-trivial and not warranted just to satisfy this test. Note that the incompleteness applies only to the executables that use compat/mingw.c; bash and perl (the other important executables used by git) are complete, of course. Signed-off-by: Johannes Sixt <j6t@kdbg.org>
158 lines
3.0 KiB
Bash
Executable File
158 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='test automatic tag following'
|
|
|
|
. ./test-lib.sh
|
|
|
|
case $(uname -s) in
|
|
*MINGW*)
|
|
say "GIT_DEBUG_SEND_PACK not supported - skipping tests"
|
|
test_done
|
|
exit
|
|
esac
|
|
|
|
# End state of the repository:
|
|
#
|
|
# T - tag1 S - tag2
|
|
# / /
|
|
# L - A ------ O ------ B
|
|
# \ \ \
|
|
# \ C - origin/cat \
|
|
# origin/master master
|
|
|
|
test_expect_success 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
|
|
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $A
|
|
#E
|
|
EOF
|
|
test_expect_success '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 "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
|
|
'
|
|
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $C
|
|
want $T
|
|
#E
|
|
EOF
|
|
test_expect_success '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 "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)
|
|
'
|
|
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $B
|
|
want $S
|
|
#E
|
|
EOF
|
|
test_expect_success '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
|
|
'
|
|
|
|
cat - <<EOF >expect
|
|
#S
|
|
want $B
|
|
want $S
|
|
#E
|
|
EOF
|
|
test_expect_success '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
|