tests: ensure cleanup with configs via get_config()

Also done in test_pluginmanager, although no resource warnings are
there at least.

Fixes https://github.com/pytest-dev/pytest/issues/4355.
This commit is contained in:
Daniel Hahler 2019-03-27 22:34:37 +01:00
parent aae02863db
commit d17ea7a9c0
3 changed files with 23 additions and 23 deletions

View File

@ -375,6 +375,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-]+)")

View File

@ -743,10 +743,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):
@ -1018,21 +1016,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 (
@ -1057,11 +1051,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"]

View File

@ -9,7 +9,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
@ -21,7 +20,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):
@ -37,7 +36,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)
@ -92,8 +91,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):
@ -202,8 +201,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="#")