Mercurial > hg
view tests/fakepatchtime.py @ 40161:3eea8e83c261
py3: tweak stdout writing in test-hgweb-no-path-info.t
We want to write bytes for convenience. This requires sys.stdout.buffer.
But using sys.stdout.buffer introducing buffered output. So we sprinkle
code with sys.stdout.flush() to force immediate writes.
After all that, Python 3 was emitting b'' prefixed output for errors.
So we only print errors if there were some. There aren't, so b'' don't
come into play and output is identical in Python 2 and 3.
Differential Revision: https://phab.mercurial-scm.org/D4972
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 11 Oct 2018 23:07:23 +0200 |
parents | c6061cadb400 |
children | 2372284d9457 |
line wrap: on
line source
# extension to emulate invoking 'patch.internalpatch()' at the time # specified by '[fakepatchtime] fakenow' from __future__ import absolute_import from mercurial import ( extensions, patch as patchmod, registrar, ) from mercurial.utils import dateutil configtable = {} configitem = registrar.configitem(configtable) configitem(b'fakepatchtime', b'fakenow', default=None, ) def internalpatch(orig, ui, repo, patchobj, strip, prefix=b'', files=None, eolmode=b'strict', similarity=0): if files is None: files = set() r = orig(ui, repo, patchobj, strip, prefix=prefix, files=files, eolmode=eolmode, similarity=similarity) fakenow = ui.config(b'fakepatchtime', b'fakenow') if fakenow: # parsing 'fakenow' in YYYYmmddHHMM format makes comparison between # 'fakenow' value and 'touch -t YYYYmmddHHMM' argument easy fakenow = dateutil.parsedate(fakenow, [b'%Y%m%d%H%M'])[0] for f in files: repo.wvfs.utime(f, (fakenow, fakenow)) return r def extsetup(ui): extensions.wrapfunction(patchmod, 'internalpatch', internalpatch)