jeudi 16 avril 2020

Go Coverage over multiple package and Gitlab Coverage Badge

I'm trying to display an accurate coverage badge for my gitlab project.

Thing is I have several packages, in gitlab-ci.yml, I run

go test $(go list ./... | grep -v /vendor/) -v -coverprofile .testCoverage.txt

and my output is something like that:

$ go test -coverprofile=coverage.txt -covermode=atomic ./...
 ok     gitlab.com/[MASKED]/pam 10.333s coverage: 17.2% of statements
 ok     gitlab.com/[MASKED]/pam/acquisition 0.004s  coverage: 57.7% of statements
 ok     gitlab.com/[MASKED]/pam/acquisition/api 0.005s  coverage: 72.1% of statements
 ok     gitlab.com/[MASKED]/pam/acquisition/ftp 24.936s coverage: 73.1% of statements
 ok     gitlab.com/[MASKED]/pam/repartition 0.004s  coverage: 90.1% of statements

And my Test coverage parsing regex in Gitlab is:

^coverage:\s(\d+(?:\.\d+)?%)

If I check the .testCoverage, I get a lot of lines like that:

 gitlab.com/[MASKED]/pam/repartition/repartition.go:54.33,56.5 1 1

So, it gives me a result of 90.1% when it is only the coverage of the last package.

How should I do it ?

Aucun commentaire:

Enregistrer un commentaire