@@ -26,7 +26,9 @@ stages:
2626 } | { read xs; exit $xs; }
2727 } 4>&1
2828
29- mv coverage-all.out linux-coverage.out
29+ # combine coverage from multiple modules
30+ (echo "mode: atomic"; tail -q -n +2 coverage-*.out) > coverage.cover
31+ mv coverage.cover linux-coverage.out
3032 retryCountOnTaskFailure: 3
3133 name: "Test"
3234 displayName: "Run Tests"
@@ -60,50 +62,57 @@ stages:
6062 targetPath : ' windows-coverage.out'
6163 artifactName : ' windows-coverage'
6264
63- - stage : code_coverage
64- displayName : Code Coverage Check
65- dependsOn :
66- - test
67- jobs :
68- - job : coverage
69- displayName : Check Coverage
70- pool :
71- name : " $(BUILD_POOL_NAME_DEFAULT)"
72- steps :
73- - task : DownloadPipelineArtifact@2
74- inputs :
75- artifact : ' linux-coverage'
76- path : ' ./'
77- - bash : |
78- make tools
79- sudo ln -s $(pwd)/build/tools/bin/gocov /usr/local/bin/gocov
80- sudo ln -s $(pwd)/build/tools/bin/gocov-xml /usr/local/bin/gocov-xml
65+ # Looking for PRs from merge queue
66+ # Expected output refs/heads/gh-readonly-queue/master/pr-3780-f0a96a1
67+ - ${{ if contains(variables['Build.SourceBranch'], 'master/pr') }} :
68+ - stage : code_coverage
69+ displayName : Code Coverage Check
70+ dependsOn :
71+ - test
72+ jobs :
73+ - job : coverage
74+ displayName : Check Coverage
75+ pool :
76+ name : " $(BUILD_POOL_NAME_DEFAULT)"
77+ steps :
78+ - task : DownloadPipelineArtifact@2
79+ inputs :
80+ artifact : ' linux-coverage'
81+ path : ' ./'
82+ - bash : |
83+ # use go work to include multiple modules or gocov will omit results from those modules
84+ make workspace
8185
82- GOOS=linux gocov convert linux-coverage.out > linux-coverage.json
83- GOOS=linux gocov-xml < linux-coverage.json > linux-coverage.xml
86+ make tools
87+ sudo ln -s $(pwd)/build/tools/bin/gocov /usr/local/bin/gocov
88+ sudo ln -s $(pwd)/build/tools/bin/gocov-xml /usr/local/bin/gocov-xml
8489
85- # TODO: Add windows coverage back in once PublishCodeCoverageResults v2 works with BuildQualityChecks
90+ GOOS=linux gocov convert linux-coverage.out > linux-coverage.json
91+ GOOS=linux gocov-xml < linux-coverage.json > linux-coverage.xml
8692
87- mkdir coverage
93+ # TODO: Add windows coverage back in once PublishCodeCoverageResults v2 works with BuildQualityChecks
8894
89- mv linux-coverage.xml coverage/
90- name: "Coverage"
91- displayName: "Generate Coverage Report"
92- condition: always()
93- - task : PublishCodeCoverageResults@1
94- displayName : " Publish Code Coverage Report"
95- condition : always()
96- inputs :
97- codeCoverageTool : ' Cobertura'
98- summaryFileLocation : coverage/linux-coverage.xml
99- - task : BuildQualityChecks@8
100- displayName : " Check Code Coverage Regression"
101- condition : always()
102- inputs :
103- checkCoverage : true
104- coverageFailOption : " build"
105- coverageType : " lines"
106- fallbackOnPRTargetBranch : false
107- baseBranchRef : " master"
108- allowCoverageVariance : true
109- coverageVariance : 0.25
95+ mkdir coverage
96+
97+ mv linux-coverage.xml coverage/
98+ name: "Coverage"
99+ displayName: "Generate Coverage Report"
100+ condition: always()
101+
102+ - task: PublishCodeCoverageResults@1
103+ displayName: "Publish Code Coverage Report"
104+ condition: always()
105+ inputs:
106+ codeCoverageTool: 'Cobertura'
107+ summaryFileLocation: coverage/linux-coverage.xml
108+ - task: BuildQualityChecks@8
109+ displayName: "Check Code Coverage Regression"
110+ condition: always()
111+ inputs:
112+ checkCoverage: true
113+ coverageFailOption: "build"
114+ coverageType: "lines"
115+ fallbackOnPRTargetBranch: false
116+ baseBranchRef: "master"
117+ allowCoverageVariance: true
118+ coverageVariance: 0.25
0 commit comments