Merge pull request #3025 from anntzer/dont-rewrite-plugin

Respect PYTEST_DONT_REWRITE for plugins too.

closes #2995
This commit is contained in:
Ronny Pfannschmidt
2017-12-13 12:34:51 +01:00
committed by GitHub
4 changed files with 21 additions and 7 deletions

View File

@@ -179,11 +179,13 @@ class AssertionRewritingHook(object):
The named module or package as well as any nested modules will
be rewritten on import.
"""
already_imported = set(names).intersection(set(sys.modules))
if already_imported:
for name in already_imported:
if name not in self._rewritten_names:
self._warn_already_imported(name)
already_imported = (set(names)
.intersection(sys.modules)
.difference(self._rewritten_names))
for name in already_imported:
if not AssertionRewriter.is_rewrite_disabled(
sys.modules[name].__doc__ or ""):
self._warn_already_imported(name)
self._must_rewrite.update(names)
def _warn_already_imported(self, name):
@@ -635,7 +637,8 @@ class AssertionRewriter(ast.NodeVisitor):
not isinstance(field, ast.expr)):
nodes.append(field)
def is_rewrite_disabled(self, docstring):
@staticmethod
def is_rewrite_disabled(docstring):
return "PYTEST_DONT_REWRITE" in docstring
def variable(self):

View File

@@ -347,7 +347,7 @@ class RunResult:
:stdout: :py:class:`LineMatcher` of stdout, use ``stdout.str()`` to
reconstruct stdout or the commonly used ``stdout.fnmatch_lines()``
method
:stderrr: :py:class:`LineMatcher` of stderr
:stderr: :py:class:`LineMatcher` of stderr
:duration: duration in seconds
"""