Merge pull request #3841 from sankt-petersbug/fix-3816
Fix '--show-capture=no' capture teardown logs
This commit is contained in:
commit
3b521bedf8
|
@ -0,0 +1 @@
|
||||||
|
Fix bug where ``--show-capture=no`` option would still show logs printed during fixture teardown.
|
|
@ -706,7 +706,12 @@ class TerminalReporter(object):
|
||||||
self._outrep_summary(rep)
|
self._outrep_summary(rep)
|
||||||
|
|
||||||
def print_teardown_sections(self, rep):
|
def print_teardown_sections(self, rep):
|
||||||
|
showcapture = self.config.option.showcapture
|
||||||
|
if showcapture == "no":
|
||||||
|
return
|
||||||
for secname, content in rep.sections:
|
for secname, content in rep.sections:
|
||||||
|
if showcapture != "all" and showcapture not in secname:
|
||||||
|
continue
|
||||||
if "teardown" in secname:
|
if "teardown" in secname:
|
||||||
self._tw.sep("-", secname)
|
self._tw.sep("-", secname)
|
||||||
if content[-1:] == "\n":
|
if content[-1:] == "\n":
|
||||||
|
|
|
@ -948,6 +948,46 @@ def pytest_report_header(config, startdir):
|
||||||
assert "!This is stderr!" not in stdout
|
assert "!This is stderr!" not in stdout
|
||||||
assert "!This is a warning log msg!" not in stdout
|
assert "!This is a warning log msg!" not in stdout
|
||||||
|
|
||||||
|
def test_show_capture_with_teardown_logs(self, testdir):
|
||||||
|
"""Ensure that the capturing of teardown logs honor --show-capture setting"""
|
||||||
|
testdir.makepyfile(
|
||||||
|
"""
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@pytest.fixture(scope="function", autouse="True")
|
||||||
|
def hook_each_test(request):
|
||||||
|
yield
|
||||||
|
sys.stdout.write("!stdout!")
|
||||||
|
sys.stderr.write("!stderr!")
|
||||||
|
logging.warning("!log!")
|
||||||
|
|
||||||
|
def test_func():
|
||||||
|
assert False
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
result = testdir.runpytest("--show-capture=stdout", "--tb=short").stdout.str()
|
||||||
|
assert "!stdout!" in result
|
||||||
|
assert "!stderr!" not in result
|
||||||
|
assert "!log!" not in result
|
||||||
|
|
||||||
|
result = testdir.runpytest("--show-capture=stderr", "--tb=short").stdout.str()
|
||||||
|
assert "!stdout!" not in result
|
||||||
|
assert "!stderr!" in result
|
||||||
|
assert "!log!" not in result
|
||||||
|
|
||||||
|
result = testdir.runpytest("--show-capture=log", "--tb=short").stdout.str()
|
||||||
|
assert "!stdout!" not in result
|
||||||
|
assert "!stderr!" not in result
|
||||||
|
assert "!log!" in result
|
||||||
|
|
||||||
|
result = testdir.runpytest("--show-capture=no", "--tb=short").stdout.str()
|
||||||
|
assert "!stdout!" not in result
|
||||||
|
assert "!stderr!" not in result
|
||||||
|
assert "!log!" not in result
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.xfail("not hasattr(os, 'dup')")
|
@pytest.mark.xfail("not hasattr(os, 'dup')")
|
||||||
def test_fdopen_kept_alive_issue124(testdir):
|
def test_fdopen_kept_alive_issue124(testdir):
|
||||||
|
|
Loading…
Reference in New Issue