def test_inheritance(self): class SimpleExtension(object): data = {'counter': 0} def extra_init(self): self.get_data()['counter'] += 1 @classmethod def get_data(cls): return cls.data class CustomGrab(Grab, SimpleExtension): pass register_extensions(CustomGrab) SimpleExtension.get_data()['counter'] = 0 g = CustomGrab() self.assertEqual(SimpleExtension.get_data()['counter'], 1) class VeryCustomGrab(CustomGrab): pass SimpleExtension.get_data()['counter'] = 0 g = VeryCustomGrab() self.assertEqual(SimpleExtension.get_data()['counter'], 1)
def test_inheritance(self): class SimpleExtension(object): data = {'counter': 0} def extra_init(self): self.get_data()['counter'] += 1 @classmethod def get_data(cls): return cls.data class CustomGrab(Grab, SimpleExtension): pass register_extensions(CustomGrab) SimpleExtension.get_data()['counter'] = 0 g = CustomGrab() self.assertEqual(SimpleExtension.get_data()['counter'], 1) class VeryCustomGrab(CustomGrab): pass SimpleExtension.get_data()['counter'] = 0 g = VeryCustomGrab() self.assertEqual(SimpleExtension.get_data()['counter'], 1)
GLOBAL = {} class ExtensionA(object): def extra_foo(self): GLOBAL['items'].append('a') class ExtensionB(object): def extra_foo(self): GLOBAL['items'].append('b') class Worker(ExtensionA, ExtensionB): extension_points = ('foo',) def do_something(self): GLOBAL['items'].append('c') self.trigger_extensions('foo') register_extensions(Worker) class ExtensionTestCase(TestCase): def setUp(self): GLOBAL['items'] = [] def test_extensions(self): worker = Worker() worker.do_something() self.assertEqual(set(GLOBAL['items']), set(['a', 'b', 'c']))
class ExtensionA(object): def extra_foo(self): GLOBAL['items'].append('a') class ExtensionB(object): def extra_foo(self): GLOBAL['items'].append('b') class Worker(ExtensionA, ExtensionB): extension_points = ('foo', ) def do_something(self): GLOBAL['items'].append('c') self.trigger_extensions('foo') register_extensions(Worker) class ExtensionTestCase(TestCase): def setUp(self): GLOBAL['items'] = [] def test_extensions(self): worker = Worker() worker.do_something() self.assertEqual(set(GLOBAL['items']), set(['a', 'b', 'c']))