Skip to content

Commit

Permalink
Fix verbosity bug in --collect-only (#5391)
Browse files Browse the repository at this point in the history
Fix verbosity bug in --collect-only
  • Loading branch information
nicoddemus committed Jun 5, 2019
2 parents be84ba8 + 577b0df commit 3656885
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
2 changes: 2 additions & 0 deletions changelog/5383.bugfix.rst
@@ -0,0 +1,2 @@
``-q`` has again an impact on the style of the collected items
(``--collect-only``) when ``--log-cli-level`` is used.
13 changes: 9 additions & 4 deletions src/_pytest/logging.py
Expand Up @@ -409,10 +409,6 @@ def __init__(self, config):
"""
self._config = config

# enable verbose output automatically if live logging is enabled
if self._log_cli_enabled() and config.getoption("verbose") < 1:
config.option.verbose = 1

self.print_logs = get_option_ini(config, "log_print")
self.formatter = self._create_formatter(
get_option_ini(config, "log_format"),
Expand Down Expand Up @@ -628,6 +624,15 @@ def pytest_sessionstart(self):
@pytest.hookimpl(hookwrapper=True)
def pytest_runtestloop(self, session):
"""Runs all collected test items."""

if session.config.option.collectonly:
yield
return

if self._log_cli_enabled() and self._config.getoption("verbose") < 1:
# setting verbose flag is needed to avoid messy test progress output
self._config.option.verbose = 1

with self.live_logs_context():
if self.log_file_handler is not None:
with catching_logs(self.log_file_handler, level=self.log_file_level):
Expand Down
43 changes: 37 additions & 6 deletions testing/logging/test_reporting.py
Expand Up @@ -916,14 +916,45 @@ def test_collection_live_logging(testdir):

result = testdir.runpytest("--log-cli-level=INFO")
result.stdout.fnmatch_lines(
[
"collecting*",
"*--- live log collection ---*",
"*Normal message*",
"collected 0 items",
]
["*--- live log collection ---*", "*Normal message*", "collected 0 items"]
)


@pytest.mark.parametrize("verbose", ["", "-q", "-qq"])
def test_collection_collect_only_live_logging(testdir, verbose):
testdir.makepyfile(
"""
def test_simple():
pass
"""
)

result = testdir.runpytest("--collect-only", "--log-cli-level=INFO", verbose)

expected_lines = []

if not verbose:
expected_lines.extend(
[
"*collected 1 item*",
"*<Module test_collection_collect_only_live_logging.py>*",
"*no tests ran*",
]
)
elif verbose == "-q":
assert "collected 1 item*" not in result.stdout.str()
expected_lines.extend(
[
"*test_collection_collect_only_live_logging.py::test_simple*",
"no tests ran in * seconds",
]
)
elif verbose == "-qq":
assert "collected 1 item*" not in result.stdout.str()
expected_lines.extend(["*test_collection_collect_only_live_logging.py: 1*"])

result.stdout.fnmatch_lines(expected_lines)


def test_collection_logging_to_file(testdir):
log_file = testdir.tmpdir.join("pytest.log").strpath
Expand Down

0 comments on commit 3656885

Please sign in to comment.