Skip to content

Commit 649a4ba

Browse files
authored
Update Code Coverage Calculations (#266)
Update code coverage calculations to have the ability to reorganize the report by INF using `stuart_parse` and `stuart_report.` Code Coverage is now disabled by default and must be enabled with `calculate_code_coverage: true` in MuDevOpsWrapper.yml
1 parent eb94dce commit 649a4ba

3 files changed

Lines changed: 62 additions & 13 deletions

File tree

.sync/azure_pipelines/MuDevOpsWrapper.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ parameters:
4242
displayName: Perform Stuart PR Evaluation
4343
type: boolean
4444
default: true
45+
- name: calculate_code_coverage
46+
displayName: Calculate Code Coverage From Unit Tests
47+
default: false
4548
- name: container_build
4649
displayName: Flag for whether this repo should do stuart_setup
4750
type: boolean
@@ -89,6 +92,7 @@ jobs:
8992
do_ci_build: ${{ parameters.do_ci_build }}
9093
do_ci_setup: ${{ parameters.do_ci_setup }}
9194
do_pr_eval: ${{ parameters.do_pr_eval }}
95+
calculate_code_coverage: ${{ parameters.calculate_code_coverage }}
9296
do_non_ci_setup: ${{ parameters.do_non_ci_setup }}
9397
do_non_ci_build: ${{ parameters.do_non_ci_build }}
9498
build_matrix: ${{ parameters.build_matrix }}

Jobs/PrGate.yml

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ parameters:
3535
displayName: Perform Stuart PR Evaluation
3636
type: boolean
3737
default: true
38+
- name: calculate_code_coverage
39+
displayName: Calculate Code Coverage
40+
type: boolean
41+
default: false
3842
- name: extra_post_build_steps
3943
displayName: Extra Post-Build Steps
4044
type: stepList
@@ -164,19 +168,27 @@ jobs:
164168
self_host_agent: true
165169
${{ else }}:
166170
self_host_agent: false
167-
extra_build_args: CODE_COVERAGE=TRUE
171+
${{ if eq(parameters.calculate_code_coverage, true) }}:
172+
extra_build_args: CODE_COVERAGE=TRUE
173+
${{ else }}:
174+
extra_build_args: ''
168175

169-
- job: PublishCoverage
170-
dependsOn:
171-
- ${{ each item in parameters.build_matrix }}:
172-
- Build_${{ item.Key }}
173-
condition: and(not(Canceled()), not(Failed()))
176+
- ${{ if eq(parameters.calculate_code_coverage, true) }}:
177+
- job: PublishCoverage
178+
dependsOn:
179+
- ${{ each item in parameters.build_matrix }}:
180+
- Build_${{ item.Key }}
181+
condition: and(not(Canceled()), not(Failed()))
174182

175-
workspace:
176-
clean: all
183+
workspace:
184+
clean: all
177185

178-
pool:
179-
vmImage: 'windows-latest'
186+
pool:
187+
vmImage: 'windows-latest'
180188

181-
steps:
182-
- template: ../Steps/PublishCodeCoverage.yml
189+
steps:
190+
- template: ../Steps/PublishCodeCoverage.yml
191+
parameters:
192+
reorganize_by_inf: true
193+
extra_parse_args: -t NOOPT TOOL_CHAIN_TAG=$(tool_chain_tag)
194+
build_file: ${{ parameters.build_file }}

Steps/PublishCodeCoverage.yml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,33 @@ parameters:
1010
displayName: Perform self checkout step
1111
type: boolean
1212
default: true
13+
- name: setup_python
14+
displayName: Setup Python
15+
type: boolean
16+
default: true
17+
- name: reorganize_by_inf
18+
displayName: Reorganize cobertura report by INF # Requires stuart_report & stuart_parse
19+
type: boolean
20+
default: false
21+
- name: extra_parse_args
22+
displayName: Extra arguments for stuart_parse
23+
type: string
24+
default: ''
25+
- name: build_file
26+
displayName: Stuart Build File
27+
type: string
28+
default: ".pytool/CISettings.py"
1329

1430
steps:
1531
- ${{ if eq(parameters.checkout_self, true) }}:
1632
- checkout: self
1733
clean: true
1834
fetchDepth: 1
1935

36+
- ${{ if eq(parameters.setup_python, true ) }}:
37+
- template: SetupPythonPreReqs.yml
38+
parameters:
39+
install_python: true
2040
#
2141
# Download the build
2242
#
@@ -34,13 +54,26 @@ steps:
3454
displayName: Check For Coverage Files
3555

3656
- task: CmdLine@2
37-
displayName: Create Coverage Report
57+
displayName: Merge Coverage Reports
3858
inputs:
3959
script: |
4060
dotnet tool install -g dotnet-reportgenerator-globaltool
4161
reportgenerator -reports:$(Build.ArtifactStagingDirectory)/coverage/**/*coverage.xml -targetdir:$(Build.ArtifactStagingDirectory)/Coverage -reporttypes:Cobertura
4262
condition: gt(variables.coverage_file_count, 0)
4363

64+
- ${{ if eq(parameters.reorganize_by_inf, true) }}:
65+
- task: CmdLine@2
66+
displayName: Parse Workspace
67+
inputs:
68+
script: stuart_parse -c ${{ parameters.build_file }} ${{ parameters.extra_parse_args }}
69+
condition: gt(variables.coverage_file_count, 0)
70+
71+
- task: CmdLine@2
72+
displayName: Organize report by INF
73+
inputs:
74+
script: stuart_report coverage $(Build.ArtifactStagingDirectory)/Coverage/Cobertura.xml --by-package -o $(Build.ArtifactStagingDirectory)/Coverage/Cobertura.xml
75+
condition: gt(variables.coverage_file_count, 0)
76+
4477
- task: PublishCodeCoverageResults@1
4578
displayName: Publish Code Coverage
4679
inputs:

0 commit comments

Comments
 (0)