11"""coverage-xml command"""
22
3+ from enum import Enum
4+
35import click
46from defusedxml .ElementTree import ParseError , parse
57
68from cimd .classes .context import ApplicationContext
79from cimd .classes .metadata import Item
810from cimd .classes .shields_link import ShieldsLink
911
10- BEST_THRESHOLD = 90
11- GOOD_THRESHOLD = 75
12- MEDIUM_THRESHOLD = 50
12+ COMMAND_AND_PREFIX = "coverage-xml"
13+
14+
15+ class Threshold (float , Enum ):
16+ """Color thresholds"""
17+
18+ MEDIUM = 50
19+ GOOD = 75
20+ BEST = 90
1321
1422
1523def image_for_line_rate_item (line_rate : float ) -> ShieldsLink :
@@ -18,18 +26,18 @@ def image_for_line_rate_item(line_rate: float) -> ShieldsLink:
1826 same colors as in genbadge project:
1927 https://github.com/smarie/python-genbadge/blob/main/genbadge/utils_coverage.py#L105C1-L119C17
2028 """
21- if line_rate < MEDIUM_THRESHOLD :
29+ if line_rate < Threshold . MEDIUM :
2230 color = "red"
23- elif line_rate < GOOD_THRESHOLD :
31+ elif line_rate < Threshold . GOOD :
2432 color = "orange"
25- elif line_rate < BEST_THRESHOLD :
33+ elif line_rate < Threshold . BEST :
2634 color = "green"
2735 else :
2836 color = "brightgreen"
2937 return ShieldsLink (label = "Coverage" , message = f"{ line_rate !s} %" , color = color )
3038
3139
32- @click .command (name = "coverage-xml" )
40+ @click .command (name = COMMAND_AND_PREFIX )
3341@click .argument (
3442 "XML_FILE" ,
3543 type = click .Path (exists = True , dir_okay = False , file_okay = True , readable = True , resolve_path = True ),
@@ -52,7 +60,7 @@ def coverage_xml_command(app: ApplicationContext, xml_file: str, replace: bool)
5260 raise click .UsageError (f"{ xml_file } - { error !s} " ) from error
5361 root = xml .getroot ()
5462 line_rate : float = round (float (root .attrib .get ("line-rate" )) * 100 , ndigits = 2 )
55- key = "coverage-py -line-rate"
63+ key = f" { COMMAND_AND_PREFIX } -line-rate"
5664 new_item = Item (
5765 value = str (line_rate ),
5866 label = "Coverage" ,
0 commit comments