tests/test-ui-color.py
author Gregory Szorc <gregory.szorc@gmail.com>
Tue, 03 Apr 2018 18:15:24 -0700
changeset 37338 cbc4425e81b5
parent 36337 0f36926b2651
child 37925 b8c2004a8d2b
permissions -rw-r--r--
tests: conditionalize tests based on presence of revlogs for files ~85 tests don't like our non-revlog file store for various reasons. This commit introduces hghave functionality for declaring and querying repository features. By default, we assume repositories have revlog-based file storage. But if the HGREPOFEATURES environment variable is set, we can override the default set of repository features. If you run the test harness with our simplestorerepo extension and an environment variable set to the proper value, you can override the hghave defaults to agree with simplestorerepo's version of reality. Various tests have been modified so behavior dependent on revlog-based file storage is marked as such. This fixes a handful of test failures with our custom file storage extension. But dozens remain. The point of this commit is to demonstrate how tests will need to be modified to account for custom storage implementations. TBH, I'm not convinced hghave is the proper layer for repository feature detection. I /think/ we'll eventually want something in run-tests.py itself. But that would require inventing a new primitive in the test harness. This is all very alpha at the moment. So I think hghave is an acceptable place to hang this feature detection. I think the right time to be thinking about integrating this into run-tests.py is *after* we have a stable alternate storage implementation in core. For now, let's try to make progress towards the idea of an alternate storage backend. Differential Revision: https://phab.mercurial-scm.org/D3030
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()
36336
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    12
testui.write((b'buffered\n'))
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    13
testui.warn((b'warning\n'))
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    14
testui.write_err(b'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
36337
0f36926b2651 py3: make sure we open file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36336
diff changeset
    18
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
    19
hgrc.write(b'[extensions]\n')
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    20
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
    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()
36336
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    24
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
    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
36337
0f36926b2651 py3: make sure we open file in bytes mode
Pulkit Goyal <7895pulkit@gmail.com>
parents: 36336
diff changeset
    27
ui_.fout = open(os.devnull, 'wb')
14614
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():
36336
236596a67a54 py3: add b'' to test-ui-color.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 31095
diff changeset
    32
    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
    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