Skip to content

Commit

Permalink
t5401: Use a bare repository for the remote peer
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Shawn O. Pearce authored and Junio C Hamano committed Feb 10, 2010
1 parent 6d525d3 commit 6b3fa7e
Showing 1 changed file with 29 additions and 29 deletions.
58 changes: 29 additions & 29 deletions t/t5401-update-hooks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,100 +17,100 @@ 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
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' '
Expand Down

0 comments on commit 6b3fa7e

Please sign in to comment.