##// END OF EJS Templates
test-log: fix / vs \ issues on Windows introduced with 6d218e47cf9b...
test-log: fix / vs \ issues on Windows introduced with 6d218e47cf9b test-log.t fails on Windows with --- c:\Users\buildbot\w2k8\Windows_2008_R2_hg_tests\build\tests\test-log.t +++ c:\Users\buildbot\w2k8\Windows_2008_R2_hg_tests\build\tests\test-log.t.err @@ -1225,12 +1225,12 @@ $ echo 1 > d5.d/f1 $ echo 1 > .d6/f1 $ hg add . - adding .d6/f1 - adding D2/f1 - adding D3.i/f1 - adding d1/f1 - adding d4.hg/f1 - adding d5.d/f1 + adding .d6\f1 + adding D2\f1 + adding D3.i\f1 + adding d1\f1 + adding d4.hg\f1 + adding d5.d\f1 $ hg commit -m "a bunch of weird directories" $ hg log -l1 d1/f1 | grep changeset changeset: 0:65624cd9070a

File last commit:

r17738:b8424c92 default
r17781:8ce53574 default
Show More
lock-checker.py
48 lines | 1.6 KiB | text/x-python | PythonLexer
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669 """Extension to verify locks are obtained in the required places.
This works by wrapping functions that should be surrounded by a lock
and asserting the lock is held. Missing locks are called out with a
traceback printed to stderr.
This currently only checks store locks, not working copy locks.
"""
import os
import traceback
def _warnstack(ui, msg, skip=1):
'''issue warning with the message and the current stack, skipping the
skip last entries'''
ui.warn('%s at:\n' % msg)
entries = traceback.extract_stack()[:-skip]
fnmax = max(len(entry[0]) for entry in entries)
for fn, ln, func, _text in entries:
ui.warn(' %*s:%-4s in %s\n' % (fnmax, fn, ln, func))
def _checklock(repo):
l = repo._lockref and repo._lockref()
if l is None or not l.held:
_warnstack(repo.ui, 'missing lock', skip=2)
def reposetup(ui, repo):
orig = repo.__class__
class lockcheckrepo(repo.__class__):
def _writejournal(self, *args, **kwargs):
_checklock(self)
return orig._writejournal(self, *args, **kwargs)
def transaction(self, *args, **kwargs):
_checklock(self)
return orig.transaction(self, *args, **kwargs)
# TODO(durin42): kiilerix had a commented-out lock check in
Mads Kiilerich
spelling: fix minor spell checker issues
r17738 # _writebranchcache and _writerequirements
Augie Fackler
lock-checker: new contrib extension based on work done by Mads...
r17669
def _tag(self, *args, **kwargs):
_checklock(self)
return orig._tag(self, *args, **kwargs)
def write(self, *args, **kwargs):
assert os.path.lexists(self._join('.hg/wlock'))
return orig.write(self, *args, **kwargs)
repo.__class__ = lockcheckrepo