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  }