def test_listattr(self): plugins = Registry() class api1: x = 41 class api2: x = 42 class api3: x = 43 plugins.register(api1()) plugins.register(api2()) plugins.register(api3()) l = list(plugins.listattr('x')) assert l == [41, 42, 43] l = list(plugins.listattr('x', reverse=True)) assert l == [43, 42, 41] class api4: x = 44 l = list(plugins.listattr('x', extra=(api4, ))) assert l == range(41, 45) assert len(list(plugins)) == 3 # otherwise extra added
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_register(self): registry = Registry() class MyPlugin: pass my = MyPlugin() registry.register(my) assert list(registry) == [my] my2 = MyPlugin() registry.register(my2) assert list(registry) == [my, my2] assert registry.isregistered(my) assert registry.isregistered(my2) registry.unregister(my) assert not registry.isregistered(my) assert list(registry) == [my2]
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_listattr(self): plugins = Registry() class api1: x = 41 class api2: x = 42 class api3: x = 43 plugins.register(api1()) plugins.register(api2()) plugins.register(api3()) l = list(plugins.listattr('x')) assert l == [41, 42, 43] l = list(plugins.listattr('x', reverse=True)) assert l == [43, 42, 41] class api4: x = 44 l = list(plugins.listattr('x', extra=(api4,))) assert l == range(41, 45) assert len(list(plugins)) == 3 # otherwise extra added