comparison tests/fakedirstatewritetime.py @ 43076:2372284d9457

formatting: blacken the codebase This is using my patch to black (https://github.com/psf/black/pull/826) so we don't un-wrap collection literals. Done with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S # skip-blame mass-reformatting only # no-check-commit reformats foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D6971
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:45:02 -0400
parents 760a7851e9ba
children 9f70512ae2cf
comparison
equal deleted inserted replaced
43075:57875cf423c9 43076:2372284d9457
16 ) 16 )
17 from mercurial.utils import dateutil 17 from mercurial.utils import dateutil
18 18
19 try: 19 try:
20 from mercurial import rustext 20 from mercurial import rustext
21
21 rustext.__name__ # force actual import (see hgdemandimport) 22 rustext.__name__ # force actual import (see hgdemandimport)
22 except ImportError: 23 except ImportError:
23 rustext = None 24 rustext = None
24 25
25 configtable = {} 26 configtable = {}
26 configitem = registrar.configitem(configtable) 27 configitem = registrar.configitem(configtable)
27 28
28 configitem(b'fakedirstatewritetime', b'fakenow', 29 configitem(
29 default=None, 30 b'fakedirstatewritetime', b'fakenow', default=None,
30 ) 31 )
31 32
32 parsers = policy.importmod(r'parsers') 33 parsers = policy.importmod(r'parsers')
33 rustmod = policy.importrust(r'parsers') 34 rustmod = policy.importrust(r'parsers')
35
34 36
35 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now): 37 def pack_dirstate(fakenow, orig, dmap, copymap, pl, now):
36 # execute what original parsers.pack_dirstate should do actually 38 # execute what original parsers.pack_dirstate should do actually
37 # for consistency 39 # for consistency
38 actualnow = int(now) 40 actualnow = int(now)
40 if e[0] == 'n' and e[3] == actualnow: 42 if e[0] == 'n' and e[3] == actualnow:
41 e = parsers.dirstatetuple(e[0], e[1], e[2], -1) 43 e = parsers.dirstatetuple(e[0], e[1], e[2], -1)
42 dmap[f] = e 44 dmap[f] = e
43 45
44 return orig(dmap, copymap, pl, fakenow) 46 return orig(dmap, copymap, pl, fakenow)
47
45 48
46 def fakewrite(ui, func): 49 def fakewrite(ui, func):
47 # fake "now" of 'pack_dirstate' only if it is invoked while 'func' 50 # fake "now" of 'pack_dirstate' only if it is invoked while 'func'
48 51
49 fakenow = ui.config(b'fakedirstatewritetime', b'fakenow') 52 fakenow = ui.config(b'fakedirstatewritetime', b'fakenow')
60 63
61 if rustmod is not None: 64 if rustmod is not None:
62 # The Rust implementation does not use public parse/pack dirstate 65 # The Rust implementation does not use public parse/pack dirstate
63 # to prevent conversion round-trips 66 # to prevent conversion round-trips
64 orig_dirstatemap_write = dirstate.dirstatemap.write 67 orig_dirstatemap_write = dirstate.dirstatemap.write
65 wrapper = lambda self, st, now: orig_dirstatemap_write(self, 68 wrapper = lambda self, st, now: orig_dirstatemap_write(
66 st, 69 self, st, fakenow
67 fakenow) 70 )
68 dirstate.dirstatemap.write = wrapper 71 dirstate.dirstatemap.write = wrapper
69 72
70 orig_dirstate_getfsnow = dirstate._getfsnow 73 orig_dirstate_getfsnow = dirstate._getfsnow
71 wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args) 74 wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args)
72 75
81 orig_module.pack_dirstate = orig_pack_dirstate 84 orig_module.pack_dirstate = orig_pack_dirstate
82 dirstate._getfsnow = orig_dirstate_getfsnow 85 dirstate._getfsnow = orig_dirstate_getfsnow
83 if rustmod is not None: 86 if rustmod is not None:
84 dirstate.dirstatemap.write = orig_dirstatemap_write 87 dirstate.dirstatemap.write = orig_dirstatemap_write
85 88
89
86 def _poststatusfixup(orig, workingctx, status, fixup): 90 def _poststatusfixup(orig, workingctx, status, fixup):
87 ui = workingctx.repo().ui 91 ui = workingctx.repo().ui
88 return fakewrite(ui, lambda : orig(workingctx, status, fixup)) 92 return fakewrite(ui, lambda: orig(workingctx, status, fixup))
93
89 94
90 def markcommitted(orig, committablectx, node): 95 def markcommitted(orig, committablectx, node):
91 ui = committablectx.repo().ui 96 ui = committablectx.repo().ui
92 return fakewrite(ui, lambda : orig(committablectx, node)) 97 return fakewrite(ui, lambda: orig(committablectx, node))
98
93 99
94 def extsetup(ui): 100 def extsetup(ui):
95 extensions.wrapfunction(context.workingctx, '_poststatusfixup', 101 extensions.wrapfunction(
96 _poststatusfixup) 102 context.workingctx, '_poststatusfixup', _poststatusfixup
97 extensions.wrapfunction(context.workingctx, 'markcommitted', 103 )
98 markcommitted) 104 extensions.wrapfunction(context.workingctx, 'markcommitted', markcommitted)