Exemple #1
0
def test_all_pytests_cov_html(cov_html):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    args_mock = patch("tools.testing.all_pytests.PytestChecker.args",
                      new_callable=PropertyMock)

    with args_mock as m_args:
        m_args.return_value.cov_html = cov_html
        assert checker.cov_html == cov_html
    assert "cov_html" not in checker.__dict__
Exemple #2
0
async def test_all_pytests_pytest_targets():
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    bazel_mock = patch("tools.testing.all_pytests.PytestChecker.bazel",
                       new_callable=PropertyMock)

    with bazel_mock as m_bazel:
        m_bazel.return_value.query = AsyncMock(return_value=[
            "foo", ":pytest_foo", ":notpytest_foo", ":not_foo", "bar",
            "//asdf:pytest_barbaz"
        ])
        assert (await checker.pytest_targets == set(
            [":pytest_foo", "//asdf:pytest_barbaz"]))
    assert (list(m_bazel.return_value.query.call_args) == [('tools/...', ),
                                                           {}])
Exemple #3
0
def test_all_pytests_cov_enabled(cov_collect, cov_html):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    args_mock = patch("tools.testing.all_pytests.PytestChecker.args",
                      new_callable=PropertyMock)

    with args_mock as m_args:
        m_args.return_value.cov_collect = cov_collect
        m_args.return_value.cov_html = cov_html
        result = checker.cov_enabled

    if cov_collect or cov_html:
        assert result is True
    else:
        assert result is False
    assert "cov_enabled" not in checker.__dict__
Exemple #4
0
def test_all_pytests_pytest_bazel_args(patches, cov_enabled):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches(
        ("PytestChecker.cov_path", dict(new_callable=PropertyMock)),
        ("PytestChecker.cov_enabled", dict(new_callable=PropertyMock)),
        prefix="tools.testing.all_pytests")

    with patched as (m_path, m_enabled):
        m_enabled.return_value = cov_enabled
        result = checker.pytest_bazel_args

    if cov_enabled:
        assert result == ['--cov-collect', m_path.return_value]
    else:
        assert result == []
    assert "pytest_bazel_args" not in checker.__dict__
Exemple #5
0
def test_all_pytests_cov_path(patches, cov_path):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches("os.path.abspath",
                      ("PytestChecker.args", dict(new_callable=PropertyMock)),
                      prefix="tools.testing.all_pytests")

    with patched as (m_abspath, m_args):
        m_args.return_value.cov_collect = cov_path
        result = checker.cov_path

    if cov_path:
        assert result == cov_path
        assert not m_abspath.called
    else:
        assert result == m_abspath.return_value
        assert (list(m_abspath.call_args) == [('.coverage-envoy', ), {}])
    assert "cov_path" not in checker.__dict__
Exemple #6
0
async def test_all_pytests_on_checks_begin(patches, exists, cov_path):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches(
        "os.path.exists",
        "os.unlink",
        ("PytestChecker.cov_path", dict(new_callable=PropertyMock)),
        prefix="tools.testing.all_pytests")

    with patched as (m_exists, m_unlink, m_cov_path):
        m_cov_path.return_value = cov_path
        m_exists.return_value = exists
        assert not await checker.on_checks_begin()

    if cov_path and exists:
        assert (list(m_unlink.call_args) == [('SOMEPATH', ), {}])
    else:
        assert not m_unlink.called
Exemple #7
0
async def test_all_pytests_check_pytests(patches):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches(
        "PytestChecker.error",
        "PytestChecker.succeed",
        ("PytestChecker.pytest_targets", dict(new_callable=PropertyMock)),
        ("PytestChecker.bazel", dict(new_callable=PropertyMock)),
        prefix="tools.testing.all_pytests")

    check_runs = dict(check1=True,
                      check2=True,
                      check3=False,
                      check4=False,
                      check5=True,
                      check6=False,
                      check7=True)

    async def _run_bazel(target):
        if not check_runs[target]:
            raise BazelRunError()

    with patched as (m_error, m_succeed, m_targets, m_bazel):
        m_targets.side_effect = AsyncMock(return_value=check_runs.keys())
        m_bazel.return_value.run.side_effect = AsyncMock(
            side_effect=_run_bazel)
        assert not await checker.check_pytests()

    assert (list(list(c)
                 for c in m_bazel.return_value.run.call_args_list) == [[
                     ('check1', ), {}
                 ], [('check2', ), {}], [('check3', ), {}], [
                     ('check4', ), {}
                 ], [('check5', ), {}], [('check6', ), {}], [('check7', ),
                                                             {}]])
    assert (list(list(c) for c in m_error.call_args_list) == [[
        ('pytests', ['check3 failed']), {}
    ], [('pytests', ['check4 failed']),
        {}], [('pytests', ['check6 failed']), {}]])
    assert (list(list(c) for c in m_succeed.call_args_list) == [[
        ('pytests', ['check1']), {}
    ], [('pytests', ['check2']), {}], [('pytests', ['check5']),
                                       {}], [('pytests', ['check7']), {}]])
Exemple #8
0
def test_all_pytests_add_arguments(patches):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches("checker.Checker.add_arguments",
                      prefix="tools.testing.all_pytests")
    parser = MagicMock()

    with patched as (m_super, ):
        checker.add_arguments(parser)

    assert (list(m_super.call_args) == [(parser, ), {}])
    assert (list(list(c) for c in parser.add_argument.call_args_list) == [
        [('--cov-collect', ), {
            'default': None,
            'help': 'Specify a path to collect coverage with'
        }],
        [('--cov-html', ), {
            'default': None,
            'help': 'Specify a path to collect html coverage with'
        }]
    ])
Exemple #9
0
def test_all_pytests_add_arguments():
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    parser = MagicMock()
    super_mock = patch(
        "tools.testing.all_pytests.checker.BazelChecker.add_arguments")

    with super_mock as m_super:
        checker.add_arguments(parser)

    assert (list(m_super.call_args) == [(parser, ), {}])
    assert (list(list(c) for c in parser.add_argument.call_args_list) == [
        [('--cov-collect', ), {
            'default': None,
            'help': 'Specify a path to collect coverage with'
        }],
        [('--cov-html', ), {
            'default': None,
            'help': 'Specify a path to collect html coverage with'
        }]
    ])
Exemple #10
0
def test_all_pytests_on_checks_complete(patches, cov_html):
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    patched = patches(
        ("PytestChecker.bazel", dict(new_callable=PropertyMock)),
        "checker.Checker.on_checks_complete",
        ("PytestChecker.cov_path", dict(new_callable=PropertyMock)),
        ("PytestChecker.cov_html", dict(new_callable=PropertyMock)),
        prefix="tools.testing.all_pytests")

    with patched as (m_bazel, m_complete, m_cov_path, m_cov_html):
        m_cov_html.return_value = cov_html
        assert checker.on_checks_complete() == m_complete.return_value
        assert (list(m_complete.call_args) == [(), {}])

    if cov_html:
        assert (list(m_bazel.return_value.run.call_args) == [
            ('//tools/testing:python_coverage', m_cov_path.return_value,
             cov_html), {}
        ])
    else:
        assert not m_bazel.return_value.called
Exemple #11
0
def test_all_pytests_constructor():
    checker = all_pytests.PytestChecker("path1", "path2", "path3")
    assert checker.checks == ("pytests", )