github.com/anchore/syft@v1.38.2/.github/scripts/coverage.py (about)

     1  #!/usr/bin/env python3
     2  import subprocess
     3  import sys
     4  import shlex
     5  
     6  
     7  class bcolors:
     8      HEADER = '\033[95m'
     9      OKBLUE = '\033[94m'
    10      OKCYAN = '\033[96m'
    11      OKGREEN = '\033[92m'
    12      WARNING = '\033[93m'
    13      FAIL = '\033[91m'
    14      ENDC = '\033[0m'
    15      BOLD = '\033[1m'
    16      UNDERLINE = '\033[4m'
    17  
    18  
    19  if len(sys.argv) < 3:
    20      print("Usage: coverage.py [threshold] [go-coverage-report]")
    21      sys.exit(1)
    22  
    23  
    24  threshold = float(sys.argv[1])
    25  report = sys.argv[2]
    26  
    27  
    28  args = shlex.split(f"go tool cover -func {report}")
    29  p = subprocess.run(args, capture_output=True, text=True)
    30  
    31  percent_coverage = float(p.stdout.splitlines()[-1].split()[-1].replace("%", ""))
    32  print(f"{bcolors.BOLD}Coverage: {percent_coverage}%{bcolors.ENDC}")
    33  
    34  if percent_coverage < threshold:
    35      print(f"{bcolors.BOLD}{bcolors.FAIL}Coverage below threshold of {threshold}%{bcolors.ENDC}")
    36      sys.exit(1)