File diff f508df06c162 → 0a34ed6798bb
tests/test_cliutil.py
Show inline comments
 
"""Test CLI utilities"""
 
# Copyright © 2020  Brett Smith
 
# Copyright © 2020, 2021  Brett Smith
 
# License: AGPLv3-or-later WITH Beancount-Plugin-Additional-Permission-1.0
 
#
 
# Full copyright and licensing details can be found at toplevel file
...
 
@@ -23,7 +23,7 @@ from pathlib import Path
 

	
 
from . import testutil
 

	
 
from conservancy_beancount import cliutil
 
from conservancy_beancount import cliutil, errors
 

	
 
FILE_NAMES = ['-foobar', '-foo.bin']
 
STREAM_PATHS = [None, Path('-')]
...
 
@@ -163,6 +163,25 @@ def test_excepthook_oserror(errnum, caplog):
 
        assert log.levelname == 'CRITICAL'
 
        assert log.message == f"I/O error: {error.filename}: {error.strerror}"
 

	
 
@pytest.mark.parametrize('errcls', [
 
    errors.RewriteRuleActionError,
 
    errors.RewriteRuleConditionError,
 
    errors.RewriteRuleLoadError,
 
    errors.RewriteRuleValidationError,
 
])
 
def test_excepthook_rewrite_rule_error(errcls, caplog):
 
    name = errcls.__name__
 
    error = errcls("bad rewrite rule", f"{name}.yml", 170, [name])
 
    with pytest.raises(SystemExit) as exc_check:
 
        cliutil.ExceptHook()(type(error), error, None)
 
    assert exc_check.value.args[0] == cliutil.ExitCode.RewriteRulesError
 
    assert caplog.records
 
    for log in caplog.records:
 
        assert log.levelname == 'CRITICAL'
 
        lines = log.message.splitlines()
 
        assert lines[0].startswith(f"{name}: bad rewrite rule in {name}.yml rule #170")
 
        assert re.match(rf' source:\W+{name}\b', lines[-1])
 

	
 
@pytest.mark.parametrize('exc_type', [
 
    AttributeError,
 
    RuntimeError,