t5401: Use a bare repository for the remote peer
We want to avoid the warnings (or later, test failures) about updating the current branch. It was never my intention to have this test deal with a repository with a working directory, and it is a very old bug that the test even used a non-bare repository for the remote side of the push operations. This fixes the interleaved output error we were seeing as a test failure by avoiding the giant warning message we were getting back about updating the current branch being risky. Its not a real fix, but is something we should do no matter what, because the behavior will change in the future to reject, and the test would break at that time. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6d525d389f
commit
6b3fa7e7d1
@ -17,22 +17,22 @@ test_expect_success setup '
|
||||
commit1=$(echo modify | git commit-tree $tree1 -p $commit0) &&
|
||||
git update-ref refs/heads/master $commit0 &&
|
||||
git update-ref refs/heads/tofail $commit1 &&
|
||||
git clone ./. victim &&
|
||||
GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 &&
|
||||
git clone --bare ./. victim.git &&
|
||||
GIT_DIR=victim.git git update-ref refs/heads/tofail $commit1 &&
|
||||
git update-ref refs/heads/master $commit1 &&
|
||||
git update-ref refs/heads/tofail $commit0
|
||||
'
|
||||
|
||||
cat >victim/.git/hooks/pre-receive <<'EOF'
|
||||
cat >victim.git/hooks/pre-receive <<'EOF'
|
||||
#!/bin/sh
|
||||
printf %s "$@" >>$GIT_DIR/pre-receive.args
|
||||
cat - >$GIT_DIR/pre-receive.stdin
|
||||
echo STDOUT pre-receive
|
||||
echo STDERR pre-receive >&2
|
||||
EOF
|
||||
chmod u+x victim/.git/hooks/pre-receive
|
||||
chmod u+x victim.git/hooks/pre-receive
|
||||
|
||||
cat >victim/.git/hooks/update <<'EOF'
|
||||
cat >victim.git/hooks/update <<'EOF'
|
||||
#!/bin/sh
|
||||
echo "$@" >>$GIT_DIR/update.args
|
||||
read x; printf %s "$x" >$GIT_DIR/update.stdin
|
||||
@ -40,77 +40,77 @@ echo STDOUT update $1
|
||||
echo STDERR update $1 >&2
|
||||
test "$1" = refs/heads/master || exit
|
||||
EOF
|
||||
chmod u+x victim/.git/hooks/update
|
||||
chmod u+x victim.git/hooks/update
|
||||
|
||||
cat >victim/.git/hooks/post-receive <<'EOF'
|
||||
cat >victim.git/hooks/post-receive <<'EOF'
|
||||
#!/bin/sh
|
||||
printf %s "$@" >>$GIT_DIR/post-receive.args
|
||||
cat - >$GIT_DIR/post-receive.stdin
|
||||
echo STDOUT post-receive
|
||||
echo STDERR post-receive >&2
|
||||
EOF
|
||||
chmod u+x victim/.git/hooks/post-receive
|
||||
chmod u+x victim.git/hooks/post-receive
|
||||
|
||||
cat >victim/.git/hooks/post-update <<'EOF'
|
||||
cat >victim.git/hooks/post-update <<'EOF'
|
||||
#!/bin/sh
|
||||
echo "$@" >>$GIT_DIR/post-update.args
|
||||
read x; printf %s "$x" >$GIT_DIR/post-update.stdin
|
||||
echo STDOUT post-update
|
||||
echo STDERR post-update >&2
|
||||
EOF
|
||||
chmod u+x victim/.git/hooks/post-update
|
||||
chmod u+x victim.git/hooks/post-update
|
||||
|
||||
test_expect_success push '
|
||||
test_must_fail git send-pack --force ./victim/.git \
|
||||
test_must_fail git send-pack --force ./victim.git \
|
||||
master tofail >send.out 2>send.err
|
||||
'
|
||||
|
||||
test_expect_success 'updated as expected' '
|
||||
test $(GIT_DIR=victim/.git git rev-parse master) = $commit1 &&
|
||||
test $(GIT_DIR=victim/.git git rev-parse tofail) = $commit1
|
||||
test $(GIT_DIR=victim.git git rev-parse master) = $commit1 &&
|
||||
test $(GIT_DIR=victim.git git rev-parse tofail) = $commit1
|
||||
'
|
||||
|
||||
test_expect_success 'hooks ran' '
|
||||
test -f victim/.git/pre-receive.args &&
|
||||
test -f victim/.git/pre-receive.stdin &&
|
||||
test -f victim/.git/update.args &&
|
||||
test -f victim/.git/update.stdin &&
|
||||
test -f victim/.git/post-receive.args &&
|
||||
test -f victim/.git/post-receive.stdin &&
|
||||
test -f victim/.git/post-update.args &&
|
||||
test -f victim/.git/post-update.stdin
|
||||
test -f victim.git/pre-receive.args &&
|
||||
test -f victim.git/pre-receive.stdin &&
|
||||
test -f victim.git/update.args &&
|
||||
test -f victim.git/update.stdin &&
|
||||
test -f victim.git/post-receive.args &&
|
||||
test -f victim.git/post-receive.stdin &&
|
||||
test -f victim.git/post-update.args &&
|
||||
test -f victim.git/post-update.stdin
|
||||
'
|
||||
|
||||
test_expect_success 'pre-receive hook input' '
|
||||
(echo $commit0 $commit1 refs/heads/master;
|
||||
echo $commit1 $commit0 refs/heads/tofail
|
||||
) | test_cmp - victim/.git/pre-receive.stdin
|
||||
) | test_cmp - victim.git/pre-receive.stdin
|
||||
'
|
||||
|
||||
test_expect_success 'update hook arguments' '
|
||||
(echo refs/heads/master $commit0 $commit1;
|
||||
echo refs/heads/tofail $commit1 $commit0
|
||||
) | test_cmp - victim/.git/update.args
|
||||
) | test_cmp - victim.git/update.args
|
||||
'
|
||||
|
||||
test_expect_success 'post-receive hook input' '
|
||||
echo $commit0 $commit1 refs/heads/master |
|
||||
test_cmp - victim/.git/post-receive.stdin
|
||||
test_cmp - victim.git/post-receive.stdin
|
||||
'
|
||||
|
||||
test_expect_success 'post-update hook arguments' '
|
||||
echo refs/heads/master |
|
||||
test_cmp - victim/.git/post-update.args
|
||||
test_cmp - victim.git/post-update.args
|
||||
'
|
||||
|
||||
test_expect_success 'all hook stdin is /dev/null' '
|
||||
! test -s victim/.git/update.stdin &&
|
||||
! test -s victim/.git/post-update.stdin
|
||||
! test -s victim.git/update.stdin &&
|
||||
! test -s victim.git/post-update.stdin
|
||||
'
|
||||
|
||||
test_expect_success 'all *-receive hook args are empty' '
|
||||
! test -s victim/.git/pre-receive.args &&
|
||||
! test -s victim/.git/post-receive.args
|
||||
! test -s victim.git/pre-receive.args &&
|
||||
! test -s victim.git/post-receive.args
|
||||
'
|
||||
|
||||
test_expect_success 'send-pack produced no output' '
|
||||
|
Loading…
Reference in New Issue
Block a user