Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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__
Пример #5
0
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__
Пример #6
0
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__