def test_skipload_class(self): """Use _skipload_ class method to determine if plugin should be used""" @parent.Parent('test_parent') class Parent(object): """Parent with callable _skipload_""" plugins = Parent._get_plugins() class Child1(Parent): """Child succeeds""" skip = False @classmethod def _skipload_(cls): """Don't skip""" return cls.skip self.assertIs(plugins['Child1']['0'], Child1) self.assertEqual(OUTPUT.getvalue(), '') class Child2(Parent): # pylint: disable=unused-variable """Child fails""" skip = True, 'He has ceased to be!' @classmethod def _skipload_(cls): """Don't skip""" return cls.skip self.assertFalse('Child2' in plugins) self.assertRegex(OUTPUT.getvalue(), 'He has ceased to be!')
def test_skipload_static(self): """Use _skipload_ static method to determine if plugin should be used""" skip = False @parent.Parent('test_parent') class Parent(object): """Parent with callable _skipload_""" plugins = Parent._get_plugins() class Child1(Parent): """Child succeeds""" @staticmethod def _skipload_(): """Don't skip""" return skip self.assertIs(plugins['Child1']['0'], Child1) self.assertEqual(OUTPUT.getvalue(), '') skip = True, 'This parrot is no more!' class Child2(Parent): # pylint: disable=unused-variable """Child fails""" @staticmethod def _skipload_(): """Skip""" return skip self.assertFalse('Child2' in plugins) self.assertRegex(OUTPUT.getvalue(), 'This parrot is no more!')
def test_flush_companion_buffer(self): """ Output is stored in buffer, but only written in companion stream is defined """ manager = _manager.Manager(stream=self.tty.stdout) msg = u'test message' manager._companion_buffer = [msg] manager._flush_streams() # Companion buffer flushed, but not outputted self.assertEqual(manager._companion_buffer, []) self.tty.stdout.write(u'X\n') self.assertEqual(self.tty.stdread.readline(), 'X\n') # set companion stream and test again manager.companion_stream = OUTPUT manager._companion_buffer = [msg] manager._flush_streams() self.assertEqual(manager._companion_buffer, []) self.tty.stdout.write(u'X\n') self.assertEqual(self.tty.stdread.readline(), 'X\n') self.assertEqual(OUTPUT.getvalue(), msg)
def test_load_paths_missing(self): """Log on invalid path""" path1 = os.path.join(DATAPATH, 'lib', 'engines') path2 = os.path.join(DATAPATH, 'NotARealPath') ploader = loader.PluginLoader(group='testdata', paths=[path1, path2]) plugins = ploader.plugins self.assertEqual(len(plugins.engine), 1) self.assertTrue('steam' in plugins.engine) self.assertRegex(OUTPUT.getvalue().splitlines()[-1], 'not a valid directory')
def check_method(self, parent_class, error, child, e): """Check child methods""" self.assertEqual(OUTPUT.getvalue(), '') plugins = parent_class._get_plugins() if error: self.assertFalse(child.name in plugins) self.assertEqual(len(e), 1) self.assertRegex(str(e[-1].message), error) else: self.assertIs(plugins[child.name]['0'], child) self.assertEqual(len(e), 0)
def setUp(self): # Truncate log output OUTPUT.seek(0) OUTPUT.truncate(0)