我试图为我的gitlab项目显示准确的覆盖率徽章。
问题是我有多个软件包,在gitlab-ci.yml中,我运行
go test $(go list ./... | grep -v /vendor/) -v -coverprofile .testCoverage.txt
我的输出大概是这样的:
$ 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
而我的Gitlab测试覆盖率解析正则表达式是:
^coverage:\s(\d+(?:\.\d+)?%)
如果我检查 .testCoverage,会看到很多类似这样的行:
gitlab.com/[MASKED]/pam/repartition/repartition.go:54.33,56.5 1 1
因此,当它只是最后一个程序包的覆盖率时,它给我一个结果为90.1%
。
我该怎么做?