remove pytest_namespace from _pytest.mark and fix latent pytest nesting bug
This commit is contained in:
parent
6a02cdbb35
commit
90788defb2
|
@ -66,10 +66,8 @@ class MarkerError(Exception):
|
||||||
"""Error in use of a pytest marker/attribute."""
|
"""Error in use of a pytest marker/attribute."""
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def pytest_namespace():
|
def pytest_namespace():
|
||||||
return {
|
return {
|
||||||
'mark': MarkGenerator(),
|
|
||||||
'param': ParameterSet.param,
|
'param': ParameterSet.param,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,9 +223,13 @@ def matchkeyword(colitem, keywordexpr):
|
||||||
|
|
||||||
|
|
||||||
def pytest_configure(config):
|
def pytest_configure(config):
|
||||||
import pytest
|
config._old_mark_config = MARK_GEN._config
|
||||||
if config.option.strict:
|
if config.option.strict:
|
||||||
pytest.mark._config = config
|
MARK_GEN._config = config
|
||||||
|
|
||||||
|
|
||||||
|
def pytest_unconfigure(config):
|
||||||
|
MARK_GEN._config = config._old_mark_config
|
||||||
|
|
||||||
|
|
||||||
class MarkGenerator(object):
|
class MarkGenerator(object):
|
||||||
|
@ -241,11 +243,13 @@ class MarkGenerator(object):
|
||||||
|
|
||||||
will set a 'slowtest' :class:`MarkInfo` object
|
will set a 'slowtest' :class:`MarkInfo` object
|
||||||
on the ``test_function`` object. """
|
on the ``test_function`` object. """
|
||||||
|
_config = None
|
||||||
|
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
if name[0] == "_":
|
if name[0] == "_":
|
||||||
raise AttributeError("Marker name must NOT start with underscore")
|
raise AttributeError("Marker name must NOT start with underscore")
|
||||||
if hasattr(self, '_config'):
|
if self._config is not None:
|
||||||
self._check(name)
|
self._check(name)
|
||||||
return MarkDecorator(Mark(name, (), {}))
|
return MarkDecorator(Mark(name, (), {}))
|
||||||
|
|
||||||
|
@ -263,6 +267,7 @@ class MarkGenerator(object):
|
||||||
if name not in self._markers:
|
if name not in self._markers:
|
||||||
raise AttributeError("%r not a registered marker" % (name,))
|
raise AttributeError("%r not a registered marker" % (name,))
|
||||||
|
|
||||||
|
|
||||||
def istestfunc(func):
|
def istestfunc(func):
|
||||||
return hasattr(func, "__call__") and \
|
return hasattr(func, "__call__") and \
|
||||||
getattr(func, "__name__", "<lambda>") != "<lambda>"
|
getattr(func, "__name__", "<lambda>") != "<lambda>"
|
||||||
|
@ -384,3 +389,6 @@ class MarkInfo(object):
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
""" yield MarkInfo objects each relating to a marking-call. """
|
""" yield MarkInfo objects each relating to a marking-call. """
|
||||||
return imap(MarkInfo, self._marks)
|
return imap(MarkInfo, self._marks)
|
||||||
|
|
||||||
|
|
||||||
|
MARK_GEN = MarkGenerator()
|
||||||
|
|
|
@ -20,6 +20,7 @@ __all__ = [
|
||||||
'skip',
|
'skip',
|
||||||
'importorskip',
|
'importorskip',
|
||||||
'exit',
|
'exit',
|
||||||
|
'mark',
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -41,6 +42,7 @@ from _pytest import __version__
|
||||||
from _pytest.debugging import pytestPDB as __pytestPDB
|
from _pytest.debugging import pytestPDB as __pytestPDB
|
||||||
from _pytest.recwarn import warns, deprecated_call
|
from _pytest.recwarn import warns, deprecated_call
|
||||||
from _pytest.runner import fail, skip, importorskip, exit
|
from _pytest.runner import fail, skip, importorskip, exit
|
||||||
|
from _pytest.mark import MARK_GEN as mark
|
||||||
set_trace = __pytestPDB.set_trace
|
set_trace = __pytestPDB.set_trace
|
||||||
|
|
||||||
_preloadplugins() # to populate pytest.* namespace so help(pytest) works
|
_preloadplugins() # to populate pytest.* namespace so help(pytest) works
|
||||||
|
|
Loading…
Reference in New Issue