def generate_coverage_report(coverage_xml, compare_branch, html_report=None, css_file=None, ignore_staged=False, ignore_unstaged=False, exclude=None, src_roots=None): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter( compare_branch, git_diff=GitDiffTool(), ignore_staged=ignore_staged, ignore_unstaged=ignore_unstaged, exclude=exclude) xml_roots = [cElementTree.parse(xml_root) for xml_root in coverage_xml] coverage = XmlCoverageReporter(xml_roots, src_roots) # Build a report generator if html_report is not None: css_url = css_file if css_url is not None: css_url = os.path.relpath(css_file, os.path.dirname(html_report)) reporter = HtmlReportGenerator(coverage, diff, css_url=css_url) with open(html_report, "wb") as output_file: reporter.generate_report(output_file) if css_file is not None: with open(css_file, "wb") as output_file: reporter.generate_css(output_file) reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout if six.PY2 else sys.stdout.buffer # Generate the report reporter.generate_report(output_file) return reporter.total_percent_covered()
def generate_coverage_report(coverage_xml, compare_branch, html_report=None, ignore_unstaged=False): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter(compare_branch, git_diff=GitDiffTool(), ignore_unstaged=ignore_unstaged) xml_roots = [cElementTree.parse(xml_root) for xml_root in coverage_xml] coverage = XmlCoverageReporter(xml_roots) # Build a report generator if html_report is not None: reporter = HtmlReportGenerator(coverage, diff) with open(html_report, "wb") as output_file: reporter.generate_report(output_file) reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout if six.PY2 else sys.stdout.buffer # Generate the report reporter.generate_report(output_file) return reporter.total_percent_covered()
def generate_coverage_report( coverage_xml, compare_branch, html_report=None, css_file=None, json_report=None, markdown_report=None, ignore_staged=False, ignore_unstaged=False, exclude=None, src_roots=None, diff_range_notation=None, ignore_whitespace=False, quiet=False, show_uncovered=False, ): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter( compare_branch, git_diff=GitDiffTool(diff_range_notation, ignore_whitespace), ignore_staged=ignore_staged, ignore_unstaged=ignore_unstaged, exclude=exclude, ) xml_roots = [etree.parse(xml_root) for xml_root in coverage_xml] coverage = XmlCoverageReporter(xml_roots, src_roots) # Build a report generator if html_report is not None: css_url = css_file if css_url is not None: css_url = os.path.relpath(css_file, os.path.dirname(html_report)) reporter = HtmlReportGenerator(coverage, diff, css_url=css_url) with open(html_report, "wb") as output_file: reporter.generate_report(output_file) if css_file is not None: with open(css_file, "wb") as output_file: reporter.generate_css(output_file) elif json_report is not None: reporter = JsonReportGenerator(coverage, diff) with open(json_report, "wb") as output_file: reporter.generate_report(output_file) elif markdown_report is not None: reporter = MarkdownReportGenerator(coverage, diff) with open(markdown_report, "wb") as output_file: reporter.generate_report(output_file) # Generate the report for stdout reporter = StringReportGenerator(coverage, diff, show_uncovered) output_file = io.BytesIO() if quiet else sys.stdout.buffer # Generate the report reporter.generate_report(output_file) return reporter.total_percent_covered()
def generate_coverage_report(coverage_xml, compare_branch, html_report=None, css_file=None, custom_reports=None, ignore_staged=False, ignore_unstaged=False, exclude=None): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter(compare_branch, git_diff=GitDiffTool(), ignore_staged=ignore_staged, ignore_unstaged=ignore_unstaged, exclude=exclude) xml_roots = [cElementTree.parse(xml_root) for xml_root in coverage_xml] clover_xml_roots = [ clover_xml for clover_xml in xml_roots if clover_xml.findall('.[@clover]') ] cobertura_xml_roots = [ cobertura_xml for cobertura_xml in xml_roots if cobertura_xml.findall('.[@line-rate]') ] if clover_xml_roots and cobertura_xml_roots: raise TypeError("Can't handle mixed coverage reports") elif clover_xml_roots: coverage = CloverXmlCoverageReporter(clover_xml_roots) elif cobertura_xml_roots: coverage = XmlCoverageReporter(cobertura_xml_roots) if html_report is not None: generate_report(HtmlReportGenerator, coverage, diff, html_report, css_file) for custom_report in custom_reports: generate_custom_report(coverage, diff, custom_report) reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout if six.PY2 else sys.stdout.buffer # Generate the report reporter.generate_report(output_file) return reporter.total_percent_covered()
def generate_coverage_report(coverage_xml, html_report=None): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter(git_diff=GitDiffTool()) xml_roots = [etree.parse(xml_root) for xml_root in coverage_xml] coverage = XmlCoverageReporter(xml_roots) # Build a report generator if html_report is not None: reporter = HtmlReportGenerator(coverage, diff) output_file = open(html_report, "w") else: reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout # Generate the report reporter.generate_report(output_file)
def generate_coverage_report(coverage_xml, compare_branch, html_report=None): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ diff = GitDiffReporter(compare_branch, git_diff=GitDiffTool()) xml_roots = [etree.parse(xml_root) for xml_root in coverage_xml] git_path = GitPathTool(os.getcwd()) coverage = XmlCoverageReporter(xml_roots, git_path) # Build a report generator if html_report is not None: reporter = HtmlReportGenerator(coverage, diff) with open(html_report, "wb") as output_file: reporter.generate_report(output_file) reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout # Generate the report reporter.generate_report(output_file)
def generate_coverage_report(coverage_xml, compare_branch, html_report=None, css_file=None, json_report=None, ignore_staged=False, ignore_unstaged=False, exclude=None, src_roots=None, diff_range_notation=None, target_dir=None, diff_json=None): """ Generate the diff coverage report, using kwargs from `parse_args()`. """ if target_dir: class FileDiffReporter(GitDiffReporter): def __init__(self, *args, **kwargs): self.target_dir = kwargs.pop("td") super(FileDiffReporter, self).__init__(*args, **kwargs) def _git_diff(self): def compare(left, right): d = difile.Difile() result = d.compare_dir(left, right) diff_result = dict() for each_file in result: if not each_file: continue key = each_file[0].file_path.as_posix() if key.startswith(str(self.target_dir)): key = key.replace(str(self.target_dir) + "/", "") if key not in diff_result: diff_result[key] = [] for each_line in each_file: diff_result[key].append(each_line.line_no) return diff_result return compare(src_roots[0], self.target_dir) diff = FileDiffReporter( compare_branch, git_diff=GitDiffTool(diff_range_notation), ignore_staged=ignore_staged, ignore_unstaged=ignore_unstaged, exclude=exclude, td=target_dir) else: diff = GitDiffReporter( compare_branch, git_diff=GitDiffTool(diff_range_notation), ignore_staged=ignore_staged, ignore_unstaged=ignore_unstaged, exclude=exclude) xml_roots = [etree.parse(xml_root) for xml_root in coverage_xml] coverage = XmlCoverageReporter(xml_roots, src_roots) if diff_json: diff_dict = diff._git_diff() with open(diff_json, "w") as f: json.dump(diff_dict, f) # Build a report generator if html_report is not None: css_url = css_file if css_url is not None: css_url = os.path.relpath(css_file, os.path.dirname(html_report)) reporter = HtmlReportGenerator(coverage, diff, css_url=css_url) with open(html_report, "wb") as output_file: reporter.generate_report(output_file) if css_file is not None: with open(css_file, "wb") as output_file: reporter.generate_css(output_file) elif json_report is not None: reporter = JsonReportGenerator(coverage, diff) with open(json_report, "wb") as output_file: reporter.generate_report(output_file) reporter = StringReportGenerator(coverage, diff) output_file = sys.stdout if six.PY2 else sys.stdout.buffer # Generate the report reporter.generate_report(output_file) return reporter.total_percent_covered()