Пример #1
0
    def setup(self):
        """Called to have the addin register it's hook callbacks.

        This is also the place for related setup jobs like setting up
        custom models.

        If an addin does not subclass ``addins.base``, it must provide
        this method itself.
        """

        # register new hook that the addin wants to define
        if hasattr(self, 'get_hooks'):
            new_hooks = self.get_hooks()
            if hooks:
                for name in new_hooks:
                    hooks.register(name)

        # auto-register all hook callbacks ('on_*'-pattern)
        for name in dir(self):
            if name.startswith('on_'):
                attr = getattr(self, name)
                if isinstance(attr, types.MethodType):
                    try:
                        hooks.add_callback(name[3:], attr)
                    except KeyError, e:
                        raise RuntimeError(('%s: failed to initialize '
                            'because %s method does not refer to a valid '
                            'hook (%s).') % (self.__class__, name, e))
Пример #2
0
def test_exists():
    """Test the exists() function.
    """
    hooks.reset()
    assert hooks.exists("alien_invasion") == True
    assert hooks.exists("worldpeace") == False
    hooks.register("worldpeace")
    assert hooks.exists("worldpeace") == True
    hooks.reset()
    assert hooks.exists("worldpeace") == False
Пример #3
0
def test_reset():
    # reset() was already used throughout previous tests,
    # but for good measure, do it specifically.

    # callback is no longer registered after a reset
    hooks.add_callback("alien_invasion", lambda: 42)
    hooks.reset()
    assert hooks.trigger("alien_invasion") == None

    # custom hook is gone after a reset
    hooks.register("i_love_you")
    hooks.reset()
    assert_raises(Exception, hooks.add_callback, "i_love_you", lambda: None)
Пример #4
0
def test_custom():
    """Test custom, non-default hooks.
    """

    # this fails, hook doesn't yet exist
    assert_raises(Exception, hooks.add_callback, "i_love_you", lambda: None)
    assert_raises(Exception, hooks.trigger, "i_love_you")

    # after we register the hook, it works
    hooks.register("i_love_you")
    hooks.add_callback("i_love_you", lambda: None)
    hooks.trigger("i_love_you")

    # registering the same hook multiple times is a no-op
    hooks.register("i_love_you")
    hooks.register("i_love_you")