def test_update_variables(self): application = Application() self.assertEqual(0, len(application.variables)) self.assertRaises(TypeError, application.update_variables, None) application.update_variables({}) self.assertEqual(0, len(application.variables)) application.update_variables({'var1':1, 'var2':2}) self.assertEqual(2, len(application.variables)) self.assertEqual(1, application.variables['var1']) self.assertEqual(2, application.variables['var2'])
def test_plugins(self): application = Application() self.assertEqual(0, len(application.plugins)) invoked = [False, False] def simple_plugin(event, monitor, context): invoked[0] = True class SimplePlugin(object): def __init__(self, event, monitor, context): self.event = event def __call__(self): invoked[1] = True application.install_plugin(simple_plugin) self.assertEqual(1, len(application.plugins)) self.assertEqual(simple_plugin, application.plugins[0]) application.install_plugin(SimplePlugin) self.assertEqual(2, len(application.plugins)) self.assertEqual(SimplePlugin, application.plugins[1]) self.assert_(not invoked[0]) self.assert_(not invoked[1]) # passing dummy objects application.invoke_plugins(object(), object()) self.assert_(invoked[0]) self.assert_(invoked[1])
def make_application(options, filepath): # options handling if options.verbosity > 0: LOGGER.setLevel(logging.INFO) if options.verbosity > 1: LOGGER.setLevel(logging.DEBUG) # So many projects contain its modules and packages at # the top level directory, modipyd inserts current directory # in ``sys.path`` module search path variable for convenience. sys.path.insert(0, os.getcwd()) # Create Application instance, Install plugins application = Application(filepath) for plugin in options.plugins: application.install_plugin(plugin) # Predefine variables variables = {} for var in options.defines: i = var.find('=') if i == -1: variables[var] = '' else: variables[var[:i]] = var[i+1:] if variables: import pprint application.update_variables(variables) LOGGER.info( "Predefined variables: %s" % pprint.pformat(variables)) # Load configuration (startup) file for rcfile in find_startup_files(os.environ, options.rcfile): LOGGER.info("Loading startup file from %s" % rcfile) execfile(rcfile, globals(), {'application': application}) return application
def test_plugin_context(self): application = Application() application.update_variables(dict(var1=123, var2='HELLO')) invoked_context = {} def context_plugin(event, monitor, context): invoked_context.update(context) application.install_plugin(context_plugin) self.assertEqual(0, len(invoked_context)) # passing dummy objects application.invoke_plugins(object(), object()) self.assertEqual(2, len(invoked_context)) self.assertEqual(123, invoked_context['var1']) self.assertEqual('HELLO', invoked_context['var2'])