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