tests/test-ui-color.py
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
Wed, 12 Apr 2017 16:34:05 +0200
changeset 32031 11a2461fc9b1
parent 31095 b4cb86ab4c71
child 36336 236596a67a54
permissions -rw-r--r--
upgrade: move descriptions and selection logic in individual classes Our goal here is to get top level definition for all the format variants. Having them defined outside of the function enabled other users of that logic. They are two keys components of a format variant: 1) the name and various descriptions of its effect, 2) the code that checks if the repo is using this variant and if the config enables it. That second items make us pick a class-based approach, since different variants requires different code (even if in practice, many can reuse the same logic). Each variants define its own class that is then used like a singleton. The class-based approach also clarify the definitions part a bit since each are simple assignment in an indented block. The 'fromdefault' and 'fromconfig' are respectively replaced by a class attribute and a method to be called at the one place where "fromconfig" matters. Overall, they are many viable approach for this, but this is the one I picked.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
)
11732
386e56ecfb78 color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     8
386e56ecfb78 color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
     9
# 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
    10
testui = uimod.ui()
11732
386e56ecfb78 color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    11
testui.pushbuffer()
17956
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 14614
diff changeset
    12
testui.write(('buffered\n'))
a08775ec89f2 i18n: wrap false positives for translation detection
Matt Mackall <mpm@selenic.com>
parents: 14614
diff changeset
    13
testui.warn(('warning\n'))
11732
386e56ecfb78 color: call correct superclass method in write_err
Brodie Rao <brodie@bitheap.org>
parents:
diff changeset
    14
testui.write_err('error\n')
28682
2e5be704bc96 py3: make test-ui-color use print_function
Pulkit Goyal <7895pulkit@gmail.com>
parents: 19322
diff changeset
    15
print(repr(testui.popbuffer()))
14516
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    16
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    17
# test dispatch.dispatch with the same ui object
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    18
hgrc = open(os.environ["HGRCPATH"], 'w')
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    19
hgrc.write('[extensions]\n')
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    20
hgrc.write('color=\n')
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    21
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
    22
30559
d83ca854fa21 ui: factor out ui.load() to create a ui without loading configs (API)
Yuya Nishihara <yuya@tcha.org>
parents: 28915
diff changeset
    23
ui_ = uimod.ui.load()
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
ui_.setconfig('ui', 'formatted', 'True')
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    25
14614
afccc64eea73 ui: use I/O descriptors internally
Idan Kamara <idankk86@gmail.com>
parents: 14516
diff changeset
    26
# we're not interested in the output, so write that to devnull
afccc64eea73 ui: use I/O descriptors internally
Idan Kamara <idankk86@gmail.com>
parents: 14516
diff changeset
    27
ui_.fout = open(os.devnull, 'w')
afccc64eea73 ui: use I/O descriptors internally
Idan Kamara <idankk86@gmail.com>
parents: 14516
diff changeset
    28
14516
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    29
# 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
    30
# 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
    31
def runcmd():
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    32
    dispatch.dispatch(dispatch.request(['version', '-q'], ui_))
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    33
842a9179132c color: check if ui is already a subclass of colorui before wrapping it
Idan Kamara <idankk86@gmail.com>
parents: 12865
diff changeset
    34
runcmd()
31095
b4cb86ab4c71 color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30559
diff changeset
    35
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
    36
runcmd()
31095
b4cb86ab4c71 color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30559
diff changeset
    37
print("colored? %s" % (ui_._colormode is not None))
b4cb86ab4c71 color: drop the 'colorui' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 30559
diff changeset
    38