Я пытаюсь отобразить точный значок покрытия для моего проекта 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%
, когда это только покрытие последнего пакета.
Как я должен это делать ?
Согласно этому ответу,
Мне просто нужна была другая команда:
Это даст вам результат:
В gitlab вы можете изменить регулярное выражение:
By
Теперь, если у вас есть макеты, покрытие будет включать их, поэтому вы должны удалить их, выполнив следующие действия: ответ:
Конечно, все ваши макеты должны быть в файлах с суффиксом:
_mocks.go
И это должно работать.
Надеюсь, это поможет другим!