Merge master into features
This commit is contained in:
commit
4e931b258d
|
@ -0,0 +1 @@
|
|||
Update docs for ``pytest_cmdline_parse`` hook to note availability liminations
|
|
@ -99,7 +99,8 @@ def pytest_cmdline_parse(pluginmanager, args):
|
|||
Stops at first non-None result, see :ref:`firstresult`
|
||||
|
||||
.. note::
|
||||
This hook will not be called for ``conftest.py`` files, only for setuptools plugins.
|
||||
This hook will only be called for plugin classes passed to the ``plugins`` arg when using `pytest.main`_ to
|
||||
perform an in-process test run.
|
||||
|
||||
:param _pytest.config.PytestPluginManager pluginmanager: pytest plugin manager
|
||||
:param list[str] args: list of arguments passed on the command line
|
||||
|
|
|
@ -335,6 +335,15 @@ def testdir(request, tmpdir_factory):
|
|||
return Testdir(request, tmpdir_factory)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def _config_for_test():
|
||||
from _pytest.config import get_config
|
||||
|
||||
config = get_config()
|
||||
yield config
|
||||
config._ensure_unconfigure() # cleanup, e.g. capman closing tmpfiles.
|
||||
|
||||
|
||||
rex_outcome = re.compile(r"(\d+) ([\w-]+)")
|
||||
|
||||
|
||||
|
|
|
@ -768,10 +768,8 @@ def test_notify_exception(testdir, capfd):
|
|||
assert not err
|
||||
|
||||
|
||||
def test_load_initial_conftest_last_ordering(testdir):
|
||||
from _pytest.config import get_config
|
||||
|
||||
pm = get_config().pluginmanager
|
||||
def test_load_initial_conftest_last_ordering(testdir, _config_for_test):
|
||||
pm = _config_for_test.pluginmanager
|
||||
|
||||
class My(object):
|
||||
def pytest_load_initial_conftests(self):
|
||||
|
@ -1043,21 +1041,17 @@ class TestOverrideIniArgs(object):
|
|||
assert rootdir == tmpdir
|
||||
assert inifile is None
|
||||
|
||||
def test_addopts_before_initini(self, monkeypatch):
|
||||
def test_addopts_before_initini(self, monkeypatch, _config_for_test):
|
||||
cache_dir = ".custom_cache"
|
||||
monkeypatch.setenv("PYTEST_ADDOPTS", "-o cache_dir=%s" % cache_dir)
|
||||
from _pytest.config import get_config
|
||||
|
||||
config = get_config()
|
||||
config = _config_for_test
|
||||
config._preparse([], addopts=True)
|
||||
assert config._override_ini == ["cache_dir=%s" % cache_dir]
|
||||
|
||||
def test_addopts_from_env_not_concatenated(self, monkeypatch):
|
||||
def test_addopts_from_env_not_concatenated(self, monkeypatch, _config_for_test):
|
||||
"""PYTEST_ADDOPTS should not take values from normal args (#4265)."""
|
||||
from _pytest.config import get_config
|
||||
|
||||
monkeypatch.setenv("PYTEST_ADDOPTS", "-o")
|
||||
config = get_config()
|
||||
config = _config_for_test
|
||||
with pytest.raises(UsageError) as excinfo:
|
||||
config._preparse(["cache_dir=ignored"], addopts=True)
|
||||
assert (
|
||||
|
@ -1082,11 +1076,9 @@ class TestOverrideIniArgs(object):
|
|||
)
|
||||
assert result.ret == _pytest.main.EXIT_USAGEERROR
|
||||
|
||||
def test_override_ini_does_not_contain_paths(self):
|
||||
def test_override_ini_does_not_contain_paths(self, _config_for_test):
|
||||
"""Check that -o no longer swallows all options after it (#3103)"""
|
||||
from _pytest.config import get_config
|
||||
|
||||
config = get_config()
|
||||
config = _config_for_test
|
||||
config._preparse(["-o", "cache_dir=/cache", "/some/test/path"])
|
||||
assert config._override_ini == ["cache_dir=/cache"]
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ import sys
|
|||
import types
|
||||
|
||||
import pytest
|
||||
from _pytest.config import get_config
|
||||
from _pytest.config import PytestPluginManager
|
||||
from _pytest.main import EXIT_NOTESTSCOLLECTED
|
||||
from _pytest.main import Session
|
||||
|
@ -20,7 +19,7 @@ def pytestpm():
|
|||
|
||||
|
||||
class TestPytestPluginInteractions(object):
|
||||
def test_addhooks_conftestplugin(self, testdir):
|
||||
def test_addhooks_conftestplugin(self, testdir, _config_for_test):
|
||||
testdir.makepyfile(
|
||||
newhooks="""
|
||||
def pytest_myhook(xyz):
|
||||
|
@ -36,7 +35,7 @@ class TestPytestPluginInteractions(object):
|
|||
return xyz + 1
|
||||
"""
|
||||
)
|
||||
config = get_config()
|
||||
config = _config_for_test
|
||||
pm = config.pluginmanager
|
||||
pm.hook.pytest_addhooks.call_historic(
|
||||
kwargs=dict(pluginmanager=config.pluginmanager)
|
||||
|
@ -91,8 +90,8 @@ class TestPytestPluginInteractions(object):
|
|||
config.pluginmanager.register(A())
|
||||
assert len(values) == 2
|
||||
|
||||
def test_hook_tracing(self):
|
||||
pytestpm = get_config().pluginmanager # fully initialized with plugins
|
||||
def test_hook_tracing(self, _config_for_test):
|
||||
pytestpm = _config_for_test.pluginmanager # fully initialized with plugins
|
||||
saveindent = []
|
||||
|
||||
class api1(object):
|
||||
|
@ -201,8 +200,8 @@ class TestPytestPluginManager(object):
|
|||
assert pytestpm.get_plugin("pytest_p1").__name__ == "pytest_p1"
|
||||
assert pytestpm.get_plugin("pytest_p2").__name__ == "pytest_p2"
|
||||
|
||||
def test_consider_module_import_module(self, testdir):
|
||||
pytestpm = get_config().pluginmanager
|
||||
def test_consider_module_import_module(self, testdir, _config_for_test):
|
||||
pytestpm = _config_for_test.pluginmanager
|
||||
mod = types.ModuleType("x")
|
||||
mod.pytest_plugins = "pytest_a"
|
||||
aplugin = testdir.makepyfile(pytest_a="#")
|
||||
|
|
Loading…
Reference in New Issue