Example #1
0
 def test_noHandlers(self):
     positiveDecision = extensionPoints.AccumulatingDecider(
         defaultDecision=True).decide(a='a value')
     self.assertEqual(positiveDecision, True)
     negativeDecision = extensionPoints.AccumulatingDecider(
         defaultDecision=False).decide(a='a value')
     self.assertEqual(negativeDecision, False)
Example #2
0
    def test_allHandlersCalledLastDecisionNonDefault(self):
        """Ensure that all handlers are called when all but last one returns the default decision.
		"""
        value = 0

        def h1():
            nonlocal value
            value += 3
            return False

        def h2():
            nonlocal value
            value += 11
            return False

        def h3():
            nonlocal value
            value += 22
            return True

        decider = extensionPoints.AccumulatingDecider(defaultDecision=False)
        decider.register(h1)
        decider.register(h2)
        decider.register(h3)
        decision = decider.decide()
        self.assertEqual(value, 36)
        self.assertEqual(decision, True)
Example #3
0
    def test_oneHandlerTrue(self):
        def handler():
            return True

        decider = extensionPoints.AccumulatingDecider(defaultDecision=False)
        decider.register(handler)
        decision = decider.decide()
        self.assertEqual(decision, True)
Example #4
0
    def test_handlerAcceptsKwargs(self):
        """ Test that a handler that accepts **kwargs receives all arguments
		"""
        calledKwargs = {}

        def handler(**kwargs):
            calledKwargs.update(kwargs)

        deciderDefaultDecisionTrue = extensionPoints.AccumulatingDecider(
            defaultDecision=True)
        deciderDefaultDecisionTrue.register(handler)
        deciderDefaultDecisionTrue.decide(a=1)
        self.assertEqual(calledKwargs, {"a": 1})
        calledKwargs.clear()
        deciderDefaultDecisionFalse = extensionPoints.AccumulatingDecider(
            defaultDecision=False)
        deciderDefaultDecisionFalse.register(handler)
        deciderDefaultDecisionFalse.decide(a=1)
        self.assertEqual(calledKwargs, {"a": 1})
Example #5
0
    def test_handlerParamsWithDefault(self):
        """ Test that a handler that accepts params with a default receives arguments
		"""
        calledKwargs = {}

        def handler(a=0):
            calledKwargs["a"] = a

        deciderDefaultDecisionFalse = extensionPoints.AccumulatingDecider(
            defaultDecision=False)
        deciderDefaultDecisionFalse.register(handler)
        deciderDefaultDecisionFalse.decide(a=1)
        self.assertEqual(calledKwargs, {"a": 1})

        calledKwargs.clear()
        deciderDefaultDecisionTrue = extensionPoints.AccumulatingDecider(
            defaultDecision=True)
        deciderDefaultDecisionTrue.register(handler)
        deciderDefaultDecisionTrue.decide(a=1)
        self.assertEqual(calledKwargs, {"a": 1})
Example #6
0
    def test_twoHandlersDefaultNonDefault(self):
        def handler1():
            return True

        def handler2():
            return False

        decider = extensionPoints.AccumulatingDecider(defaultDecision=True)
        decider.register(handler1)
        decider.register(handler2)
        decision = decider.decide()
        self.assertEqual(decision, False)
Example #7
0
    def test_instanceMethodHandler(self):
        """ Test that a instance method function is called as expected
		"""
        calledKwargs = {}

        class handlerClass():
            def handlerMethod(self, **kwargs):
                calledKwargs.update(kwargs)

        h = handlerClass()
        deciderDefaultDecisionTrue = extensionPoints.AccumulatingDecider(
            defaultDecision=True)
        deciderDefaultDecisionTrue.register(h.handlerMethod)
        deciderDefaultDecisionTrue.decide(a='a value', b='b value')
        self.assertEqual(calledKwargs, {'a': 'a value', 'b': 'b value'})
        calledKwargs.clear()
        deciderDefaultDecisionFalse = extensionPoints.AccumulatingDecider(
            defaultDecision=False)
        deciderDefaultDecisionFalse.register(h.handlerMethod)
        deciderDefaultDecisionFalse.decide(a='a value', b='b value')
        self.assertEqual(calledKwargs, {'a': 'a value', 'b': 'b value'})
Example #8
0
    def test_handlerException(self):
        """Test that a handler which raises an exception doesn't affect later handlers.
		"""
        def handler1():
            raise Exception("barf")

        def handler2():
            return False

        decider = extensionPoints.AccumulatingDecider(defaultDecision=True)
        decider.register(handler1)
        decider.register(handler2)
        decision = decider.decide()
        self.assertEqual(decision, False)
Example #9
0
MANIFEST_FILENAME = "manifest.ini"
stateFilename = "addonsState.pickle"
BUNDLE_EXTENSION = "nvda-addon"
BUNDLE_MIMETYPE = "application/x-nvda-addon"
NVDA_ADDON_PROG_ID = "NVDA.Addon.1"
ADDON_PENDINGINSTALL_SUFFIX = ".pendingInstall"
DELETEDIR_SUFFIX = ".delete"

# Add-ons that are blocked from running because they are incompatible
_blockedAddons = set()

# Allows add-ons to process additional command line arguments when NVDA starts.
# Each handler is called with one keyword argument `cliArgument`
# and should return `False` if it is not interested in it, `True` otherwise.
# For more details see appropriate section of the developer guide.
isCLIParamKnown = extensionPoints.AccumulatingDecider(defaultDecision=False)


class AddonsState(collections.UserDict):
    """Subclasses `collections.UserDict` to preserve backwards compatibility."""

    _DEFAULT_STATE_CONTENT = {
        "pendingRemovesSet": set(),
        "pendingInstallsSet": set(),
        "disabledAddons": set(),
        "pendingEnableSet": set(),
        "pendingDisableSet": set(),
    }

    @property
    def statePath(self) -> os.PathLike: