def test_listattr_tryfirst(self): class P1: @pytest.mark.tryfirst def m(self): return 17 class P2: def m(self): return 23 class P3: def m(self): return 19 pluginmanager = PluginManager() p1 = P1() p2 = P2() p3 = P3() pluginmanager.register(p1) pluginmanager.register(p2) pluginmanager.register(p3) methods = pluginmanager.listattr('m') assert methods == [p2.m, p3.m, p1.m] # listattr keeps a cache and deleting # a function attribute requires clearing it pluginmanager._listattrcache.clear() del P1.m.__dict__['tryfirst'] pytest.mark.trylast(getattr(P2.m, 'im_func', P2.m)) methods = pluginmanager.listattr('m') assert methods == [p2.m, p1.m, p3.m]
def test_listattr(self): pluginmanager = PluginManager() class My2: x = 42 pluginmanager.register(My2()) assert not pluginmanager.listattr("hello") assert pluginmanager.listattr("x") == [42]
def test_listattr(self): plugins = PluginManager() 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]