def test_checker_error(log, log_type, errors, newerrors): checker = Checker("path1", "path2", "path3") log_mock = patch("tools.base.checker.Checker.log", new_callable=PropertyMock) checker.errors = errors.copy() result = 1 if newerrors else 0 with log_mock as m_log: if log_type: assert checker.error("mycheck", newerrors, log, log_type=log_type) == result else: assert checker.error("mycheck", newerrors, log) == result if not newerrors: assert not m_log.called assert "mycheck" not in checker.errors return assert checker.errors["mycheck"] == errors.get("mycheck", []) + newerrors for k, v in errors.items(): if k != "mycheck": assert checker.errors[k] == v if log: assert (list( list(c) for c in getattr(m_log.return_value, log_type or "error").call_args_list) == [[ (f'[mycheck] err{i}', ), {} ] for i in range(1, 4)]) else: assert not getattr(m_log.return_value, log_type or "error").called
def test_checker_on_check_run(patches, errors, warnings, exiting): checker = Checker("path1", "path2", "path3") patched = patches( ("Checker.exiting", dict(new_callable=PropertyMock)), ("Checker.log", dict(new_callable=PropertyMock)), prefix="tools.base.checker") check = "CHECK1" checker.errors = errors checker.warnings = warnings checker._active_check = check with patched as (m_exit, m_log): m_exit.return_value = exiting assert not checker.on_check_run(check) assert checker.active_check is None if exiting: assert not m_log.called return if check in errors: assert ( list(m_log.return_value.error.call_args) == [('[CHECK1] Check failed',), {}]) assert not m_log.return_value.warning.called assert not m_log.return_value.success.called return if check in warnings: assert ( list(m_log.return_value.warning.call_args) == [('[CHECK1] Check has warnings',), {}]) assert not m_log.return_value.error.called assert not m_log.return_value.info.called return assert ( list(m_log.return_value.success.call_args) == [(f'[{check}] Check completed successfully',), {}]) assert not m_log.return_value.warning.called assert not m_log.return_value.error.called
def test_checker_error(patches, log, errors): checker = Checker("path1", "path2", "path3") log_mock = patch("tools.base.checker.Checker.log", new_callable=PropertyMock) checker.errors = errors.copy() with log_mock as m_log: assert checker.error("mycheck", ["err1", "err2", "err3"], log) == 1 assert checker.errors["mycheck"] == errors.get( "mycheck", []) + ["err1", "err2", "err3"] for k, v in errors.items(): if k != "mycheck": assert checker.errors[k] == v if log: assert (list(m_log.return_value.error.call_args) == [ ('err1\nerr2\nerr3', ), {} ]) else: assert not m_log.return_value.error.called
def test_checker_failed(): checker = Checker("path1", "path2", "path3") checker.errors = dict(foo=["err"] * 3, bar=["err"] * 5, baz=["err"] * 7) assert checker.failed == {'foo': 3, 'bar': 5, 'baz': 7} assert "failed" not in checker.__dict__
def test_checker_error_count(): checker = Checker("path1", "path2", "path3") checker.errors = dict(foo=["err"] * 3, bar=["err"] * 5, baz=["err"] * 7) assert checker.error_count == 15 assert "error_count" not in checker.__dict__
def test_checker_exiting(errors): checker = Checker("path1", "path2", "path3") checker.errors = errors assert checker.exiting == bool("exiting" in errors) assert "exiting" not in checker.__dict__