def test_hooks_extra_plugins(self): registry = Registry() class Api: def hello(self, arg): pass hookrelay = HookRelay(hookspecs=Api, registry=registry) hook_hello = hookrelay.hello class Plugin: def hello(self, arg): return arg + 1 registry.register(Plugin()) class Plugin2: def hello(self, arg): return arg + 2 newhook = hookrelay._makecall("hello", extralookup=Plugin2()) l = newhook(arg=3) assert l == [5, 4] l2 = hook_hello(arg=3) assert l2 == [4]
def test_firstresult_definition(self): registry = Registry() class Api: def hello(self, arg): pass hello.firstresult = True mcm = HookRelay(hookspecs=Api, registry=registry) class Plugin: def hello(self, arg): return arg + 1 registry.register(Plugin()) res = mcm.hello(arg=3) assert res == 4
def test_happypath(self): registry = Registry() class Api: def hello(self, arg): pass mcm = HookRelay(hookspecs=Api, registry=registry) assert hasattr(mcm, 'hello') assert repr(mcm.hello).find("hello") != -1 class Plugin: def hello(self, arg): return arg + 1 registry.register(Plugin()) l = mcm.hello(arg=3) assert l == [4] assert not hasattr(mcm, 'world')
def test_only_kwargs(self): registry = Registry() class Api: def hello(self, arg): pass mcm = HookRelay(hookspecs=Api, registry=registry) py.test.raises(TypeError, "mcm.hello(3)")
def test_default_plugins(self): class Api: pass mcm = HookRelay(hookspecs=Api, registry=py._com.comregistry) assert mcm._registry == py._com.comregistry