Merge pull request #864 from pytest-dev/consider-color-yes-everywhere
Consider --color option in more places which deal with TerminalWriters
This commit is contained in:
commit
ce96973ed5
|
@ -1,6 +1,9 @@
|
||||||
2.7.3 (compared to 2.7.2)
|
2.7.3 (compared to 2.7.2)
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
|
- fix issue856: consider --color parameter in all outputs (for example
|
||||||
|
--fixtures). Thanks Barney Gale for the report and Bruno Oliveira for the PR.
|
||||||
|
|
||||||
- fix issue744: fix for ast.Call changes in Python 3.5+. Thanks
|
- fix issue744: fix for ast.Call changes in Python 3.5+. Thanks
|
||||||
Guido van Rossum, Matthias Bussonnier, Stefan Zimmermann and
|
Guido van Rossum, Matthias Bussonnier, Stefan Zimmermann and
|
||||||
Thomas Kluyver.
|
Thomas Kluyver.
|
||||||
|
|
|
@ -933,3 +933,16 @@ def setns(obj, dic):
|
||||||
#if obj != pytest:
|
#if obj != pytest:
|
||||||
# pytest.__all__.append(name)
|
# pytest.__all__.append(name)
|
||||||
setattr(pytest, name, value)
|
setattr(pytest, name, value)
|
||||||
|
|
||||||
|
|
||||||
|
def create_terminal_writer(config, *args, **kwargs):
|
||||||
|
"""Create a TerminalWriter instance configured according to the options
|
||||||
|
in the config object. Every code which requires a TerminalWriter object
|
||||||
|
and has access to a config object should use this function.
|
||||||
|
"""
|
||||||
|
tw = py.io.TerminalWriter(*args, **kwargs)
|
||||||
|
if config.option.color == 'yes':
|
||||||
|
tw.hasmarkup = True
|
||||||
|
if config.option.color == 'no':
|
||||||
|
tw.hasmarkup = False
|
||||||
|
return tw
|
||||||
|
|
|
@ -66,9 +66,10 @@ def pytest_addoption(parser):
|
||||||
help="create standalone pytest script at given target path.")
|
help="create standalone pytest script at given target path.")
|
||||||
|
|
||||||
def pytest_cmdline_main(config):
|
def pytest_cmdline_main(config):
|
||||||
|
import _pytest.config
|
||||||
genscript = config.getvalue("genscript")
|
genscript = config.getvalue("genscript")
|
||||||
if genscript:
|
if genscript:
|
||||||
tw = py.io.TerminalWriter()
|
tw = _pytest.config.create_terminal_writer(config)
|
||||||
deps = ['py', '_pytest', 'pytest']
|
deps = ['py', '_pytest', 'pytest']
|
||||||
if sys.version_info < (2,7):
|
if sys.version_info < (2,7):
|
||||||
deps.append("argparse")
|
deps.append("argparse")
|
||||||
|
|
|
@ -64,7 +64,8 @@ def pytest_cmdline_main(config):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def showhelp(config):
|
def showhelp(config):
|
||||||
tw = py.io.TerminalWriter()
|
import _pytest.config
|
||||||
|
tw = _pytest.config.create_terminal_writer(config)
|
||||||
tw.write(config._parser.optparser.format_help())
|
tw.write(config._parser.optparser.format_help())
|
||||||
tw.line()
|
tw.line()
|
||||||
tw.line()
|
tw.line()
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
""" generic mechanism for marking and selecting python functions. """
|
""" generic mechanism for marking and selecting python functions. """
|
||||||
import inspect
|
import inspect
|
||||||
import py
|
|
||||||
|
|
||||||
|
|
||||||
class MarkerError(Exception):
|
class MarkerError(Exception):
|
||||||
|
@ -44,9 +43,10 @@ def pytest_addoption(parser):
|
||||||
|
|
||||||
|
|
||||||
def pytest_cmdline_main(config):
|
def pytest_cmdline_main(config):
|
||||||
|
import _pytest.config
|
||||||
if config.option.markers:
|
if config.option.markers:
|
||||||
config.do_configure()
|
config.do_configure()
|
||||||
tw = py.io.TerminalWriter()
|
tw = _pytest.config.create_terminal_writer(config)
|
||||||
for line in config.getini("markers"):
|
for line in config.getini("markers"):
|
||||||
name, rest = line.split(":", 1)
|
name, rest = line.split(":", 1)
|
||||||
tw.write("@pytest.mark.%s:" % name, bold=True)
|
tw.write("@pytest.mark.%s:" % name, bold=True)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
""" submit failure or test session information to a pastebin service. """
|
""" submit failure or test session information to a pastebin service. """
|
||||||
import pytest
|
import pytest
|
||||||
import py, sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,6 +69,7 @@ def create_new_paste(contents):
|
||||||
return 'bad response: ' + response
|
return 'bad response: ' + response
|
||||||
|
|
||||||
def pytest_terminal_summary(terminalreporter):
|
def pytest_terminal_summary(terminalreporter):
|
||||||
|
import _pytest.config
|
||||||
if terminalreporter.config.option.pastebin != "failed":
|
if terminalreporter.config.option.pastebin != "failed":
|
||||||
return
|
return
|
||||||
tr = terminalreporter
|
tr = terminalreporter
|
||||||
|
@ -79,7 +80,7 @@ def pytest_terminal_summary(terminalreporter):
|
||||||
msg = rep.longrepr.reprtraceback.reprentries[-1].reprfileloc
|
msg = rep.longrepr.reprtraceback.reprentries[-1].reprfileloc
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
msg = tr._getfailureheadline(rep)
|
msg = tr._getfailureheadline(rep)
|
||||||
tw = py.io.TerminalWriter(stringio=True)
|
tw = _pytest.config.create_terminal_writer(terminalreporter.config, stringio=True)
|
||||||
rep.toterminal(tw)
|
rep.toterminal(tw)
|
||||||
s = tw.stringio.getvalue()
|
s = tw.stringio.getvalue()
|
||||||
assert len(s)
|
assert len(s)
|
||||||
|
|
|
@ -4,7 +4,6 @@ import pdb
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import py
|
|
||||||
|
|
||||||
|
|
||||||
def pytest_addoption(parser):
|
def pytest_addoption(parser):
|
||||||
|
@ -23,23 +22,27 @@ def pytest_configure(config):
|
||||||
old = (pdb.set_trace, pytestPDB._pluginmanager)
|
old = (pdb.set_trace, pytestPDB._pluginmanager)
|
||||||
def fin():
|
def fin():
|
||||||
pdb.set_trace, pytestPDB._pluginmanager = old
|
pdb.set_trace, pytestPDB._pluginmanager = old
|
||||||
|
pytestPDB._config = None
|
||||||
pdb.set_trace = pytest.set_trace
|
pdb.set_trace = pytest.set_trace
|
||||||
pytestPDB._pluginmanager = config.pluginmanager
|
pytestPDB._pluginmanager = config.pluginmanager
|
||||||
|
pytestPDB._config = config
|
||||||
config._cleanup.append(fin)
|
config._cleanup.append(fin)
|
||||||
|
|
||||||
class pytestPDB:
|
class pytestPDB:
|
||||||
""" Pseudo PDB that defers to the real pdb. """
|
""" Pseudo PDB that defers to the real pdb. """
|
||||||
_pluginmanager = None
|
_pluginmanager = None
|
||||||
|
_config = None
|
||||||
|
|
||||||
def set_trace(self):
|
def set_trace(self):
|
||||||
""" invoke PDB set_trace debugging, dropping any IO capturing. """
|
""" invoke PDB set_trace debugging, dropping any IO capturing. """
|
||||||
|
import _pytest.config
|
||||||
frame = sys._getframe().f_back
|
frame = sys._getframe().f_back
|
||||||
capman = None
|
capman = None
|
||||||
if self._pluginmanager is not None:
|
if self._pluginmanager is not None:
|
||||||
capman = self._pluginmanager.getplugin("capturemanager")
|
capman = self._pluginmanager.getplugin("capturemanager")
|
||||||
if capman:
|
if capman:
|
||||||
capman.suspendcapture(in_=True)
|
capman.suspendcapture(in_=True)
|
||||||
tw = py.io.TerminalWriter()
|
tw = _pytest.config.create_terminal_writer(self._config)
|
||||||
tw.line()
|
tw.line()
|
||||||
tw.sep(">", "PDB set_trace (IO-capturing turned off)")
|
tw.sep(">", "PDB set_trace (IO-capturing turned off)")
|
||||||
self._pluginmanager.hook.pytest_enter_pdb()
|
self._pluginmanager.hook.pytest_enter_pdb()
|
||||||
|
|
|
@ -947,9 +947,10 @@ def showfixtures(config):
|
||||||
return wrap_session(config, _showfixtures_main)
|
return wrap_session(config, _showfixtures_main)
|
||||||
|
|
||||||
def _showfixtures_main(config, session):
|
def _showfixtures_main(config, session):
|
||||||
|
import _pytest.config
|
||||||
session.perform_collect()
|
session.perform_collect()
|
||||||
curdir = py.path.local()
|
curdir = py.path.local()
|
||||||
tw = py.io.TerminalWriter()
|
tw = _pytest.config.create_terminal_writer(config)
|
||||||
verbose = config.getvalue("verbose")
|
verbose = config.getvalue("verbose")
|
||||||
|
|
||||||
fm = session._fixturemanager
|
fm = session._fixturemanager
|
||||||
|
|
|
@ -87,6 +87,7 @@ class WarningReport:
|
||||||
|
|
||||||
class TerminalReporter:
|
class TerminalReporter:
|
||||||
def __init__(self, config, file=None):
|
def __init__(self, config, file=None):
|
||||||
|
import _pytest.config
|
||||||
self.config = config
|
self.config = config
|
||||||
self.verbosity = self.config.option.verbose
|
self.verbosity = self.config.option.verbose
|
||||||
self.showheader = self.verbosity >= 0
|
self.showheader = self.verbosity >= 0
|
||||||
|
@ -98,11 +99,8 @@ class TerminalReporter:
|
||||||
self.startdir = py.path.local()
|
self.startdir = py.path.local()
|
||||||
if file is None:
|
if file is None:
|
||||||
file = sys.stdout
|
file = sys.stdout
|
||||||
self._tw = self.writer = py.io.TerminalWriter(file)
|
self._tw = self.writer = _pytest.config.create_terminal_writer(config,
|
||||||
if self.config.option.color == 'yes':
|
file)
|
||||||
self._tw.hasmarkup = True
|
|
||||||
if self.config.option.color == 'no':
|
|
||||||
self._tw.hasmarkup = False
|
|
||||||
self.currentfspath = None
|
self.currentfspath = None
|
||||||
self.reportchars = getreportopt(config)
|
self.reportchars = getreportopt(config)
|
||||||
self.hasmarkup = self._tw.hasmarkup
|
self.hasmarkup = self._tw.hasmarkup
|
||||||
|
|
|
@ -623,6 +623,11 @@ class TestRequestBasic:
|
||||||
*arg1*
|
*arg1*
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def test_show_fixtures_color_yes(self, testdir):
|
||||||
|
testdir.makepyfile("def test_this(): assert 1")
|
||||||
|
result = testdir.runpytest('--color=yes', '--fixtures')
|
||||||
|
assert '\x1b[32mtmpdir' in result.stdout.str()
|
||||||
|
|
||||||
def test_newstyle_with_request(self, testdir):
|
def test_newstyle_with_request(self, testdir):
|
||||||
testdir.makepyfile("""
|
testdir.makepyfile("""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
Loading…
Reference in New Issue