Ejemplo n.º 1
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)]
Ejemplo n.º 2
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