github.com/kilianc/pretender@v1.7.0/tools/covercheck/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "regexp" 7 "strconv" 8 ) 9 10 func main() { 11 fmt.Fprintf(os.Stderr, "\n") 12 13 coverageSummary, err := os.ReadFile("cover.txt") 14 if err != nil { 15 fmt.Fprintf(os.Stderr, "\033[91m✘ error: reading cover.txt: %v\033[0m\n\n", err) 16 os.Exit(1) 17 } 18 19 regexp := regexp.MustCompile(`total:.+\t+(\d?\d?\d.\d)%`) 20 21 match := regexp.FindStringSubmatch(string(coverageSummary)) 22 23 if len(match) < 2 { 24 fmt.Fprintf(os.Stderr, "\033[91m✘ error: coverage not found in cover.txt\033[0m\n\n") 25 os.Exit(1) 26 } 27 28 coverage, err := strconv.ParseFloat(match[1], 64) 29 if err != nil { 30 fmt.Fprintf(os.Stderr, "\033[91m✘ error: failed to convert coverage to float: %v\033[0m\n\n", err) 31 os.Exit(1) 32 } 33 34 if coverage != 100.0 { 35 fmt.Fprintf(os.Stderr, "\033[91m✘ error: coverage is below 100%%: %.1f%%\033[0m\n\n", coverage) 36 os.Exit(1) 37 } 38 39 fmt.Fprintf(os.Stderr, "\033[92m✔ coverage is 100%%\033[0m\n") 40 }