@@ -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'])
raise errormod.ConfigurationError("testing error")
class TransactionError(TransactionHook):
HOOK_GROUPS = frozenset(['configured'])
return ['txn:{}'.format(id(txn))]
return [NonError('txn:{}'.format(id(txn)), txn)]
@@ -43,7 +58,8 @@ class PostingError(TransactionHook):
HOOK_GROUPS = frozenset(['configured', 'posting'])
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