Mercurial > hg
view tests/test-ui-color.py @ 48443:112184713852
rhg: Set second_ambiguous as needed in post-status fixup
This fixes an intermittent bug that manifested only in test-revert.t,
and unfortunately not on CI. On a fast enough machine we could have:
1. A file is modified
2. `rhg status` writes an updated dirstate-v1
3. The same file is modified again
… all within the same integer second. Because the dirstate-v1 file format
does not store sub-second precision, step 2 must write the file’s mtime
as "unknown" because of the possibility of step 3.
However, most of the code now handles timestamps with nanosecond precision
in order to take advantage of it in dirstate-v2. `second_ambiguous` must
be set for timestamps that become ambiguous if sub-second precision is dropped
(such as through serialization in dirstate-v1 format).
Differential Revision: https://phab.mercurial-scm.org/D11889
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Thu, 09 Dec 2021 10:55:17 +0100 |
parents | 86e4daa2d54c |
children | 6000f5b25c9b |
line wrap: on
line source
from __future__ import absolute_import, print_function import os from mercurial import ( dispatch, ui as uimod, ) from mercurial.utils import stringutil # ensure errors aren't buffered testui = uimod.ui() testui.pushbuffer() testui.writenoi18n(b'buffered\n') testui.warnnoi18n(b'warning\n') testui.write_err(b'error\n') print(stringutil.pprint(testui.popbuffer(), bprefix=True).decode('ascii')) # test dispatch.dispatch with the same ui object hgrc = open(os.environ["HGRCPATH"], 'wb') hgrc.write(b'[extensions]\n') hgrc.write(b'color=\n') hgrc.close() ui_ = uimod.ui.load() ui_.setconfig(b'ui', b'formatted', b'True') # we're not interested in the output, so write that to devnull ui_.fout = open(os.devnull, 'wb') # call some arbitrary command just so we go through # color's wrapped _runcommand twice. def runcmd(): dispatch.dispatch(dispatch.request([b'version', b'-q'], ui_)) runcmd() print("colored? %s" % (ui_._colormode is not None)) runcmd() print("colored? %s" % (ui_._colormode is not None))