示例#1
0
    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!')
示例#2
0
    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!')
示例#3
0
    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)
示例#4
0
    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')
示例#5
0
    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)