Skip to content

Commit

Permalink
Merge pull request #97 from tgoodlet/test_reject_non_routine_hookimpls
Browse files Browse the repository at this point in the history
Prove that `PluginManger.register()` ignores non-routines
  • Loading branch information
goodboy authored Nov 14, 2017
2 parents 01d3589 + 8ce9161 commit 607862c
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions testing/test_pluginmanager.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import pytest
import types

from pluggy import (PluginValidationError,
HookCallError, HookimplMarker, HookspecMarker)
Expand Down Expand Up @@ -350,3 +351,24 @@ def m(self, __multicall__, x):
def test_add_hookspecs_nohooks(pm):
with pytest.raises(ValueError):
pm.add_hookspecs(10)


def test_reject_prefixed_module(pm):
"""Verify that a module type attribute that contains the project
prefix in its name (in this case `'example_*'` isn't collected
when registering a module which imports it.
"""
pm._implprefix = 'example'
conftest = types.ModuleType("conftest")
src = ("""
def example_hook():
pass
""")
exec(src, conftest.__dict__)
conftest.example_blah = types.ModuleType("example_blah")
name = pm.register(conftest)
assert name == 'conftest'
assert getattr(pm.hook, 'example_blah', None) is None
assert getattr(pm.hook, 'example_hook', None) # conftest.example_hook should be collected
assert pm.parse_hookimpl_opts(conftest, 'example_blah') is None
assert pm.parse_hookimpl_opts(conftest, 'example_hook') == {}

0 comments on commit 607862c

Please sign in to comment.