It is not clear for me how code coverage works in Azure DevOps for my Golang project. My expertation is to see something like this:
Missing Code Coverage
I'm confused, because I see this hint "Setup code coverage":
But in the tab "Code Coverage" is a generated html report:
Warning in Task "Publish code coverage results"
I got this warning in the task "Publish code coverage results"
##[warning]Ignoring coverage report directory with Html content as we are auto-generating Html content
But when I disable the html generation with disable.coverage.autogenerate: 'false'
no report is display under the tab "Code Coverage", only the message "Code coverage report cannot be rendered as report HTML was not found. Please verify that "Report Directory" containing an HTML report was specified when publishing code coverage."
Azure Pipeline
This is my pipeline:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
variables:
GOBIN: '$(GOPATH)/bin'
GOPATH: '$(system.defaultWorkingDirectory)/gopath'
disable.coverage.autogenerate: 'false'
steps:
- script: |
echo '##vso[task.prependpath]$(GOBIN)'
echo '##vso[task.prependpath]$(GOROOT)/bin'
- task: GoTool@0
inputs:
version: '1.14.2'
- task: Go@0
inputs:
command: 'get'
arguments: '-d ./...'
workingDirectory: '$(System.DefaultWorkingDirectory)'
- script: |
go get github.com/jstemmer/go-junit-report
go get github.com/axw/gocov/gocov
go get github.com/AlekSi/gocov-xml
go test -v -coverprofile=coverage.txt -covermode count ./... 2>&1 | go-junit-report > report.xml
gocov convert coverage.txt > coverage.json
gocov-xml < coverage.json > coverage.xml
mkdir coverage
workingDirectory: '$(System.DefaultWorkingDirectory)'
displayName: 'Run unit test'
- task: PublishTestResults@2
inputs:
testRunner: JUnit
testResultsFiles: $(System.DefaultWorkingDirectory)/**/report.xml
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
pathToSources: '$(System.DefaultWorkingDirectory)'
summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml
reportDirectory: $(System.DefaultWorkingDirectory)/**/coverage
failIfCoverageEmpty: true
Setup code coverage
has not been updated. What you saw there was the old version of build summary page. Check out below answer. – Levi Lu-MSFT