Add newline before log messages and enable -v output when log_cli is enabled
This commit is contained in:
parent
5d89a93977
commit
8f6a5928f7
|
@ -271,6 +271,13 @@ class LoggingPlugin(object):
|
||||||
create a single one for the entire test session here.
|
create a single one for the entire test session here.
|
||||||
"""
|
"""
|
||||||
self._config = config
|
self._config = config
|
||||||
|
|
||||||
|
# enable verbose output automatically if live logging is enabled
|
||||||
|
if self._config.getini('log_cli') and not config.getoption('verbose'):
|
||||||
|
# sanity check: terminal reporter should not have been loaded at this point
|
||||||
|
assert self._config.pluginmanager.get_plugin('terminalreporter') is None
|
||||||
|
config.option.verbose = 1
|
||||||
|
|
||||||
self.print_logs = get_option_ini(config, 'log_print')
|
self.print_logs = get_option_ini(config, 'log_print')
|
||||||
self.formatter = logging.Formatter(
|
self.formatter = logging.Formatter(
|
||||||
get_option_ini(config, 'log_format'),
|
get_option_ini(config, 'log_format'),
|
||||||
|
@ -352,7 +359,7 @@ class LoggingPlugin(object):
|
||||||
"""
|
"""
|
||||||
terminal_reporter = self._config.pluginmanager.get_plugin('terminalreporter')
|
terminal_reporter = self._config.pluginmanager.get_plugin('terminalreporter')
|
||||||
if self._config.getini('log_cli') and terminal_reporter is not None:
|
if self._config.getini('log_cli') and terminal_reporter is not None:
|
||||||
log_cli_handler = logging.StreamHandler(terminal_reporter._tw)
|
log_cli_handler = _LiveLoggingStreamHandler(terminal_reporter._tw)
|
||||||
log_cli_format = get_option_ini(
|
log_cli_format = get_option_ini(
|
||||||
self._config, 'log_cli_format', 'log_format')
|
self._config, 'log_cli_format', 'log_format')
|
||||||
log_cli_date_format = get_option_ini(
|
log_cli_date_format = get_option_ini(
|
||||||
|
@ -368,3 +375,18 @@ class LoggingPlugin(object):
|
||||||
else:
|
else:
|
||||||
self.log_cli_handler = None
|
self.log_cli_handler = None
|
||||||
self.live_logs_context = _dummy_context_manager()
|
self.live_logs_context = _dummy_context_manager()
|
||||||
|
|
||||||
|
|
||||||
|
class _LiveLoggingStreamHandler(logging.StreamHandler):
|
||||||
|
"""
|
||||||
|
Custom StreamHandler used by the live logging feature: it will write a newline before the first log message
|
||||||
|
in each test.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def emit(self, record):
|
||||||
|
if not getattr(self, '_first_record_emitted', False):
|
||||||
|
self.stream.write('\n')
|
||||||
|
# we might consider adding a header at this point using self.stream.sep('-', 'live log') or something
|
||||||
|
# similar when we improve live logging output
|
||||||
|
self._first_record_emitted = True
|
||||||
|
logging.StreamHandler.emit(self, record)
|
||||||
|
|
|
@ -228,7 +228,8 @@ made in ``3.4`` after community feedback:
|
||||||
* Log levels are no longer changed unless explicitly requested by the :confval:`log_level` configuration
|
* Log levels are no longer changed unless explicitly requested by the :confval:`log_level` configuration
|
||||||
or ``--log-level`` command-line options. This allows users to configure logger objects themselves.
|
or ``--log-level`` command-line options. This allows users to configure logger objects themselves.
|
||||||
* :ref:`Live Logs <live_logs>` is now disabled by default and can be enabled setting the
|
* :ref:`Live Logs <live_logs>` is now disabled by default and can be enabled setting the
|
||||||
:confval:`log_cli` configuration option to ``true``.
|
:confval:`log_cli` configuration option to ``true``. When enabled, the verbosity is increased so logging for each
|
||||||
|
test is visible.
|
||||||
* :ref:`Live Logs <live_logs>` are now sent to ``sys.stdout`` and no longer require the ``-s`` command-line option
|
* :ref:`Live Logs <live_logs>` are now sent to ``sys.stdout`` and no longer require the ``-s`` command-line option
|
||||||
to work.
|
to work.
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,11 @@ def test_log_cli_enabled_disabled(testdir, enabled):
|
||||||
''')
|
''')
|
||||||
result = testdir.runpytest('-s')
|
result = testdir.runpytest('-s')
|
||||||
if enabled:
|
if enabled:
|
||||||
assert msg in result.stdout.str()
|
result.stdout.fnmatch_lines([
|
||||||
|
'test_log_cli_enabled_disabled.py::test_log_cli ',
|
||||||
|
'test_log_cli_enabled_disabled.py* CRITICAL critical message logged by test',
|
||||||
|
'PASSED',
|
||||||
|
])
|
||||||
else:
|
else:
|
||||||
assert msg not in result.stdout.str()
|
assert msg not in result.stdout.str()
|
||||||
|
|
||||||
|
@ -181,6 +185,7 @@ def test_log_cli_default_level(testdir):
|
||||||
|
|
||||||
# fnmatch_lines does an assertion internally
|
# fnmatch_lines does an assertion internally
|
||||||
result.stdout.fnmatch_lines([
|
result.stdout.fnmatch_lines([
|
||||||
|
'test_log_cli_default_level.py::test_log_cli ',
|
||||||
'test_log_cli_default_level.py*WARNING message will be shown*',
|
'test_log_cli_default_level.py*WARNING message will be shown*',
|
||||||
])
|
])
|
||||||
assert "INFO message won't be shown" not in result.stdout.str()
|
assert "INFO message won't be shown" not in result.stdout.str()
|
||||||
|
|
Loading…
Reference in New Issue