Merge pull request #2940 from nicoddemus/rewrite-bug-2939
Fix assertion rewrite to match module names correctly
This commit is contained in:
commit
8df7ed12c1
|
@ -168,7 +168,7 @@ class AssertionRewritingHook(object):
|
|||
return True
|
||||
|
||||
for marked in self._must_rewrite:
|
||||
if name.startswith(marked):
|
||||
if name == marked or name.startswith(marked + '.'):
|
||||
state.trace("matched marked file %r (from %r)" % (name, marked))
|
||||
return True
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix issue in assertion rewriting which could lead it to rewrite modules which should not be rewritten.
|
|
@ -129,6 +129,24 @@ class TestImportHookInstallation(object):
|
|||
result = testdir.runpytest_subprocess('--assert=rewrite')
|
||||
assert result.ret == 0
|
||||
|
||||
def test_pytest_plugins_rewrite_module_names_correctly(self, testdir):
|
||||
"""Test that we match files correctly when they are marked for rewriting (#2939)."""
|
||||
contents = {
|
||||
'conftest.py': """
|
||||
pytest_plugins = "ham"
|
||||
""",
|
||||
'ham.py': "",
|
||||
'hamster.py': "",
|
||||
'test_foo.py': """
|
||||
def test_foo(pytestconfig):
|
||||
assert pytestconfig.pluginmanager.rewrite_hook.find_module('ham') is not None
|
||||
assert pytestconfig.pluginmanager.rewrite_hook.find_module('hamster') is None
|
||||
""",
|
||||
}
|
||||
testdir.makepyfile(**contents)
|
||||
result = testdir.runpytest_subprocess('--assert=rewrite')
|
||||
assert result.ret == 0
|
||||
|
||||
@pytest.mark.parametrize('mode', ['plain', 'rewrite'])
|
||||
@pytest.mark.parametrize('plugin_state', ['development', 'installed'])
|
||||
def test_installed_plugin_rewrite(self, testdir, mode, plugin_state):
|
||||
|
|
Loading…
Reference in New Issue