diff --git a/tests/test_plugin.py b/tests/test_plugin.py index c2aba1bff4b3c2b483debb34b131d7b5a599491a..f64d1b9b6ddd153ed940e9201f11ab9d4026ec87 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -18,24 +18,39 @@ import pytest from . import testutil -from conservancy_beancount import beancount_types, plugin +from conservancy_beancount import beancount_types, errors as errormod, plugin HOOK_REGISTRY = plugin.HookRegistry() +class NonError(errormod.Error): + pass + + class TransactionHook: DIRECTIVE = beancount_types.Transaction HOOK_GROUPS = frozenset() + def __init__(self, config): + self.config = config + def run(self, txn): assert False, "something called base class run method" +@HOOK_REGISTRY.add_hook +class ConfigurationError(TransactionHook): + HOOK_GROUPS = frozenset(['unconfigured']) + + def __init__(self, config): + raise errormod.ConfigurationError("testing error") + + @HOOK_REGISTRY.add_hook class TransactionError(TransactionHook): HOOK_GROUPS = frozenset(['configured']) def run(self, txn): - return ['txn:{}'.format(id(txn))] + return [NonError('txn:{}'.format(id(txn)), txn)] @HOOK_REGISTRY.add_hook @@ -43,7 +58,8 @@ class PostingError(TransactionHook): HOOK_GROUPS = frozenset(['configured', 'posting']) def run(self, txn): - return ['post:{}'.format(id(post)) for post in txn.postings] + return [NonError('post:{}'.format(id(post)), txn) + for post in txn.postings] @pytest.fixture @@ -65,8 +81,8 @@ def easy_entries(): def map_errors(errors): retval = {} - for errkey in errors: - key, _, errid = errkey.partition(':') + for error in errors: + key, _, errid = error.message.partition(':') retval.setdefault(key, set()).add(errid) return retval