Merge pull request #5011 from blueyed/merge-master-into-features
Merge master into features
This commit is contained in:
		
						commit
						e7ade066b6
					
				|  | @ -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` |     Stops at first non-None result, see :ref:`firstresult` | ||||||
| 
 | 
 | ||||||
|     .. note:: |     .. 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 _pytest.config.PytestPluginManager pluginmanager: pytest plugin manager | ||||||
|     :param list[str] args: list of arguments passed on the command line |     :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) |     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-]+)") | rex_outcome = re.compile(r"(\d+) ([\w-]+)") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -784,10 +784,8 @@ def test_notify_exception(testdir, capfd): | ||||||
|     assert not err |     assert not err | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_load_initial_conftest_last_ordering(testdir): | def test_load_initial_conftest_last_ordering(testdir, _config_for_test): | ||||||
|     from _pytest.config import get_config |     pm = _config_for_test.pluginmanager | ||||||
| 
 |  | ||||||
|     pm = get_config().pluginmanager |  | ||||||
| 
 | 
 | ||||||
|     class My(object): |     class My(object): | ||||||
|         def pytest_load_initial_conftests(self): |         def pytest_load_initial_conftests(self): | ||||||
|  | @ -1059,21 +1057,17 @@ class TestOverrideIniArgs(object): | ||||||
|             assert rootdir == tmpdir |             assert rootdir == tmpdir | ||||||
|             assert inifile is None |             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" |         cache_dir = ".custom_cache" | ||||||
|         monkeypatch.setenv("PYTEST_ADDOPTS", "-o cache_dir=%s" % cache_dir) |         monkeypatch.setenv("PYTEST_ADDOPTS", "-o cache_dir=%s" % cache_dir) | ||||||
|         from _pytest.config import get_config |         config = _config_for_test | ||||||
| 
 |  | ||||||
|         config = get_config() |  | ||||||
|         config._preparse([], addopts=True) |         config._preparse([], addopts=True) | ||||||
|         assert config._override_ini == ["cache_dir=%s" % cache_dir] |         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).""" |         """PYTEST_ADDOPTS should not take values from normal args (#4265).""" | ||||||
|         from _pytest.config import get_config |  | ||||||
| 
 |  | ||||||
|         monkeypatch.setenv("PYTEST_ADDOPTS", "-o") |         monkeypatch.setenv("PYTEST_ADDOPTS", "-o") | ||||||
|         config = get_config() |         config = _config_for_test | ||||||
|         with pytest.raises(UsageError) as excinfo: |         with pytest.raises(UsageError) as excinfo: | ||||||
|             config._preparse(["cache_dir=ignored"], addopts=True) |             config._preparse(["cache_dir=ignored"], addopts=True) | ||||||
|         assert ( |         assert ( | ||||||
|  | @ -1098,11 +1092,9 @@ class TestOverrideIniArgs(object): | ||||||
|         ) |         ) | ||||||
|         assert result.ret == _pytest.main.EXIT_USAGEERROR |         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)""" |         """Check that -o no longer swallows all options after it (#3103)""" | ||||||
|         from _pytest.config import get_config |         config = _config_for_test | ||||||
| 
 |  | ||||||
|         config = get_config() |  | ||||||
|         config._preparse(["-o", "cache_dir=/cache", "/some/test/path"]) |         config._preparse(["-o", "cache_dir=/cache", "/some/test/path"]) | ||||||
|         assert config._override_ini == ["cache_dir=/cache"] |         assert config._override_ini == ["cache_dir=/cache"] | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,7 +8,6 @@ import sys | ||||||
| import types | import types | ||||||
| 
 | 
 | ||||||
| import pytest | import pytest | ||||||
| from _pytest.config import get_config |  | ||||||
| from _pytest.config import PytestPluginManager | from _pytest.config import PytestPluginManager | ||||||
| from _pytest.main import EXIT_NOTESTSCOLLECTED | from _pytest.main import EXIT_NOTESTSCOLLECTED | ||||||
| from _pytest.main import Session | from _pytest.main import Session | ||||||
|  | @ -20,7 +19,7 @@ def pytestpm(): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TestPytestPluginInteractions(object): | class TestPytestPluginInteractions(object): | ||||||
|     def test_addhooks_conftestplugin(self, testdir): |     def test_addhooks_conftestplugin(self, testdir, _config_for_test): | ||||||
|         testdir.makepyfile( |         testdir.makepyfile( | ||||||
|             newhooks=""" |             newhooks=""" | ||||||
|             def pytest_myhook(xyz): |             def pytest_myhook(xyz): | ||||||
|  | @ -36,7 +35,7 @@ class TestPytestPluginInteractions(object): | ||||||
|                 return xyz + 1 |                 return xyz + 1 | ||||||
|         """ |         """ | ||||||
|         ) |         ) | ||||||
|         config = get_config() |         config = _config_for_test | ||||||
|         pm = config.pluginmanager |         pm = config.pluginmanager | ||||||
|         pm.hook.pytest_addhooks.call_historic( |         pm.hook.pytest_addhooks.call_historic( | ||||||
|             kwargs=dict(pluginmanager=config.pluginmanager) |             kwargs=dict(pluginmanager=config.pluginmanager) | ||||||
|  | @ -91,8 +90,8 @@ class TestPytestPluginInteractions(object): | ||||||
|         config.pluginmanager.register(A()) |         config.pluginmanager.register(A()) | ||||||
|         assert len(values) == 2 |         assert len(values) == 2 | ||||||
| 
 | 
 | ||||||
|     def test_hook_tracing(self): |     def test_hook_tracing(self, _config_for_test): | ||||||
|         pytestpm = get_config().pluginmanager  # fully initialized with plugins |         pytestpm = _config_for_test.pluginmanager  # fully initialized with plugins | ||||||
|         saveindent = [] |         saveindent = [] | ||||||
| 
 | 
 | ||||||
|         class api1(object): |         class api1(object): | ||||||
|  | @ -201,8 +200,8 @@ class TestPytestPluginManager(object): | ||||||
|         assert pytestpm.get_plugin("pytest_p1").__name__ == "pytest_p1" |         assert pytestpm.get_plugin("pytest_p1").__name__ == "pytest_p1" | ||||||
|         assert pytestpm.get_plugin("pytest_p2").__name__ == "pytest_p2" |         assert pytestpm.get_plugin("pytest_p2").__name__ == "pytest_p2" | ||||||
| 
 | 
 | ||||||
|     def test_consider_module_import_module(self, testdir): |     def test_consider_module_import_module(self, testdir, _config_for_test): | ||||||
|         pytestpm = get_config().pluginmanager |         pytestpm = _config_for_test.pluginmanager | ||||||
|         mod = types.ModuleType("x") |         mod = types.ModuleType("x") | ||||||
|         mod.pytest_plugins = "pytest_a" |         mod.pytest_plugins = "pytest_a" | ||||||
|         aplugin = testdir.makepyfile(pytest_a="#") |         aplugin = testdir.makepyfile(pytest_a="#") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue