tests/fakedirstatewritetime.py
changeset 47501 8b7e47802deb
parent 45942 89a2afe31e82
child 47539 84391ddf4c78
equal deleted inserted replaced
47500:23f5ed6dbcb1 47501:8b7e47802deb
     8 from __future__ import absolute_import
     8 from __future__ import absolute_import
     9 
     9 
    10 from mercurial import (
    10 from mercurial import (
    11     context,
    11     context,
    12     dirstate,
    12     dirstate,
       
    13     dirstatemap as dirstatemapmod,
    13     extensions,
    14     extensions,
    14     policy,
    15     policy,
    15     registrar,
    16     registrar,
    16 )
    17 )
    17 from mercurial.utils import dateutil
    18 from mercurial.utils import dateutil
    64     fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0]
    65     fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0]
    65 
    66 
    66     if rustmod is not None:
    67     if rustmod is not None:
    67         # The Rust implementation does not use public parse/pack dirstate
    68         # The Rust implementation does not use public parse/pack dirstate
    68         # to prevent conversion round-trips
    69         # to prevent conversion round-trips
    69         orig_dirstatemap_write = dirstate.dirstatemap.write
    70         orig_dirstatemap_write = dirstatemapmod.dirstatemap.write
    70         wrapper = lambda self, st, now: orig_dirstatemap_write(
    71         wrapper = lambda self, st, now: orig_dirstatemap_write(
    71             self, st, fakenow
    72             self, st, fakenow
    72         )
    73         )
    73         dirstate.dirstatemap.write = wrapper
    74         dirstatemapmod.dirstatemap.write = wrapper
    74 
    75 
    75     orig_dirstate_getfsnow = dirstate._getfsnow
    76     orig_dirstate_getfsnow = dirstate._getfsnow
    76     wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args)
    77     wrapper = lambda *args: pack_dirstate(fakenow, orig_pack_dirstate, *args)
    77 
    78 
    78     orig_module = parsers
    79     orig_module = parsers
    84         return func()
    85         return func()
    85     finally:
    86     finally:
    86         orig_module.pack_dirstate = orig_pack_dirstate
    87         orig_module.pack_dirstate = orig_pack_dirstate
    87         dirstate._getfsnow = orig_dirstate_getfsnow
    88         dirstate._getfsnow = orig_dirstate_getfsnow
    88         if rustmod is not None:
    89         if rustmod is not None:
    89             dirstate.dirstatemap.write = orig_dirstatemap_write
    90             dirstatemapmod.dirstatemap.write = orig_dirstatemap_write
    90 
    91 
    91 
    92 
    92 def _poststatusfixup(orig, workingctx, status, fixup):
    93 def _poststatusfixup(orig, workingctx, status, fixup):
    93     ui = workingctx.repo().ui
    94     ui = workingctx.repo().ui
    94     return fakewrite(ui, lambda: orig(workingctx, status, fixup))
    95     return fakewrite(ui, lambda: orig(workingctx, status, fixup))