def test_getInfosDictFromPlugin(self): analyzer = PluginFileAnalyzerMathingRegex( "mouf", r".*VersionedPlugin\d+\.py$") info_dict, cf_parser = analyzer.getInfosDictFromPlugin( self.plugin_directory, os.path.basename(self.version_plugin_10_path)) self.assertEqual(info_dict, { 'path': self.version_plugin_10_path, 'name': 'VersionedPlugin10' }) self.assertTrue(isinstance(cf_parser, ConfigParser))
def test_setPluginInfoClass_for_named_analyzer(self): class SpecificPluginInfo(PluginInfo): pass pl = PluginFileLocator() pl.setPluginPlaces([self.plugin_directory]) newAnalyzer = PluginFileAnalyzerMathingRegex( "mouf", r".*VersionedPlugin\d+\.py$") pl.appendAnalyzer(newAnalyzer) pl.setPluginInfoClass(SpecificPluginInfo, "info_ext") candidates, num = pl.locatePlugins() self.assertEqual(num, 5) self.assertEqual(len(candidates), num) versioned_plugins = [ c for c in candidates if "VersionedPlugin" in c[0] ] self.assertEqual(4, len(versioned_plugins)) for p in versioned_plugins: self.assertTrue(isinstance(p[2], PluginInfo)) simple_plugins = [ c for c in candidates if "VersionedPlugin" not in c[0] ] self.assertEqual(1, len(simple_plugins)) for p in simple_plugins: self.assertTrue(isinstance(p[2], SpecificPluginInfo))
def test_appendAnalyzer(self): pl = PluginFileLocator() pl.setPluginPlaces([self.plugin_directory]) newAnalyzer = PluginFileAnalyzerMathingRegex("mouf",r".*VersionedPlugin\d+\.py$") pl.appendAnalyzer(newAnalyzer) candidates, num = pl.locatePlugins() self.assertEqual(num,5) self.assertEqual(len(candidates),num)
def init_manager(): anl = PluginFileAnalyzerMathingRegex('custom_res_handler_plugins', r'^[A-Za-z0-9]+\.py$') res = PluginFileLocator(plugin_info_cls=CFCustomResourceHandler) res.setAnalyzers([anl]) manager = PluginManager( plugin_locator=res, categories_filter={'CFHandlers': CFCustomResourceHandler}) manager.setPluginPlaces([dirname(__file__) + '/plugins']) manager.collectPlugins() return manager
def scan_plugins(): global _plugin_toc _plugin_toc = {} # Load the plugins from the plugin directory. analyzer = PluginFileAnalyzerMathingRegex('', '.*\\.py$') plugin_locator = PluginFileLocator(analyzers=[analyzer]) manager = PluginManager(plugin_locator=plugin_locator) plugin_dirs = _get_plugin_dirs() logging.info('Loading plugins in %s' % str(plugin_dirs)) manager.setPluginPlaces(plugin_dirs) manager.collectPlugins() # Loop round the plugins and print their names. for plugin in manager.getAllPlugins(): plugin_info = plugin.plugin_object.get_plugin_info() for item in plugin_info: k = _get_item_key(item['class_type'], item['class_name']) _plugin_toc[k] = item logging.debug('p3_plugin_manager: _plugin_toc=%s' % _plugin_toc)
def test_isValid(self): analyzer = PluginFileAnalyzerMathingRegex( "mouf", r".*VersionedPlugin\d+\.py$") self.assertFalse(analyzer.isValidPlugin(self.yapsy_plugin_path)) self.assertTrue(analyzer.isValidPlugin(self.version_plugin_10_path)) self.assertTrue(analyzer.isValidPlugin(self.version_plugin_12_path))
def test_Contruction(self): analyzer = PluginFileAnalyzerMathingRegex("mouf", ".*") self.assertEqual(analyzer.name, "mouf")
:raises DeviceError: if a bootloader installation command has an error. """ pass def get_help(self): """Returns the help message for this plugin. It is optional to override this. :returns: a string representing the help message for this plugin.""" return "Installs the {0} bootloader.".format(self.prettyName) dirs = [ "/usr/local/weresync/plugins", os.path.dirname(__file__), get_python_lib() ] regex_analyzer = PluginFileAnalyzerMathingRegex("regex", "^weresync_.*\.py$") locator = PluginFileLocator([regex_analyzer]) __manager = PluginManager(categories_filter={"bootloader": IBootPlugin}, directories_list=dirs, plugin_locator=locator) def get_manager(): """Returns the PluginManager for this instance of WereSync""" return __manager
def test_getInfosDictFromPlugin(self): analyzer = PluginFileAnalyzerMathingRegex("mouf",r".*VersionedPlugin\d+\.py$") info_dict,cf_parser = analyzer.getInfosDictFromPlugin(self.plugin_directory, os.path.basename(self.version_plugin_10_path)) self.assertEqual(info_dict,{'path': self.version_plugin_10_path, 'name': 'VersionedPlugin10'}) self.assertTrue(isinstance(cf_parser,ConfigParser))
def test_isValid(self): analyzer = PluginFileAnalyzerMathingRegex("mouf",r".*VersionedPlugin\d+\.py$") self.assertFalse(analyzer.isValidPlugin(self.yapsy_plugin_path)) self.assertTrue(analyzer.isValidPlugin(self.version_plugin_10_path)) self.assertTrue(analyzer.isValidPlugin(self.version_plugin_12_path))