Allow disabling of python plugin

Fixes https://github.com/pytest-dev/pytest/issues/5277.
This commit is contained in:
Daniel Hahler 2019-05-16 16:30:40 +02:00
parent d94b4b031f
commit 93fd9debe3
5 changed files with 28 additions and 10 deletions

View File

@ -60,7 +60,10 @@ class AssertionRewritingHook(object):
def __init__(self, config): def __init__(self, config):
self.config = 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.session = None
self.modules = {} self.modules = {}
self._rewritten_names = set() self._rewritten_names = set()

View File

@ -113,16 +113,16 @@ def directory_arg(path, optname):
# Plugins that cannot be disabled via "-p no:X" currently. # Plugins that cannot be disabled via "-p no:X" currently.
essential_plugins = ( essential_plugins = ( # fmt: off
"mark", "mark",
"main", "main",
"runner", "runner",
"python",
"fixtures", "fixtures",
"helpconfig", # Provides -p. "helpconfig", # Provides -p.
) ) # fmt: on
default_plugins = essential_plugins + ( default_plugins = essential_plugins + (
"python",
"terminal", "terminal",
"debugging", "debugging",
"unittest", "unittest",

View File

@ -1075,6 +1075,15 @@ def pytestconfig(request):
return request.config 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): class FixtureManager(object):
""" """
pytest fixtures definitions and information is stored and managed pytest fixtures definitions and information is stored and managed

View File

@ -79,15 +79,10 @@ def pytest_addoption(parser):
default=False, default=False,
help="show fixtures per test", help="show fixtures per test",
) )
parser.addini(
"usefixtures",
type="args",
default=[],
help="list of default fixtures to be used with this project",
)
parser.addini( parser.addini(
"python_files", "python_files",
type="args", type="args",
# NOTE: default is also used in AssertionRewritingHook.
default=["test_*.py", "*_test.py"], default=["test_*.py", "*_test.py"],
help="glob-style file patterns for Python test module discovery", help="glob-style file patterns for Python test module discovery",
) )

View File

@ -1228,6 +1228,17 @@ def test_config_blocked_default_plugins(testdir, plugin):
p = testdir.makepyfile("def test(): pass") p = testdir.makepyfile("def test(): pass")
result = testdir.runpytest(str(p), "-pno:%s" % plugin) 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 assert result.ret == EXIT_OK
if plugin != "terminal": if plugin != "terminal":
result.stdout.fnmatch_lines(["* 1 passed in *"]) result.stdout.fnmatch_lines(["* 1 passed in *"])