diff --git a/changelog/5278.bugfix.rst b/changelog/5278.bugfix.rst new file mode 100644 index 00000000000..88b211ba837 --- /dev/null +++ b/changelog/5278.bugfix.rst @@ -0,0 +1 @@ +Pytest's internal python plugin can be disabled using ``-p python`` now again. diff --git a/src/_pytest/assertion/rewrite.py b/src/_pytest/assertion/rewrite.py index 2903b89957e..9f87f55391c 100644 --- a/src/_pytest/assertion/rewrite.py +++ b/src/_pytest/assertion/rewrite.py @@ -60,7 +60,10 @@ class AssertionRewritingHook(object): def __init__(self, config): self.config = config - self.fnpats = config.getini("python_files") + try: + self.fnpats = config.getini("python_files") + except ValueError: + self.fnpats = ["test_*.py", "*_test.py"] self.session = None self.modules = {} self._rewritten_names = set() diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py index 03769b8153f..e630b199c76 100644 --- a/src/_pytest/config/__init__.py +++ b/src/_pytest/config/__init__.py @@ -113,16 +113,16 @@ def directory_arg(path, optname): # Plugins that cannot be disabled via "-p no:X" currently. -essential_plugins = ( +essential_plugins = ( # fmt: off "mark", "main", "runner", - "python", "fixtures", "helpconfig", # Provides -p. -) +) # fmt: on default_plugins = essential_plugins + ( + "python", "terminal", "debugging", "unittest", diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index 90290445717..0a6e04600eb 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -1075,6 +1075,15 @@ def test_foo(pytestconfig): return request.config +def pytest_addoption(parser): + parser.addini( + "usefixtures", + type="args", + default=[], + help="list of default fixtures to be used with this project", + ) + + class FixtureManager(object): """ pytest fixtures definitions and information is stored and managed diff --git a/src/_pytest/python.py b/src/_pytest/python.py index 18d90985536..a6edff0af57 100644 --- a/src/_pytest/python.py +++ b/src/_pytest/python.py @@ -79,15 +79,10 @@ def pytest_addoption(parser): default=False, help="show fixtures per test", ) - parser.addini( - "usefixtures", - type="args", - default=[], - help="list of default fixtures to be used with this project", - ) parser.addini( "python_files", type="args", + # NOTE: default is also used in AssertionRewritingHook. default=["test_*.py", "*_test.py"], help="glob-style file patterns for Python test module discovery", ) diff --git a/testing/test_config.py b/testing/test_config.py index ecb8fd4036e..cee3c64039d 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -1228,6 +1228,17 @@ def test_config_blocked_default_plugins(testdir, plugin): p = testdir.makepyfile("def test(): pass") result = testdir.runpytest(str(p), "-pno:%s" % plugin) + + if plugin == "python": + assert result.ret == EXIT_USAGEERROR + result.stderr.fnmatch_lines( + [ + "ERROR: not found: */test_config_blocked_default_plugins.py", + "(no name '*/test_config_blocked_default_plugins.py' in any of [])", + ] + ) + return + assert result.ret == EXIT_OK if plugin != "terminal": result.stdout.fnmatch_lines(["* 1 passed in *"])