Attempting to patch terminal only if terminalreporter is available
This fixes the flag "--paste=all" when running tests with xdist, as slaves would attempt to patch a non-existing terminal during pytest_configure. Only the master node has a terminalreporter installed. --HG-- branch : pastebin-xdist
This commit is contained in:
parent
8859936301
commit
7e15fb7f2d
|
@ -14,13 +14,17 @@ def pytest_addoption(parser):
|
||||||
@pytest.mark.trylast
|
@pytest.mark.trylast
|
||||||
def pytest_configure(config):
|
def pytest_configure(config):
|
||||||
if config.option.pastebin == "all":
|
if config.option.pastebin == "all":
|
||||||
config._pastebinfile = tempfile.TemporaryFile('w+')
|
|
||||||
tr = config.pluginmanager.getplugin('terminalreporter')
|
tr = config.pluginmanager.getplugin('terminalreporter')
|
||||||
oldwrite = tr._tw.write
|
# if no terminal reporter plugin is present, nothing we can do here;
|
||||||
def tee_write(s, **kwargs):
|
# this can happen when this function executes in a slave node
|
||||||
oldwrite(s, **kwargs)
|
# when using pytest-xdist, for example
|
||||||
config._pastebinfile.write(str(s))
|
if tr is not None:
|
||||||
tr._tw.write = tee_write
|
config._pastebinfile = tempfile.TemporaryFile('w+')
|
||||||
|
oldwrite = tr._tw.write
|
||||||
|
def tee_write(s, **kwargs):
|
||||||
|
oldwrite(s, **kwargs)
|
||||||
|
config._pastebinfile.write(str(s))
|
||||||
|
tr._tw.write = tee_write
|
||||||
|
|
||||||
def pytest_unconfigure(config):
|
def pytest_unconfigure(config):
|
||||||
if hasattr(config, '_pastebinfile'):
|
if hasattr(config, '_pastebinfile'):
|
||||||
|
|
Loading…
Reference in New Issue