Keep backward compatibility for code as kw in Node.warn
This commit is contained in:
parent
d3ca739c00
commit
b7560a8808
|
@ -136,7 +136,7 @@ class Node(object):
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<%s %r>" % (self.__class__.__name__, getattr(self, "name", None))
|
return "<%s %r>" % (self.__class__.__name__, getattr(self, "name", None))
|
||||||
|
|
||||||
def warn(self, code_or_warning, message=None):
|
def warn(self, code_or_warning=None, message=None, code=None):
|
||||||
"""Issue a warning for this item.
|
"""Issue a warning for this item.
|
||||||
|
|
||||||
Warnings will be displayed after the test session, unless explicitly suppressed.
|
Warnings will be displayed after the test session, unless explicitly suppressed.
|
||||||
|
@ -164,12 +164,20 @@ class Node(object):
|
||||||
|
|
||||||
:param Union[Warning,str] code_or_warning: warning instance or warning code (legacy).
|
:param Union[Warning,str] code_or_warning: warning instance or warning code (legacy).
|
||||||
:param Union[str,None] message: message to display when called in the legacy form.
|
:param Union[str,None] message: message to display when called in the legacy form.
|
||||||
|
:param str code: code for the warning, in legacy form when using keyword arguments.
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
if message is None:
|
if message is None:
|
||||||
|
if code_or_warning is None:
|
||||||
|
raise ValueError("code_or_warning must be given")
|
||||||
self._std_warn(code_or_warning)
|
self._std_warn(code_or_warning)
|
||||||
else:
|
else:
|
||||||
self._legacy_warn(code_or_warning, message)
|
if code_or_warning and code:
|
||||||
|
raise ValueError(
|
||||||
|
"code_or_warning and code cannot both be passed to this function"
|
||||||
|
)
|
||||||
|
code = code_or_warning or code
|
||||||
|
self._legacy_warn(code, message)
|
||||||
|
|
||||||
def _legacy_warn(self, code, message):
|
def _legacy_warn(self, code, message):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -809,18 +809,23 @@ class TestLegacyWarning(object):
|
||||||
)
|
)
|
||||||
|
|
||||||
@pytest.mark.filterwarnings("default")
|
@pytest.mark.filterwarnings("default")
|
||||||
def test_warn_on_test_item_from_request(self, testdir, request):
|
@pytest.mark.parametrize("use_kw", [True, False])
|
||||||
|
def test_warn_on_test_item_from_request(self, testdir, use_kw):
|
||||||
|
code_kw = "code=" if use_kw else ""
|
||||||
|
message_kw = "message=" if use_kw else ""
|
||||||
testdir.makepyfile(
|
testdir.makepyfile(
|
||||||
"""
|
"""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def fix(request):
|
def fix(request):
|
||||||
request.node.warn("T1", "hello")
|
request.node.warn({code_kw}"T1", {message_kw}"hello")
|
||||||
|
|
||||||
def test_hello(fix):
|
def test_hello(fix):
|
||||||
pass
|
pass
|
||||||
"""
|
""".format(
|
||||||
|
code_kw=code_kw, message_kw=message_kw
|
||||||
|
)
|
||||||
)
|
)
|
||||||
result = testdir.runpytest("--disable-pytest-warnings")
|
result = testdir.runpytest("--disable-pytest-warnings")
|
||||||
assert "hello" not in result.stdout.str()
|
assert "hello" not in result.stdout.str()
|
||||||
|
|
Loading…
Reference in New Issue