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>
Shawn O. Pearce committed
Feb 9, 2010 at 18:01 UTC
6b3fa7e7d13a3c8fddba43ad6e8acb314d1985ac
1 file changed
+29
-29
t/t5401-update-hooks.sh
+29
-29
@@ -17,22 +17,22 @@ test_expect_success setup '
17
commit1=$(echo modify | git commit-tree $tree1 -p $commit0) &&
18
git update-ref refs/heads/master $commit0 &&
19
git update-ref refs/heads/tofail $commit1 &&
20
- git clone ./. victim &&
21
- GIT_DIR=victim/.git git update-ref refs/heads/tofail $commit1 &&
20
+ git clone --bare ./. victim.git &&
21
+ GIT_DIR=victim.git git update-ref refs/heads/tofail $commit1 &&
22
git update-ref refs/heads/master $commit1 &&
23
git update-ref refs/heads/tofail $commit0
24
'
25
26
-cat >victim/.git/hooks/pre-receive <<'EOF'
26
+cat >victim.git/hooks/pre-receive <<'EOF'
27
#!/bin/sh
28
printf %s "$@" >>$GIT_DIR/pre-receive.args
29
cat - >$GIT_DIR/pre-receive.stdin
30
echo STDOUT pre-receive
31
echo STDERR pre-receive >&2
32
EOF
33
-chmod u+x victim/.git/hooks/pre-receive
33
+chmod u+x victim.git/hooks/pre-receive
34
35
-cat >victim/.git/hooks/update <<'EOF'
35
+cat >victim.git/hooks/update <<'EOF'
36
#!/bin/sh
37
echo "$@" >>$GIT_DIR/update.args
38
read x; printf %s "$x" >$GIT_DIR/update.stdin
@@ -40,77 +40,77 @@ echo STDOUT update $1
40
echo STDERR update $1 >&2
41
test "$1" = refs/heads/master || exit
42
EOF
43
-chmod u+x victim/.git/hooks/update
43
+chmod u+x victim.git/hooks/update
44
45
-cat >victim/.git/hooks/post-receive <<'EOF'
45
+cat >victim.git/hooks/post-receive <<'EOF'
46
#!/bin/sh
47
printf %s "$@" >>$GIT_DIR/post-receive.args
48
cat - >$GIT_DIR/post-receive.stdin
49
echo STDOUT post-receive
50
echo STDERR post-receive >&2
51
EOF
52
-chmod u+x victim/.git/hooks/post-receive
52
+chmod u+x victim.git/hooks/post-receive
53
54
-cat >victim/.git/hooks/post-update <<'EOF'
54
+cat >victim.git/hooks/post-update <<'EOF'
55
#!/bin/sh
56
echo "$@" >>$GIT_DIR/post-update.args
57
read x; printf %s "$x" >$GIT_DIR/post-update.stdin
58
echo STDOUT post-update
59
echo STDERR post-update >&2
60
EOF
61
-chmod u+x victim/.git/hooks/post-update
61
+chmod u+x victim.git/hooks/post-update
62
63
test_expect_success push '
64
- test_must_fail git send-pack --force ./victim/.git \
64
+ test_must_fail git send-pack --force ./victim.git \
65
master tofail >send.out 2>send.err
66
'
67
68
test_expect_success 'updated as expected' '
69
- test $(GIT_DIR=victim/.git git rev-parse master) = $commit1 &&
70
- test $(GIT_DIR=victim/.git git rev-parse tofail) = $commit1
69
+ test $(GIT_DIR=victim.git git rev-parse master) = $commit1 &&
70
+ test $(GIT_DIR=victim.git git rev-parse tofail) = $commit1
71
'
72
73
test_expect_success 'hooks ran' '
74
- test -f victim/.git/pre-receive.args &&
75
- test -f victim/.git/pre-receive.stdin &&
76
- test -f victim/.git/update.args &&
77
- test -f victim/.git/update.stdin &&
78
- test -f victim/.git/post-receive.args &&
79
- test -f victim/.git/post-receive.stdin &&
80
- test -f victim/.git/post-update.args &&
81
- test -f victim/.git/post-update.stdin
74
+ test -f victim.git/pre-receive.args &&
75
+ test -f victim.git/pre-receive.stdin &&
76
+ test -f victim.git/update.args &&
77
+ test -f victim.git/update.stdin &&
78
+ test -f victim.git/post-receive.args &&
79
+ test -f victim.git/post-receive.stdin &&
80
+ test -f victim.git/post-update.args &&
81
+ test -f victim.git/post-update.stdin
82
'
83
84
test_expect_success 'pre-receive hook input' '
85
(echo $commit0 $commit1 refs/heads/master;
86
echo $commit1 $commit0 refs/heads/tofail
87
- ) | test_cmp - victim/.git/pre-receive.stdin
87
+ ) | test_cmp - victim.git/pre-receive.stdin
88
'
89
90
test_expect_success 'update hook arguments' '
91
(echo refs/heads/master $commit0 $commit1;
92
echo refs/heads/tofail $commit1 $commit0
93
- ) | test_cmp - victim/.git/update.args
93
+ ) | test_cmp - victim.git/update.args
94
'
95
96
test_expect_success 'post-receive hook input' '
97
echo $commit0 $commit1 refs/heads/master |
98
- test_cmp - victim/.git/post-receive.stdin
98
+ test_cmp - victim.git/post-receive.stdin
99
'
100
101
test_expect_success 'post-update hook arguments' '
102
echo refs/heads/master |
103
- test_cmp - victim/.git/post-update.args
103
+ test_cmp - victim.git/post-update.args
104
'
105
106
test_expect_success 'all hook stdin is /dev/null' '
107
- ! test -s victim/.git/update.stdin &&
108
- ! test -s victim/.git/post-update.stdin
107
+ ! test -s victim.git/update.stdin &&
108
+ ! test -s victim.git/post-update.stdin
109
'
110
111
test_expect_success 'all *-receive hook args are empty' '
112
- ! test -s victim/.git/pre-receive.args &&
113
- ! test -s victim/.git/post-receive.args
112
+ ! test -s victim.git/pre-receive.args &&
113
+ ! test -s victim.git/post-receive.args
114
'
115
116
test_expect_success 'send-pack produced no output' '