annotate tests/test-lock-badness.t @ 23416:53a65929ef1f stable

pushkey: gracefully handle prepushkey hook failure (issue4455) This allow to gracefully report the failure of the bookmark push and carry on. Before this change set. Local push would plain quit and wireprotocol would failed in various ungraceful way.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Sat, 29 Nov 2014 19:17:47 -0800
parents f484be02bd35
children 6fbe35588433
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22047
8fb6844a4ff1 tests: change some #ifs to #requires
Matt Mackall <mpm@selenic.com>
parents: 20969
diff changeset
1 #require unix-permissions no-root no-windows
20380
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
2
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
3 Prepare
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
4
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
5 $ hg init a
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
6 $ echo a > a/a
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
7 $ hg -R a ci -A -m a
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
8 adding a
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
9
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
10 $ hg clone a b
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
11 updating to branch default
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2016
ff5c9a92f556 fix backtrace printed when cannot get lock.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
diff changeset
13
23032
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
14 Test that raising an exception in the release function doesn't cause the lock to choke
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
15
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
16 $ cat > testlock.py << EOF
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
17 > from mercurial import cmdutil, error, util
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
18 >
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
19 > cmdtable = {}
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
20 > command = cmdutil.command(cmdtable)
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
21 >
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
22 > def acquiretestlock(repo, releaseexc):
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
23 > def unlock():
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
24 > if releaseexc:
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
25 > raise util.Abort('expected release exception')
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
26 > l = repo._lock(repo.vfs, 'testlock', False, unlock, None, 'test lock')
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
27 > return l
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
28 >
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
29 > @command('testlockexc')
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
30 > def testlockexc(ui, repo):
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
31 > testlock = acquiretestlock(repo, True)
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
32 > try:
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
33 > testlock.release()
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
34 > finally:
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
35 > try:
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
36 > testlock = acquiretestlock(repo, False)
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
37 > except error.LockHeld:
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
38 > raise util.Abort('lockfile on disk even after releasing!')
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
39 > testlock.release()
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
40 > EOF
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
41 $ cat >> $HGRCPATH << EOF
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
42 > [extensions]
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
43 > testlock=$TESTTMP/testlock.py
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
44 > EOF
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
45
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
46 $ hg -R b testlockexc
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
47 abort: expected release exception
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
48 [255]
f484be02bd35 lock: while releasing, unlink lockfile even if the release function throws
Siddharth Agarwal <sid0@fb.com>
parents: 22047
diff changeset
49
20380
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
50 One process waiting for another
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
51
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
52 $ cat > hooks.py << EOF
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
53 > import time
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
54 > def sleepone(**x): time.sleep(1)
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
55 > def sleephalf(**x): time.sleep(0.5)
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
56 > EOF
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
57 $ echo b > b/b
20380
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
58 $ hg -R b ci -A -m b --config hooks.precommit="python:`pwd`/hooks.py:sleepone" > stdout &
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
59 $ hg -R b up -q --config hooks.pre-update="python:`pwd`/hooks.py:sleephalf"
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
60 waiting for lock on working directory of b held by '*:*' (glob)
20653
3bfac190c7cd tests: match time by a glob to fix intermittent failures of test-lock-badness.t
Simon Heimberg <simohe@besonet.ch>
parents: 20380
diff changeset
61 got lock after ? seconds (glob)
20380
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
62 warning: ignoring unknown working parent d2ae7f538514!
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
63 $ wait
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
64 $ cat stdout
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
65 adding b
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
66
20380
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
67 Pushing to a local read-only repo that can't be locked
c697b70f295f localrepo: give a sigh of relief when getting lock after waiting for it
Mads Kiilerich <madski@unity3d.com>
parents: 20008
diff changeset
68
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
69 $ chmod 100 a/.hg/store
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
70
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
71 $ hg -R b push a
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
72 pushing to a
20969
7a679918ee2b localrepo: add unbundle support
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 20653
diff changeset
73 searching for changes
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
74 abort: could not lock repository a: Permission denied
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12071
diff changeset
75 [255]
12071
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
76
45ff6dcf82ea tests: unify test-lock-badness
Adrian Buehlmann <adrian@cadifra.com>
parents: 3853
diff changeset
77 $ chmod 700 a/.hg/store