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)