def test_ignorable_classes(self):
        self._create('foo.py', 'class Foo(object): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, onlyif=lambda x, y: False)

        self.assertEqual({}, sut.plugins)
    def test_containing_directories(self):
        self._create_dir('foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual({}, sut.plugins)
    def test_load_simple_file(self):
        self._create('foo.py', 'class Foo(object): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual(['Foo'], list(sut.plugins.keys()))
Пример #4
0
class PluginRegistry(object):
    """
    """
    def __init__(self, deviceRegistry):
        """
        """
        self.__deviceRegistry = deviceRegistry
        self.__logger = logging.getLogger("PluginRegistry")
        self.__pluginsloader = PluginLoader()
        self.__plugins = []

    def __isPlugin(self, name, clazz):
        #print ("Checking %s (%s)" % (name, clazz))
        return isclass(clazz) and issubclass(clazz, Plugin) and clazz != Plugin

    def getPlugins(self):
        return self.__plugins

    def initialize(self, directory):
        self.__pluginsloader.load_directory(
            directory,
            onlyif=self.__isPlugin,
            context={'deviceRegistry': self.__deviceRegistry})
        for name, plugin in self.__pluginsloader.plugins.iteritems():
            self.__logger.debug("Loading plugin: %s" % name)
            inst = plugin()
            inst.setDeviceRegistry(self.__deviceRegistry)
            self.__plugins.append(inst)
Пример #5
0
class PluginRegistry(object):
    """
    """
    
    def __init__(self, deviceRegistry):
        """
        """
        self.__deviceRegistry = deviceRegistry
        self.__logger = logging.getLogger("PluginRegistry")
        self.__pluginsloader = PluginLoader()
        self.__plugins = []
        
    def __isPlugin(self, name, clazz):
        #print ("Checking %s (%s)" % (name, clazz)) 
        return isclass(clazz) and issubclass(clazz, Plugin) and clazz != Plugin
    
    def getPlugins(self):
        return self.__plugins
    
    def initialize(self, directory):
        self.__pluginsloader.load_directory(directory, onlyif=self.__isPlugin, 
                                            context={'deviceRegistry': self.__deviceRegistry})
        for name, plugin in self.__pluginsloader.plugins.iteritems():
            self.__logger.debug("Loading plugin: %s" % name)
            inst = plugin()
            inst.setDeviceRegistry(self.__deviceRegistry)
            self.__plugins.append(inst)
Пример #6
0
    def test_containing_directories(self):
        self._create_dir('foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual({}, sut.plugins)
Пример #7
0
    def test_load_simple_file(self):
        self._create('foo.py', 'class Foo(object): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual(['Foo'], list(sut.plugins.keys()))
Пример #8
0
    def test_ignorable_classes(self):
        self._create('foo.py', 'class Foo(object): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, onlyif=lambda x, y: False)

        self.assertEqual({}, sut.plugins)
Пример #9
0
    def test_link_recursive(self):
        os.symlink(self.plugin_dir, os.path.join(self.plugin_dir, 'foo'))

        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=True)

        self.assertEqual({}, sut.plugins)
Пример #10
0
    def test_recursive_mode_off(self):
        self._create_dir('foo')
        self._create('bar.py', 'class Bazz(object): pass', 'foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=False)

        self.assertEqual({}, sut.plugins)
Пример #11
0
    def test_recursive_mode(self):
        self._create_dir('foo')
        self._create('bar.py', 'class Bazz(object): pass', 'foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=True)

        self.assertEqual(['Bazz'], list(sut.plugins.keys()))
    def test_link_recursive(self):
        os.symlink(self.plugin_dir, os.path.join(self.plugin_dir, 'foo'))

        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=True)

        self.assertEqual({}, sut.plugins)
    def test_recursive_mode_off(self):
        self._create_dir('foo')
        self._create('bar.py', 'class Bazz(object): pass', 'foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=False)

        self.assertEqual({}, sut.plugins)
    def test_recursive_mode(self):
        self._create_dir('foo')
        self._create('bar.py', 'class Bazz(object): pass', 'foo')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, recursive=True)

        self.assertEqual(['Bazz'], list(sut.plugins.keys()))
Пример #15
0
    def _load_plugins(self):
        plugin_path = os.path.join(
            os.path.dirname(__file__),
            'plugins',
            )
        plugin_mgr = PluginLoader()
        plugin_mgr.load_directory(plugin_path, onlyif=self._check_plugin)

        self.plugins = [c() for n, c in plugin_mgr.plugins.items()]
Пример #16
0
    def _load_plugins(self):
        plugin_path = os.path.join(
            os.path.dirname(__file__),
            'plugins',
        )
        plugin_mgr = PluginLoader()
        plugin_mgr.load_directory(plugin_path, onlyif=self._check_plugin)

        self.plugins = [c() for n, c in plugin_mgr.plugins.items()]
Пример #17
0
    def test_use_context(self):
        class Pattern(object):
            pass

        self._create('foo.py', 'class Foo(Bar): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, context={'Bar': Pattern})

        self.assertEqual(sorted(['Foo', 'Bar']),
                         sorted(list(sut.plugins.keys())))
    def test_use_context(self):
        class Pattern(object):
            pass

        self._create('foo.py', 'class Foo(Bar): pass')
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir, context={'Bar': Pattern})

        self.assertEqual(sorted(['Foo', 'Bar']),
                         sorted(list(sut.plugins.keys())))
Пример #19
0
    def test_empty_directory(self):
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual({}, sut.plugins)
    def test_empty_directory(self):
        sut = PluginLoader()

        sut.load_directory(self.plugin_dir)

        self.assertEqual({}, sut.plugins)