Drop the "alias" helper used in MarkDecorator
It is a little too obscure IMO, but the reason I want to drop it is that type checking has no hope of understanding such dynamic constructs. The warning argument wasn't used.
This commit is contained in:
parent
984d90a811
commit
84b2c81db4
|
@ -2,7 +2,6 @@ import inspect
|
||||||
import warnings
|
import warnings
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from collections.abc import MutableMapping
|
from collections.abc import MutableMapping
|
||||||
from operator import attrgetter
|
|
||||||
from typing import Set
|
from typing import Set
|
||||||
|
|
||||||
import attr
|
import attr
|
||||||
|
@ -17,16 +16,6 @@ from _pytest.warning_types import PytestUnknownMarkWarning
|
||||||
EMPTY_PARAMETERSET_OPTION = "empty_parameter_set_mark"
|
EMPTY_PARAMETERSET_OPTION = "empty_parameter_set_mark"
|
||||||
|
|
||||||
|
|
||||||
def alias(name, warning=None):
|
|
||||||
getter = attrgetter(name)
|
|
||||||
|
|
||||||
def warned(self):
|
|
||||||
warnings.warn(warning, stacklevel=2)
|
|
||||||
return getter(self)
|
|
||||||
|
|
||||||
return property(getter if warning is None else warned, doc="alias for " + name)
|
|
||||||
|
|
||||||
|
|
||||||
def istestfunc(func):
|
def istestfunc(func):
|
||||||
return (
|
return (
|
||||||
hasattr(func, "__call__")
|
hasattr(func, "__call__")
|
||||||
|
@ -205,9 +194,20 @@ class MarkDecorator:
|
||||||
|
|
||||||
mark = attr.ib(validator=attr.validators.instance_of(Mark))
|
mark = attr.ib(validator=attr.validators.instance_of(Mark))
|
||||||
|
|
||||||
name = alias("mark.name")
|
@property
|
||||||
args = alias("mark.args")
|
def name(self):
|
||||||
kwargs = alias("mark.kwargs")
|
"""alias for mark.name"""
|
||||||
|
return self.mark.name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def args(self):
|
||||||
|
"""alias for mark.args"""
|
||||||
|
return self.mark.args
|
||||||
|
|
||||||
|
@property
|
||||||
|
def kwargs(self):
|
||||||
|
"""alias for mark.kwargs"""
|
||||||
|
return self.mark.kwargs
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def markname(self):
|
def markname(self):
|
||||||
|
|
|
@ -831,6 +831,12 @@ class TestMarkDecorator:
|
||||||
def test__eq__(self, lhs, rhs, expected):
|
def test__eq__(self, lhs, rhs, expected):
|
||||||
assert (lhs == rhs) == expected
|
assert (lhs == rhs) == expected
|
||||||
|
|
||||||
|
def test_aliases(self) -> None:
|
||||||
|
md = pytest.mark.foo(1, "2", three=3)
|
||||||
|
assert md.name == "foo"
|
||||||
|
assert md.args == (1, "2")
|
||||||
|
assert md.kwargs == {"three": 3}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("mark", [None, "", "skip", "xfail"])
|
@pytest.mark.parametrize("mark", [None, "", "skip", "xfail"])
|
||||||
def test_parameterset_for_parametrize_marks(testdir, mark):
|
def test_parameterset_for_parametrize_marks(testdir, mark):
|
||||||
|
|
Loading…
Reference in New Issue