##// END OF EJS Templates
tests: unset environment variable P in test-revset2.t (issue6109)...
tests: unset environment variable P in test-revset2.t (issue6109) The test tests/test-revset2.t fails the test case "Test repo.anyrevs with customized revset overrides" (line 1609) if the environment variable P is set. The test implicitly expects that the environment, in which it is started, does not export the variable 'P'. To solve this issue, unset 'P' right before the test commands are run. Differential Revision: https://phab.mercurial-scm.org/D6195

File last commit:

r34675:60927b19 default
r42228:f3365065 default
Show More
dirstatenonnormalcheck.py
59 lines | 2.6 KiB | text/x-python | PythonLexer
/ contrib / dirstatenonnormalcheck.py
Laurent Charignon
dirstate: add test for non-normal set consistency...
r27591 # dirstatenonnormalcheck.py - extension to check the consistency of the
# dirstate's non-normal map
#
# For most operations on dirstate, this extensions checks that the nonnormalset
# contains the right entries.
# It compares the nonnormal file to a nonnormalset built from the map of all
# the files in the dirstate to check that they contain the same files.
from __future__ import absolute_import
from mercurial import (
dirstate,
extensions,
)
def nonnormalentries(dmap):
"""Compute nonnormal entries from dirstate's dmap"""
res = set()
for f, e in dmap.iteritems():
Augie Fackler
contrib: fix dirstatenonnormalcheck to work in Python 3...
r35896 if e[0] != b'n' or e[3] == -1:
Laurent Charignon
dirstate: add test for non-normal set consistency...
r27591 res.add(f)
return res
def checkconsistency(ui, orig, dmap, _nonnormalset, label):
"""Compute nonnormalset from dmap, check that it matches _nonnormalset"""
nonnormalcomputedmap = nonnormalentries(dmap)
if _nonnormalset != nonnormalcomputedmap:
Augie Fackler
contrib: fix dirstatenonnormalcheck to work in Python 3...
r35896 ui.develwarn(b"%s call to %s\n" % (label, orig), config=b'dirstate')
ui.develwarn(b"inconsistency in nonnormalset\n", config=b'dirstate')
ui.develwarn(b"[nonnormalset] %s\n" % _nonnormalset, config=b'dirstate')
ui.develwarn(b"[map] %s\n" % nonnormalcomputedmap, config=b'dirstate')
Laurent Charignon
dirstate: add test for non-normal set consistency...
r27591
def _checkdirstate(orig, self, arg):
"""Check nonnormal set consistency before and after the call to orig"""
Durham Goode
dirstate: move nonnormal and otherparent sets to dirstatemap...
r34675 checkconsistency(self._ui, orig, self._map, self._map.nonnormalset,
Augie Fackler
contrib: fix dirstatenonnormalcheck to work in Python 3...
r35896 b"before")
timeless
cleanup: remove superfluous space after space after equals (python)
r27637 r = orig(self, arg)
Augie Fackler
contrib: fix dirstatenonnormalcheck to work in Python 3...
r35896 checkconsistency(self._ui, orig, self._map, self._map.nonnormalset,
b"after")
Laurent Charignon
dirstate: add test for non-normal set consistency...
r27591 return r
def extsetup(ui):
"""Wrap functions modifying dirstate to check nonnormalset consistency"""
dirstatecl = dirstate.dirstate
Augie Fackler
contrib: fix dirstatenonnormalcheck to work in Python 3...
r35896 devel = ui.configbool(b'devel', b'all-warnings')
paranoid = ui.configbool(b'experimental', b'nonnormalparanoidcheck')
Laurent Charignon
dirstate: add test for non-normal set consistency...
r27591 if devel:
extensions.wrapfunction(dirstatecl, '_writedirstate', _checkdirstate)
if paranoid:
# We don't do all these checks when paranoid is disable as it would
# make the extension run very slowly on large repos
extensions.wrapfunction(dirstatecl, 'normallookup', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'otherparent', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'normal', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'write', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'add', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'remove', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'merge', _checkdirstate)
extensions.wrapfunction(dirstatecl, 'drop', _checkdirstate)