Merge remote-tracking branch 'upstream/features' into merge-master-into-features

This commit is contained in:
Bruno Oliveira 2019-01-30 09:37:46 -02:00
commit 02962fabda
6 changed files with 44 additions and 4 deletions

View File

@ -0,0 +1,2 @@
Display a message at the end of the test session when running under Python 2.7 and 3.4 that pytest 5.0 will no longer
support those Python versions.

View File

@ -0,0 +1 @@
``pytest_terminal_summary`` hook now can also receive a ``config`` parameter.

View File

@ -489,13 +489,14 @@ def pytest_report_teststatus(report, config):
Stops at first non-None result, see :ref:`firstresult` """
def pytest_terminal_summary(terminalreporter, exitstatus):
def pytest_terminal_summary(terminalreporter, exitstatus, config):
"""Add a section to terminal summary reporting.
:param _pytest.terminal.TerminalReporter terminalreporter: the internal terminal reporter object
:param int exitstatus: the exit status that will be reported back to the OS
:param _pytest.config.Config config: pytest config object
.. versionadded:: 3.5
.. versionadded:: 4.2
The ``config`` parameter.
"""

View File

@ -636,7 +636,7 @@ class TerminalReporter(object):
)
if exitstatus in summary_exit_codes:
self.config.hook.pytest_terminal_summary(
terminalreporter=self, exitstatus=exitstatus
terminalreporter=self, exitstatus=exitstatus, config=self.config
)
if exitstatus == EXIT_INTERRUPTED:
self._report_keyboardinterrupt()
@ -652,6 +652,7 @@ class TerminalReporter(object):
self.summary_passes()
# Display any extra warnings from teardown here (if any).
self.summary_warnings()
self.summary_deprecated_python()
def pytest_keyboard_interrupt(self, excinfo):
self._keyboardinterrupt_memo = excinfo.getrepr(funcargs=True)
@ -773,6 +774,20 @@ class TerminalReporter(object):
self.write_sep("_", msg)
self._outrep_summary(rep)
def summary_deprecated_python(self):
if sys.version_info[:2] <= (3, 4) and self.verbosity >= 0:
self.write_sep("=", "deprecated python version", yellow=True, bold=False)
using_version = ".".join(str(x) for x in sys.version_info[:3])
self.line(
"You are using Python {}, which will no longer be supported in pytest 5.0".format(
using_version
),
yellow=True,
bold=False,
)
self.line("For more information, please read:")
self.line(" https://docs.pytest.org/en/latest/py27-py34-deprecation.html")
def print_teardown_sections(self, rep):
showcapture = self.config.option.showcapture
if showcapture == "no":

View File

@ -854,7 +854,9 @@ class TestDurations(object):
result = testdir.runpytest("--durations=2")
assert result.ret == 0
lines = result.stdout.get_lines_after("*slowest*durations*")
assert "4 passed" in lines[2]
# account for the "deprecated python version" header
index = 2 if sys.version_info[:2] > (3, 4) else 6
assert "4 passed" in lines[index]
def test_calls_showall(self, testdir):
testdir.makepyfile(self.source)

View File

@ -3,6 +3,7 @@ from __future__ import division
from __future__ import print_function
import os
import sys
import pytest
from _pytest.warnings import SHOW_PYTEST_WARNINGS_ARG
@ -219,3 +220,21 @@ def test_fixture_named_request(testdir):
"*'request' is a reserved name for fixtures and will raise an error in future versions"
]
)
def test_python_deprecation(testdir):
result = testdir.runpytest()
python_ver = ".".join(str(x) for x in sys.version_info[:3])
msg = "You are using Python {}, which will no longer be supported in pytest 5.0".format(
python_ver
)
if sys.version_info[:2] <= (3, 4):
result.stdout.fnmatch_lines(
[
msg,
"For more information, please read:",
" https://docs.pytest.org/en/latest/py27-py34-deprecation.html",
]
)
else:
assert msg not in result.stdout.str()