Exemplo n.º 1
0
def test_diff__has_all_changes_covered__some_changed_code_is_still_uncovered():
    from pycobertura.cobertura import Cobertura, CoberturaDiff

    cobertura1 = Cobertura('tests/dummy.zeroexit1/coverage.xml')
    cobertura2 = Cobertura('tests/dummy.zeroexit2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)
    assert differ.has_all_changes_covered() is False
Exemplo n.º 2
0
def test_diff__has_not_better_coverage():
    from pycobertura.cobertura import Cobertura, CoberturaDiff

    cobertura1 = Cobertura('tests/dummy.zeroexit2/coverage.xml')
    cobertura2 = Cobertura('tests/dummy.zeroexit1/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)
    assert differ.has_better_coverage() is False
Exemplo n.º 3
0
def test_diff_class_source():
    from pycobertura.cobertura import CoberturaDiff
    from pycobertura.cobertura import Line

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_sources = {
        'dummy/__init__': [],
        'dummy/dummy': [
            Line(1, u'def foo():\n', None, None),
            Line(2, u'    pass\n', None, None),
            Line(3, u'\n', None, None),
            Line(4, u'def bar():\n', None, None),
            Line(5, u"    a = 'a'\n", True, 'cov-up'),
            Line(6, u"    d = 'd'\n", True, 'line-edit')
        ],
        'dummy/dummy2': [
            Line(1, u'def baz():\n', None, None),
            Line(2, u"    c = 'c'\n", True, 'line-edit'),
            Line(3, u'\n', None, 'line-edit'),
            Line(4, u'def bat():\n', True, 'line-edit'),
            Line(5, u'    pass\n', False, 'cov-down')
        ],
        'dummy/dummy3': [
            Line(1, u'def foobar():\n', False, 'line-edit'),
            Line(2, u'    pass  # This is a very long comment that was purposefully written so we could test how HTML rendering looks like when the boundaries of the page are reached. And here is a non-ascii char: \u015e\n', False, 'line-edit')
        ],
    }

    for class_name in cobertura2.classes():
        assert differ.class_source(class_name) == \
            expected_sources[class_name]
def test_diff_class_source():
    from pycobertura.cobertura import CoberturaDiff
    from pycobertura.cobertura import Line

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_sources = {
        'dummy/__init__.py': [],
        'dummy/dummy.py': [
            Line(1, u'def foo():\n', None, None),
            Line(2, u'    pass\n', None, None),
            Line(3, u'\n', None, None),
            Line(4, u'def bar():\n', None, None),
            Line(5, u"    a = 'a'\n", True, 'cov-up'),
            Line(6, u"    d = 'd'\n", True, 'line-edit')
        ],
        'dummy/dummy2.py': [
            Line(1, u'def baz():\n', None, None),
            Line(2, u"    c = 'c'\n", True, 'line-edit'),
            Line(3, u'\n', None, 'line-edit'),
            Line(4, u'def bat():\n', True, 'line-edit'),
            Line(5, u'    pass\n', False, 'cov-down')
        ],
        'dummy/dummy3.py': [
            Line(1, u'def foobar():\n', False, 'line-edit'),
            Line(2, u'    pass  # This is a very long comment that was purposefully written so we could test how HTML rendering looks like when the boundaries of the page are reached. And here is a non-ascii char: \u015e\n', False, 'line-edit')
        ],
    }

    for filename in cobertura2.files():
        assert differ.file_source(filename) == \
               expected_sources[filename]
Exemplo n.º 5
0
def test_diff__has_not_better_coverage():
    from pycobertura.cobertura import Cobertura, CoberturaDiff

    cobertura1 = Cobertura('tests/dummy.zeroexit2/coverage.xml')
    cobertura2 = Cobertura('tests/dummy.zeroexit1/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)
    assert differ.has_better_coverage() is False
Exemplo n.º 6
0
def test_diff__has_all_changes_covered__some_changed_code_is_still_uncovered():
    from pycobertura.cobertura import Cobertura, CoberturaDiff

    cobertura1 = Cobertura('tests/dummy.zeroexit1/coverage.xml')
    cobertura2 = Cobertura('tests/dummy.zeroexit2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)
    assert differ.has_all_changes_covered() is False
Exemplo n.º 7
0
def test_diff_line_rate():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    assert differ.diff_line_rate() == 0.31059999999999993
Exemplo n.º 8
0
def test_diff_total_hits():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    assert differ.diff_total_hits() == 3
Exemplo n.º 9
0
def test_diff_line_rate():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    assert differ.diff_line_rate() == 0.15000000000000002
Exemplo n.º 10
0
def test_diff_total_misses():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    assert differ.diff_total_misses() == 1
Exemplo n.º 11
0
def test_diff_same_report_different_source_dirs():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.uncovered.addcode/coverage.xml',
                                source='tests/dummy.uncovered/dummy/')
    cobertura2 = make_cobertura('tests/dummy.uncovered.addcode/coverage.xml',
                                source='tests/dummy.uncovered.addcode/dummy/')
    differ = CoberturaDiff(cobertura1, cobertura2)

    assert differ.diff_missed_lines('dummy.py') == [(2, False), (3, True)]
Exemplo n.º 12
0
def test_diff_total_hits_by_class_file():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_total_hits = {
        'dummy/__init__.py': 0,
        'dummy/dummy.py': 2,
        'dummy/dummy2.py': 1,
        'dummy/dummy3.py': 0,
    }

    for filename in cobertura2.files():
        assert differ.diff_total_hits(filename) == \
            expected_total_hits[filename]
Exemplo n.º 13
0
def test_diff_total_hits_by_class():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_total_hits = {
        'dummy/__init__': 0,
        'dummy/dummy': 2,
        'dummy/dummy2': 1,
        'dummy/dummy3': 0,
    }

    for class_name in cobertura2.classes():
        assert differ.diff_total_hits(class_name) == \
            expected_total_hits[class_name]
Exemplo n.º 14
0
def test_diff_line_rate_by_class():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_sources = {
        'dummy/__init__': 0,
        'dummy/dummy': 0.4,
        'dummy/dummy2': -0.25,
        'dummy/dummy3': 0.0,
    }

    for class_name in cobertura2.classes():
        assert differ.diff_line_rate(class_name) == \
            expected_sources[class_name]
Exemplo n.º 15
0
def test_diff_line_rate_by_class_file():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_sources = {
        'dummy/__init__.py': 0,
        'dummy/dummy.py': 0.4,
        'dummy/dummy2.py': -0.25,
        'dummy/dummy3.py': 0.0,
    }

    for filename in cobertura2.files():
        assert differ.diff_line_rate(filename) == \
            expected_sources[filename]
Exemplo n.º 16
0
def test_diff_total_misses_by_class_file():
    from pycobertura.cobertura import CoberturaDiff

    cobertura1 = make_cobertura('tests/dummy.source1/coverage.xml')
    cobertura2 = make_cobertura('tests/dummy.source2/coverage.xml')
    differ = CoberturaDiff(cobertura1, cobertura2)

    expected_sources = {
        'dummy/__init__.py': 0,
        'dummy/dummy.py': -2,
        'dummy/dummy2.py': 1,
        'dummy/dummy3.py': 2,
    }

    for filename in cobertura2.files():
        assert differ.diff_total_misses(filename) == \
            expected_sources[filename]
Exemplo n.º 17
0
class DeltaReporter(object):
    def __init__(self, cobertura1, cobertura2, show_source=True):
        self.differ = CoberturaDiff(cobertura1, cobertura2)
        self.show_source = show_source

    def get_file_row(self, filename):
        row_values = [
            filename,
            self.differ.diff_total_statements(filename),
            self.differ.diff_total_misses(filename),
            self.differ.diff_line_rate(filename),
        ]

        if self.show_source is True:
            missed_lines = self.differ.diff_missed_lines(filename)
            row_values.append(missed_lines)
            row = file_row_missed(*row_values)
        else:
            row = file_row(*row_values)

        return row

    def get_footer_row(self):
        footer_values = [
            'TOTAL',
            self.differ.diff_total_statements(),
            self.differ.diff_total_misses(),
            self.differ.diff_line_rate(),
        ]

        if self.show_source:
            footer_values.append([])  # dummy missed lines
            footer = file_row_missed(*footer_values)
        else:
            footer = file_row(*footer_values)

        return footer

    def get_report_lines(self):
        lines = []

        for filename in self.differ.files():
            file_row = self.get_file_row(filename)
            if any(file_row[1:]):  # don't report unchanged class files
                lines.append(file_row)

        footer = self.get_footer_row()
        lines.append(footer)

        return lines
Exemplo n.º 18
0
 def __init__(self, cobertura1, cobertura2, show_source=True):
     self.differ = CoberturaDiff(cobertura1, cobertura2)
     self.show_source = show_source