diff --git a/AUTHORS b/AUTHORS index 34c6f64378b..44ae6aa43ab 100644 --- a/AUTHORS +++ b/AUTHORS @@ -186,3 +186,4 @@ Wouter van Ackooy Xuan Luong Xuecong Liao Zoltán Máté +Roland Puntaier diff --git a/_pytest/config.py b/_pytest/config.py index 1ae1ffd092b..499c8079d41 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -417,7 +417,7 @@ def import_plugin(self, modname): # _pytest prefix. assert isinstance(modname, (six.text_type, str)), "module name as text required, got %r" % modname modname = str(modname) - if self.get_plugin(modname) is not None: + if self.is_blocked(modname) or self.get_plugin(modname) is not None: return if modname in builtin_plugins: importspec = "_pytest." + modname diff --git a/changelog/2920.bugfix b/changelog/2920.bugfix new file mode 100644 index 00000000000..9c5217278ae --- /dev/null +++ b/changelog/2920.bugfix @@ -0,0 +1 @@ +Fix issue about ``-p no:`` having no effect. diff --git a/changelog/2949.trivial b/changelog/2949.trivial index 357d5825310..39789e72b7a 100644 --- a/changelog/2949.trivial +++ b/changelog/2949.trivial @@ -1 +1 @@ -iUpdate github "bugs" link in CONTRIBUTING.rst +Update github "bugs" link in CONTRIBUTING.rst diff --git a/testing/test_config.py b/testing/test_config.py index 246c5b71b9a..44b8c317a28 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -1,4 +1,5 @@ from __future__ import absolute_import, division, print_function +import sys import py import pytest @@ -459,9 +460,12 @@ def load(self): testdir.parseconfig() -def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch): +@pytest.mark.parametrize('block_it', [True, False]) +def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch, block_it): pkg_resources = pytest.importorskip("pkg_resources") + plugin_module_placeholder = object() + def my_iter(name): assert name == "pytest11" @@ -477,14 +481,19 @@ class EntryPoint(object): dist = Dist() def load(self): - assert 0, "should not arrive here" + return plugin_module_placeholder return iter([EntryPoint()]) monkeypatch.setattr(pkg_resources, 'iter_entry_points', my_iter) - config = testdir.parseconfig("-p", "no:mytestplugin") - plugin = config.pluginmanager.getplugin("mytestplugin") - assert plugin is None + args = ("-p", "no:mytestplugin") if block_it else () + config = testdir.parseconfig(*args) + config.pluginmanager.import_plugin("mytestplugin") + if block_it: + assert "mytestplugin" not in sys.modules + assert config.pluginmanager.get_plugin('mytestplugin') is None + else: + assert config.pluginmanager.get_plugin('mytestplugin') is plugin_module_placeholder def test_cmdline_processargs_simple(testdir):