Mercurial > hg
annotate tests/test-ui-color.py @ 41247:a89b20a49c13
rust-cpython: using MissingAncestors from Python code
As precedently done with LazyAncestors on cpython.rs, we test for the
presence of the 'rustext' module.
incrementalmissingrevs() has two callers within the Mercurial core:
`setdiscovery.partialdiscovery` and the `only()` revset.
This move shows a significant discovery performance improvement
in cases where the baseline is slow: using perfdiscovery on the PyPy
repos, prepared with `contrib/discovery-helper <repo> 50 100`, we
get averaged medians of 403ms with the Rust version vs 742ms without
(about 45% better).
But there are still indications that performance can be worse in cases
the baseline is fast, possibly due to the conversion from Python to
Rust and back becoming the bottleneck. We could measure this on
mozilla-central in cases were the delta is just a few changesets.
This requires confirmation, but if that's the reason, then an
upcoming `partialdiscovery` fully in Rust should solve the problem.
Differential Revision: https://phab.mercurial-scm.org/D5551
author | Georges Racinet <georges.racinet@octobus.net> |
---|---|
date | Fri, 30 Nov 2018 14:35:57 +0100 |
parents | 32bc3815efae |
children | 2372284d9457 |
rev | line source |
---|---|
28915
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
1 from __future__ import absolute_import, print_function |
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
2 |
19322
ff1586a3adc5
cleanup: remove unused imports
Simon Heimberg <simohe@besonet.ch>
parents:
17956
diff
changeset
|
3 import os |
28915
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
4 from mercurial import ( |
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
5 dispatch, |
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
6 ui as uimod, |
40afa22bee9b
tests: make test-ui-color use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28682
diff
changeset
|
7 ) |
37925
b8c2004a8d2b
tests: port test-ui-color.py to Python 3
Augie Fackler <augie@google.com>
parents:
36337
diff
changeset
|
8 from mercurial.utils import ( |
b8c2004a8d2b
tests: port test-ui-color.py to Python 3
Augie Fackler <augie@google.com>
parents:
36337
diff
changeset
|
9 stringutil, |
b8c2004a8d2b
tests: port test-ui-color.py to Python 3
Augie Fackler <augie@google.com>
parents:
36337
diff
changeset
|
10 ) |
11732
386e56ecfb78
color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff
changeset
|
11 |
386e56ecfb78
color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff
changeset
|
12 # ensure errors aren't buffered |
31095
b4cb86ab4c71
color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30559
diff
changeset
|
13 testui = uimod.ui() |
11732
386e56ecfb78
color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff
changeset
|
14 testui.pushbuffer() |
36336
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
15 testui.write((b'buffered\n')) |
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
16 testui.warn((b'warning\n')) |
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
17 testui.write_err(b'error\n') |
37942
32bc3815efae
stringutil: flip the default of pprint() to bprefix=False
Yuya Nishihara <yuya@tcha.org>
parents:
37925
diff
changeset
|
18 print(stringutil.pprint(testui.popbuffer(), bprefix=True).decode('ascii')) |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
19 |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
20 # test dispatch.dispatch with the same ui object |
36337
0f36926b2651
py3: make sure we open file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36336
diff
changeset
|
21 hgrc = open(os.environ["HGRCPATH"], 'wb') |
36336
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
22 hgrc.write(b'[extensions]\n') |
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
23 hgrc.write(b'color=\n') |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
24 hgrc.close() |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
25 |
30559
d83ca854fa21
ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents:
28915
diff
changeset
|
26 ui_ = uimod.ui.load() |
36336
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
27 ui_.setconfig(b'ui', b'formatted', b'True') |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
28 |
14614
afccc64eea73
ui: use I/O descriptors internally
Idan Kamara <idankk86@gmail.com>
parents:
14516
diff
changeset
|
29 # we're not interested in the output, so write that to devnull |
36337
0f36926b2651
py3: make sure we open file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36336
diff
changeset
|
30 ui_.fout = open(os.devnull, 'wb') |
14614
afccc64eea73
ui: use I/O descriptors internally
Idan Kamara <idankk86@gmail.com>
parents:
14516
diff
changeset
|
31 |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
32 # call some arbitrary command just so we go through |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
33 # color's wrapped _runcommand twice. |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
34 def runcmd(): |
36336
236596a67a54
py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
31095
diff
changeset
|
35 dispatch.dispatch(dispatch.request([b'version', b'-q'], ui_)) |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
36 |
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
37 runcmd() |
31095
b4cb86ab4c71
color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30559
diff
changeset
|
38 print("colored? %s" % (ui_._colormode is not None)) |
14516
842a9179132c
color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents:
12865
diff
changeset
|
39 runcmd() |
31095
b4cb86ab4c71
color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30559
diff
changeset
|
40 print("colored? %s" % (ui_._colormode is not None)) |