From c2d103d6422562df04ba6e3415500d30d831471b Mon Sep 17 00:00:00 2001 From: Teake Nutma <t.a.nutma@rug.nl> Date: Wed, 8 Jun 2022 16:38:05 +0200 Subject: [PATCH] Add dockerfile for testbadge --- dockerfiles/testbadge/Dockerfile | 9 +++++++++ dockerfiles/testbadge/testbadge.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 dockerfiles/testbadge/Dockerfile create mode 100755 dockerfiles/testbadge/testbadge.py diff --git a/dockerfiles/testbadge/Dockerfile b/dockerfiles/testbadge/Dockerfile new file mode 100644 index 0000000..9c03df6 --- /dev/null +++ b/dockerfiles/testbadge/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3-slim + +# https://github.com/weiwei/junitparser/pull/89 is in junitparser 2.6.0. +# https://github.com/weiwei/junitparser/pull/90 is not yet merged :(. +RUN pip install anybadge "junitparser>=2.6" + +COPY testbadge.py /usr/local/bin/testbadge + +CMD ["/bin/bash"] diff --git a/dockerfiles/testbadge/testbadge.py b/dockerfiles/testbadge/testbadge.py new file mode 100755 index 0000000..993c4ff --- /dev/null +++ b/dockerfiles/testbadge/testbadge.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import argparse + +from anybadge import Badge +from junitparser import JUnitXml + + +def create_badge(report_path, badge_path): + report = JUnitXml.fromfile(report_path) + report.update_statistics() + total = report.tests - report.skipped + passed = total - report.errors - report.failures + percentage = 100 * passed / total + color = 'green' if passed == total else 'red' + badge = Badge(f'tests', f'{percentage:.1f}%', default_color=color) + badge.write_badge(badge_path) + + +def main(): + parser = argparse.ArgumentParser(description='Create a CI badge from a test report.') + parser.add_argument('report', metavar='XML', type=str, help='Path of input JUnit XML report file') + parser.add_argument('badge', metavar='SVG', type=str, help='Path of output SVG file') + args = parser.parse_args() + create_badge(args.report, args.badge) + + +if __name__ == '__main__': + main() -- GitLab