Skip to content

Commit bf994e0

Browse files
committed
Skipping code coverage merge if no files were found.
1 parent 546a0eb commit bf994e0

2 files changed

Lines changed: 43 additions & 34 deletions

File tree

eng/pipelines/common/templates/jobs/ci-code-coverage-job.yml

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# pipeline, and uploads them to CodeCov.
1010

1111
parameters:
12-
12+
1313
# True to include debug steps.
1414
- name: debug
1515
type: boolean
@@ -69,7 +69,7 @@ jobs:
6969
dotnet tool install --global dotnet-coverage
7070
dotnet tool install --global dotnet-reportgenerator-globaltool
7171
displayName: Install dotnet tools
72-
72+
7373
- pwsh: |
7474
Write-Host "Removing leftover coverage files from previous runs..."
7575
Remove-Item $(netFxDir) -Recurse -Force -ErrorAction SilentlyContinue
@@ -83,6 +83,7 @@ jobs:
8383
Remove-Item coveragereportNetFx -Recurse -Force -ErrorAction SilentlyContinue
8484
Remove-Item coveragereportNetCore -Recurse -Force -ErrorAction SilentlyContinue
8585
Remove-Item coveragereportAddOns -Recurse -Force -ErrorAction SilentlyContinue
86+
displayName: Clean up from previous runs
8687
8788
- ${{ each targetFramework in parameters.targetFrameworks }}:
8889
- task: DownloadPipelineArtifact@2
@@ -113,14 +114,20 @@ jobs:
113114
114115
$files = Get-ChildItem $InputDirectoryPath -Recurse -File -Filter *.coverage
115116
116-
# echo $files
117+
if ($files.Count -eq 0) {
118+
Write-Host "No coverage files found in $InputDirectoryPath"
119+
return
120+
}
121+
122+
Write-Host "Merging $($files.Count) coverage files from $InputDirectoryPath..."
123+
117124
mkdir $OutputDirectoryName
118125
$counter=0
119126
120127
$toProcess = @()
121128
122129
foreach ($file in $files) {
123-
$toProcess += @{
130+
$toProcess += @{
124131
File = $file.FullName
125132
OutputFile = "$OutputDirectoryName\$counter.coveragexml"
126133
}
@@ -130,13 +137,13 @@ jobs:
130137
131138
$jobs = @()
132139
foreach ($file in $toProcess){
133-
$jobs += Start-ThreadJob -ScriptBlock {
140+
$jobs += Start-ThreadJob -ScriptBlock {
134141
$params = $using:file
135-
& dotnet-coverage merge $($params.File) --output $($params.OutputFile) --output-format xml
136-
}
142+
& dotnet-coverage merge $($params.File) --output $($params.OutputFile) --output-format xml
143+
}
137144
}
138145
139-
Write-Host "Merging started..."
146+
Write-Host "Merging started with $($jobs.Count) parallel jobs..."
140147
Wait-Job -Job $jobs
141148
142149
foreach ($job in $jobs) {
@@ -146,7 +153,7 @@ jobs:
146153
147154
MergeFiles -InputDirectoryPath "$(netFxDir)" -OutputDirectoryName "coverageNetFxXml"
148155
MergeFiles -InputDirectoryPath "$(netCoreDir)" -OutputDirectoryName "coverageNetCoreXml"
149-
156+
150157
Write-Host "Removing original coverage files..."
151158
Remove-Item $(netFxDir) -Recurse -Force -ErrorAction SilentlyContinue
152159
Remove-Item $(netCoreDir) -Recurse -Force -ErrorAction SilentlyContinue
@@ -163,15 +170,15 @@ jobs:
163170
164171
- pwsh: |
165172
$jobs = @()
166-
$jobs += Start-ThreadJob -ScriptBlock {
173+
$jobs += Start-ThreadJob -ScriptBlock {
167174
& reportgenerator "-reports:coverageNetFxXml\*.coveragexml" "-targetdir:coveragereportNetFx" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netfx\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
168175
}
169176
170-
$jobs += Start-ThreadJob -ScriptBlock {
177+
$jobs += Start-ThreadJob -ScriptBlock {
171178
& reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportNetCore" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\netcore\src;$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\src" "-classfilters:+Microsoft.Data.*"
172179
}
173180
174-
$jobs += Start-ThreadJob -ScriptBlock {
181+
$jobs += Start-ThreadJob -ScriptBlock {
175182
& reportgenerator "-reports:coverageNetCoreXml\*.coveragexml" "-targetdir:coveragereportAddOns" "-reporttypes:Cobertura;" "-assemblyfilters:+microsoft.data.sqlclient.alwaysencrypted.azurekeyvaultprovider.dll" "-sourcedirs:$(Build.SourcesDirectory)\src\Microsoft.Data.SqlClient\add-ons\AzureKeyVaultProvider" "-classfilters:+Microsoft.Data.*"
176183
}
177184
@@ -199,16 +206,17 @@ jobs:
199206
- ${{if eq(parameters.upload, true)}}:
200207
- pwsh: |
201208
#download Codecov CLI
202-
$ProgressPreference = 'SilentlyContinue'
209+
$ProgressPreference = 'SilentlyContinue'
203210
Invoke-WebRequest -Uri https://cli.codecov.io/latest/windows/codecov.exe -Outfile codecov.exe
204-
211+
205212
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetFx\Cobertura.xml" -F netfx
206213
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportNetCore\Cobertura.xml" -F netcore
207214
./codecov --verbose upload-process --fail-on-error -t $(CODECOV_TOKEN) -f "coveragereportAddOns\Cobertura.xml" -F addons
208215
displayName: Upload to CodeCov
209-
216+
210217
- pwsh: |
211218
Write-Host "Removing reports..."
212219
Remove-Item coveragereportNetFx -Recurse -Force -ErrorAction SilentlyContinue
213220
Remove-Item coveragereportNetCore -Recurse -Force -ErrorAction SilentlyContinue
214221
Remove-Item coveragereportAddOns -Recurse -Force -ErrorAction SilentlyContinue
222+
displayName: Clean up reports

eng/pipelines/dotnet-sqlclient-ci-core.yml

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ parameters:
116116

117117
variables:
118118
- template: libraries/ci-build-variables.yml@self
119-
119+
120120
- name: artifactName
121121
value: Artifacts
122122

@@ -144,7 +144,7 @@ stages:
144144
mdsPackageVersion: $(NugetPackageVersion)
145145
${{ if eq(parameters.debug, 'true') }}:
146146
verbosity: 'detailed'
147-
147+
148148
- template: common/templates/stages/ci-run-tests-stage.yml@self
149149
parameters:
150150
debug: ${{ parameters.debug }}
@@ -175,7 +175,7 @@ stages:
175175
artifactName: $(artifactName)
176176
buildType: ${{ parameters.buildType }}
177177
buildConfiguration: ${{ parameters.buildConfiguration }}
178-
178+
179179
# Include the code coverage job under certain circumstances:
180180
#
181181
# - testType is not All:
@@ -207,15 +207,16 @@ stages:
207207
#
208208
# We're choosing to upload from these pipelines only:
209209
#
210-
# - PR-SqlClient-Project
211-
# - CI-SqlClient
210+
# - PR-SqlClient-Project (Unit and Functional tests)
211+
# - PR-SqlClient-Package (Manual tests)
212+
# - CI-SqlClient (All tests)
212213
#
213-
# Other pipelines that share this template and use a Project
214-
# buildType don't add much, if any, value to the coverage reports.
215-
# They have not been configured with suitable CodeCov credentials to
216-
# perform the upload.
214+
# Other pipelines that share this template buildType don't add much,
215+
# if any, value to the coverage reports. They have not been
216+
# configured with suitable CodeCov credentials to perform the
217+
# upload.
217218
#
218-
upload: ${{ or(eq(variables['Build.DefinitionName'], 'PR-SqlClient-Project'), eq(variables['Build.DefinitionName'], 'CI-SqlClient')) }}
219+
upload: ${{ or(eq(variables['Build.DefinitionName'], 'PR-SqlClient-Project'), eq(variables['Build.DefinitionName'], 'PR-SqlClient-Package'), eq(variables['Build.DefinitionName'], 'CI-SqlClient')) }}
219220

220221
# test stages configurations
221222
# self hosted SQL Server on Windows
@@ -303,10 +304,10 @@ stages:
303304
# skipSqlConfiguration: # skips the SQL configuration step
304305

305306

306-
windows_sql_22_x64:
307+
windows_sql_22_x64:
307308
pool: ${{parameters.defaultPoolName }}
308309
images:
309-
Win22_Sql22: ADO-MMS22-SQL22
310+
Win22_Sql22: ADO-MMS22-SQL22
310311
TargetFrameworks: ${{parameters.targetFrameworks }}
311312
netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
312313
buildPlatforms: ${{parameters.buildPlatforms }}
@@ -332,10 +333,10 @@ stages:
332333
enableLocalDB: true
333334

334335

335-
windows_sql_22_x86:
336+
windows_sql_22_x86:
336337
pool: ${{parameters.defaultPoolName }}
337338
images:
338-
Win22_Sql22_x86: ADO-MMS22-SQL22
339+
Win22_Sql22_x86: ADO-MMS22-SQL22
339340
TargetFrameworks: [net462, net8.0, net9.0]
340341
netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
341342
buildPlatforms: ${{parameters.buildPlatforms }}
@@ -386,8 +387,8 @@ stages:
386387

387388
# Azure SQL Server - Windows
388389
windows_azure_sql:
389-
pool: ${{parameters.defaultPoolName }}
390-
images:
390+
pool: ${{parameters.defaultPoolName }}
391+
images:
391392
Win22_Azure_Sql: ADO-MMS22-SQL19
392393
Win11_Azure_Sql: ADO-CI-Win11
393394
TargetFrameworks: ${{parameters.targetFrameworks }}
@@ -420,7 +421,7 @@ stages:
420421

421422
windows_azure_arm64_sql:
422423
pool: ADO-CI-PUBLIC-ARM64-1ES-EUS-POOL
423-
images:
424+
images:
424425
Win11_ARM64_Azure_Sql: ADO-WIN11-ARM64
425426
isArm64: true
426427
TargetFrameworks: ${{parameters.targetFrameworks }}
@@ -453,7 +454,7 @@ stages:
453454
${{ if and(eq(parameters.runAlwaysEncryptedTests, true), eq(variables['system.pullRequest.isFork'], 'False')) }}:
454455
windows_enclave_sql:
455456
pool: ADO-CI-AE-1ES-Pool
456-
images:
457+
images:
457458
Win22_Enclave_Sql19: ADO-MMS22-SQL19
458459
TargetFrameworks: ${{parameters.targetFrameworks }}
459460
netcoreVersionTestUtils: ${{parameters.netcoreVersionTestUtils }}
@@ -477,7 +478,7 @@ stages:
477478
AzureKeyVaultTenantId: $(AzureKeyVaultTenantId)
478479
SupportsIntegratedSecurity: $(SupportsIntegratedSecurity)
479480
UserManagedIdentityClientId: $(UserManagedIdentityClientId)
480-
AliasName: $(SQLAliasName)
481+
AliasName: $(SQLAliasName)
481482
LocalDbAppName: $(LocalDbAppName)
482483
LocalDbSharedInstanceName: $(LocalDbSharedInstanceName)
483484

0 commit comments

Comments
 (0)