##// END OF EJS Templates
debugmergestate: add support for printing out driver-resolved files
debugmergestate: add support for printing out driver-resolved files

File last commit:

r26587:56b2bcea default
r26653:cffc4f7c default
Show More
test-lock-badness.t
76 lines | 1.9 KiB | text/troff | Tads3Lexer
/ tests / test-lock-badness.t
Matt Mackall
tests: change some #ifs to #requires
r22047 #require unix-permissions no-root no-windows
Mads Kiilerich
localrepo: give a sigh of relief when getting lock after waiting for it...
r20380
Prepare
Adrian Buehlmann
tests: unify test-lock-badness
r12071 $ hg init a
$ echo a > a/a
$ hg -R a ci -A -m a
adding a
$ hg clone a b
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Siddharth Agarwal
lock: while releasing, unlink lockfile even if the release function throws...
r23032 Test that raising an exception in the release function doesn't cause the lock to choke
$ cat > testlock.py << EOF
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > from mercurial import cmdutil, error, error
Siddharth Agarwal
lock: while releasing, unlink lockfile even if the release function throws...
r23032 >
> cmdtable = {}
> command = cmdutil.command(cmdtable)
>
> def acquiretestlock(repo, releaseexc):
> def unlock():
> if releaseexc:
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > raise error.Abort('expected release exception')
Siddharth Agarwal
lock: while releasing, unlink lockfile even if the release function throws...
r23032 > l = repo._lock(repo.vfs, 'testlock', False, unlock, None, 'test lock')
> return l
>
> @command('testlockexc')
> def testlockexc(ui, repo):
> testlock = acquiretestlock(repo, True)
> try:
> testlock.release()
> finally:
> try:
> testlock = acquiretestlock(repo, False)
> except error.LockHeld:
Pierre-Yves David
error: get Abort from 'error' instead of 'util'...
r26587 > raise error.Abort('lockfile on disk even after releasing!')
Siddharth Agarwal
lock: while releasing, unlink lockfile even if the release function throws...
r23032 > testlock.release()
> EOF
$ cat >> $HGRCPATH << EOF
> [extensions]
> testlock=$TESTTMP/testlock.py
> EOF
$ hg -R b testlockexc
abort: expected release exception
[255]
Mads Kiilerich
localrepo: give a sigh of relief when getting lock after waiting for it...
r20380 One process waiting for another
$ cat > hooks.py << EOF
> import time
> def sleepone(**x): time.sleep(1)
> def sleephalf(**x): time.sleep(0.5)
> EOF
Adrian Buehlmann
tests: unify test-lock-badness
r12071 $ echo b > b/b
Mads Kiilerich
localrepo: give a sigh of relief when getting lock after waiting for it...
r20380 $ hg -R b ci -A -m b --config hooks.precommit="python:`pwd`/hooks.py:sleepone" > stdout &
$ hg -R b up -q --config hooks.pre-update="python:`pwd`/hooks.py:sleephalf"
waiting for lock on working directory of b held by '*:*' (glob)
Simon Heimberg
tests: match time by a glob to fix intermittent failures of test-lock-badness.t...
r20653 got lock after ? seconds (glob)
Mads Kiilerich
localrepo: give a sigh of relief when getting lock after waiting for it...
r20380 $ wait
$ cat stdout
Adrian Buehlmann
tests: unify test-lock-badness
r12071 adding b
Mads Kiilerich
localrepo: give a sigh of relief when getting lock after waiting for it...
r20380 Pushing to a local read-only repo that can't be locked
Adrian Buehlmann
tests: unify test-lock-badness
r12071 $ chmod 100 a/.hg/store
$ hg -R b push a
pushing to a
Pierre-Yves David
localrepo: add unbundle support...
r20969 searching for changes
Adrian Buehlmann
tests: unify test-lock-badness
r12071 abort: could not lock repository a: Permission denied
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-lock-badness
r12071
$ chmod 700 a/.hg/store