Mercurial > hg
annotate tests/test-pending.t @ 16039:093b75c7b44b stable
pull: return 1 when no changes found (BC)
Currently we have the following return codes if nothing is found:
commit incoming outgoing pull push
intended 1 1 1 1 1
documented 1 1 1 0 1
actual 1 1 1 0 1
This makes pull agree with the rest of the table and makes it easy to
detect "nothing was pulled" in scripts.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 30 Jan 2012 16:01:54 -0600 |
parents | bb9ad375b51c |
children | a3dcc59054ca |
rev | line source |
---|---|
15519
bb9ad375b51c
tests: add 'hghave system-sh' to skip tests on windows
Mads Kiilerich <mads@kiilerich.com>
parents:
13237
diff
changeset
|
1 $ "$TESTDIR/hghave" system-sh || exit 80 |
bb9ad375b51c
tests: add 'hghave system-sh' to skip tests on windows
Mads Kiilerich <mads@kiilerich.com>
parents:
13237
diff
changeset
|
2 |
13237
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
3 Verify that pending changesets are seen by pretxn* hooks but not by other |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
4 processes that access the destination repo while the hooks are running. |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
5 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
6 The hooks (python and external) both reject changesets after some think time, |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
7 during which another process runs pull. Each hook creates a file ('notify') to |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
8 indicate to the controlling process that it is running; the process removes the |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
9 file to indicate the hook can terminate. |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
10 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
11 init env vars |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
12 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
13 $ d=`pwd` |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
14 $ maxwait=20 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
15 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
16 utility to run the test - start a push in the background and run pull |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
17 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
18 $ dotest() { |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
19 > rm -f notify |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
20 > printf 'push '; hg -R child-push tip --template '{node}\n' |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
21 > hg -R child-push -q push > push.out 2>&1 & |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
22 > |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
23 > # wait for hook to create the notify file |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
24 > i=$maxwait |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
25 > while [ ! -f notify -a $i != 0 ]; do |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
26 > sleep 1 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
27 > i=`expr $i - 1` |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
28 > done |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
29 > |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
30 > # run pull |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
31 > hg -R child-pull -q pull |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
32 > rc=$? |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
33 > |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
34 > # tell hook to finish; notify should exist. |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
35 > rm notify |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
36 > wait |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
37 > |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
38 > cat push.out |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
39 > printf 'pull '; hg -R child-pull tip --template '{node}\n' |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
40 > return $rc |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
41 > } |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
42 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
43 python hook |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
44 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
45 $ cat <<EOF > reject.py |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
46 > import os, time |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
47 > from mercurial import ui, localrepo |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
48 > def rejecthook(ui, repo, hooktype, node, **opts): |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
49 > ui.write('hook %s\\n' % repo['tip'].hex()) |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
50 > # create the notify file so caller knows we're running |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
51 > fpath = os.path.join('$d', 'notify') |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
52 > f = open(fpath, 'w') |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
53 > f.close() |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
54 > # wait for ack - caller should delete the notify file |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
55 > i = $maxwait |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
56 > while os.path.exists(fpath) and i > 0: |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
57 > time.sleep(1) |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
58 > i -= 1 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
59 > return True # reject the changesets |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
60 > EOF |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
61 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
62 external hook |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
63 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
64 $ cat <<EOF > reject.sh |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
65 > #! /bin/sh |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
66 > printf 'hook '; hg tip --template '{node}\\n' |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
67 > # create the notify file so caller knows we're running |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
68 > fpath=$d/notify |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
69 > touch \$fpath |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
70 > # wait for ack - caller should delete the notify file |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
71 > i=$maxwait |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
72 > while [ -f \$fpath -a \$i != 0 ]; do |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
73 > sleep 1 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
74 > i=\`expr \$i - 1\` |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
75 > done |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
76 > exit 1 # reject the changesets |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
77 > EOF |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
78 $ chmod +x reject.sh |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
79 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
80 create repos |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
81 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
82 $ hg init parent |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
83 $ hg clone -q parent child-push |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
84 $ hg clone -q parent child-pull |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
85 $ echo a > child-push/a |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
86 $ hg -R child-push add child-push/a |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
87 $ hg -R child-push commit -m a -d '1000000 0' |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
88 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
89 test python hook |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
90 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
91 $ cat <<EOF > parent/.hg/hgrc |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
92 > [extensions] |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
93 > reject = $d/reject.py |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
94 > [hooks] |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
95 > pretxnchangegroup = python:reject.rejecthook |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
96 > EOF |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
97 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
98 $ dotest |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
99 push 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
100 hook 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
101 transaction abort! |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
102 rollback completed |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
103 abort: pretxnchangegroup hook failed |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
104 pull 0000000000000000000000000000000000000000 |
16039
093b75c7b44b
pull: return 1 when no changes found (BC)
Matt Mackall <mpm@selenic.com>
parents:
15519
diff
changeset
|
105 [1] |
13237
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
106 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
107 test external hook |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
108 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
109 $ cat <<EOF > parent/.hg/hgrc |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
110 > [hooks] |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
111 > pretxnchangegroup = $d/reject.sh |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
112 > EOF |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
113 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
114 $ dotest |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
115 push 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
116 hook 29b62aeb769fdf78d8d9c5f28b017f76d7ef824b |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
117 transaction abort! |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
118 rollback completed |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
119 abort: pretxnchangegroup hook exited with status 1 |
c046978cc0a9
tests: check visibility of pending changesets
John Coomes <john.coomes@oracle.com>
parents:
diff
changeset
|
120 pull 0000000000000000000000000000000000000000 |
16039
093b75c7b44b
pull: return 1 when no changes found (BC)
Matt Mackall <mpm@selenic.com>
parents:
15519
diff
changeset
|
121 [1] |