Skip to content

Commit c62fe09

Browse files
authored
use TargetFrameworks net6.0;net7.0 for tests (#1544)
* update dependencies (System.Text.Json) * use <TargetFrameworks>net6.0;net7.0</TargetFrameworks> for tests * do not use deprecated versions * update net SDK versions * remove unnecessary assert * execute coverlet.core tests only for net6.0 * add CheckNugetStatus.yml and fix findings * fix variable name * update and consolidate versions * upload *.diag.log files
1 parent 91acb45 commit c62fe09

File tree

17 files changed

+180
-74
lines changed

17 files changed

+180
-74
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,3 +307,5 @@ test/coverlet.integration.determisticbuild/runsettings
307307

308308
coverage.cobertura.xml
309309
coverage.opencover.xml
310+
coverage.*.cobertura.xml
311+
coverage.*.opencover.xml

Directory.Build.props

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@
4545
<SystemReflectionMetadataVersion>1.6.0</SystemReflectionMetadataVersion>
4646
<SystemCollectionsImmutableVersion>1.5.0</SystemCollectionsImmutableVersion>
4747
<MicrosoftBuildUtilitiesCorePackageVersion>15.9.20</MicrosoftBuildUtilitiesCorePackageVersion>
48-
<MicrosoftExtensionsDependencyModelPackageVersion>3.0.0</MicrosoftExtensionsDependencyModelPackageVersion>
49-
<MicrosoftExtensionsFileSystemGlobbingVersion>2.0.0</MicrosoftExtensionsFileSystemGlobbingVersion>
5048
</PropertyGroup>
5149

5250
</Project>

Directory.Packages.props

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
44
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
55
</PropertyGroup>
6-
76
<ItemGroup>
87
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" />
98
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" />
109
</ItemGroup>
11-
1210
<ItemGroup>
1311
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="7.0.0" />
14-
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.5.0"/>
15-
<PackageVersion Include="Microsoft.Build.Framework" Version="17.5.0"/>
12+
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.5.0" />
13+
<PackageVersion Include="Microsoft.Build.Framework" Version="17.5.0" />
1614
<PackageVersion Include="Microsoft.Build.Locator" Version="1.5.5" />
1715
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="2.10.0" />
1816
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="7.0.0" />
@@ -31,12 +29,12 @@
3129
vstest 17.8 version
3230
NuGetFrameworksVersion is defined here https://github.com/microsoft/vstest/blob/9a0c41811637edf4afe0e265e08fdd1cb18109ed/eng/Versions.props#L94C1-L94C1
3331
-->
34-
<PackageVersion Include="NuGet.Frameworks" Version="6.5.0" />
32+
<PackageVersion Include="NuGet.Frameworks" Version="6.6.1" />
3533
<PackageVersion Include="NuGet.Packaging" Version="6.5.0" />
3634
<PackageVersion Include="Mono.Cecil" Version="0.11.5" />
37-
<PackageVersion Include="Moq" Version="4.18.4" />
35+
<PackageVersion Include="Moq" Version="4.20.69" />
3836
<PackageVersion Include="Newtonsoft.Json" Version="13.0.1" />
39-
<PackageVersion Include="ReportGenerator.Core" Version="5.1.23" />
37+
<PackageVersion Include="ReportGenerator.Core" Version="5.1.26" />
4038
<!--For test issue 809 https://github.com/coverlet-coverage/coverlet/issues/809-->
4139
<PackageVersion Include="LinqKit.Microsoft.EntityFrameworkCore" Version="7.1.4" />
4240
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
@@ -58,7 +56,13 @@
5856
<PackageVersion Include="xunit" Version="2.5.3" />
5957
<PackageVersion Include="xunit.assemblyfixture" Version="2.2.0" />
6058
<PackageVersion Include="xunit.assert" Version="2.5.3" />
61-
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3"/>
59+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3" />
6260
<PackageVersion Include="envdte" Version="17.7.37355" />
61+
<PackageVersion Include="System.Buffers" Version="4.5.1" />
62+
<PackageVersion Include="System.Memory" Version="4.5.5" />
63+
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
64+
<PackageVersion Include="System.Security.Cryptography.Pkcs" Version="6.0.4" />
65+
<PackageVersion Include="System.Text.Encoding.CodePages" Version="6.0.0" />
66+
<PackageVersion Include="System.Text.RegularExpressions" Version="4.3.1" />
6367
</ItemGroup>
64-
</Project>
68+
</Project>

eng/CheckNugetStatus.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# File: CheckNugetStatus.yml
2+
# the template will write lists of outdated, deprecated or vulnerable nuget packages to build log for every C# project. If a deprecated or vulnerable package is detected, an error will be written to the build log.
3+
# Precondition: restore and build was executed before this template is used
4+
# Limitation: dotnet SDK does not provide .NET framework MSBuild targets like "Microsoft.WebApplication.targets". This c# projects will be ignored and "An error occurred for <file name of C# project>" message is added in build log.
5+
6+
parameters:
7+
condition: 'succeeded()'
8+
enableQualitySteps: true
9+
sourcePath: ''
10+
nugetConfig: ''
11+
breakBuild: false
12+
13+
steps:
14+
- task: NuGetAuthenticate@0
15+
condition: ${{parameters.condition}}
16+
enabled: ${{parameters.enableQualitySteps}}
17+
18+
- task: PowerShell@2
19+
displayName: 'Check nuget package status'
20+
inputs:
21+
targetType: 'inline'
22+
pwsh: true
23+
script: |
24+
Write-Information -MessageData "sourcePath='${{parameters.sourcePath}}'" -InformationAction Continue
25+
Write-Information -MessageData "nugetConfig='${{parameters.nugetConfig}}'" -InformationAction Continue
26+
Write-Information -MessageData "#########################################" -InformationAction Continue
27+
if (!(Test-Path "${{parameters.sourcePath}}" -PathType Container)) {
28+
Write-Host "##vso[task.LogIssue type=error;]sourcePath does not exist."
29+
}
30+
$existsDeprecatedPackage = $false
31+
$existsVulnerablePackage = $false
32+
33+
$projectFiles = Get-ChildItem -Path ${{parameters.sourcePath}} -Filter *.csproj -Recurse
34+
foreach ($project in $projectFiles) {
35+
try {
36+
$outdatedList = dotnet list $project package --outdated --include-transitive --source https://api.nuget.org/v3/index.json
37+
if ($LASTEXITCODE -gt 0) {
38+
Throw "The command exited with error code: $lastexitcode"
39+
}
40+
$outdatedList
41+
$deprecatedList = dotnet list $project package --deprecated --include-transitive --source https://api.nuget.org/v3/index.json
42+
if ($deprecatedList.Length -gt 5) {
43+
$deprecatedList
44+
$existsDeprecatedPackage = $true
45+
} else {
46+
$deprecatedList[4]
47+
}
48+
$vulnerableList = dotnet list $project package --vulnerable --source https://api.nuget.org/v3/index.json
49+
if ($vulnerableList.Length -gt 5) {
50+
$vulnerableList
51+
$existsVulnerablePackage = $true
52+
} else {
53+
$vulnerableList[4]
54+
}
55+
} catch { "An error occurred for $($project.PSChildName)" }
56+
}
57+
if ( $existsDeprecatedPackage -or $existsVulnerablePackage) {
58+
Write-Host "##vso[task.LogIssue type=error;]Detected nuget package: Deprecated = $existsDeprecatedPackage, Vulnerable = $existsVulnerablePackage"
59+
if ("${{parameters.breakBuild}}" -eq "true") {
60+
exit 42
61+
}
62+
} else {
63+
Write-Information -MessageData "Did not detected deprecated or vulnerable nuget package." -InformationAction Continue
64+
}
65+
exit 0
66+
env:
67+
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
68+
condition: ${{parameters.condition}}
69+
enabled: ${{parameters.enableQualitySteps}}

eng/azure-pipelines-nightly.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ pool:
44
steps:
55
- task: UseDotNet@2
66
inputs:
7-
version: 6.0.415
8-
displayName: Install .NET Core SDK 6.0.415
7+
version: 6.0.416
8+
displayName: Install .NET Core SDK 6.0.416
99

1010
- task: UseDotNet@2
1111
inputs:
12-
version: 7.0.402
13-
displayName: Install .NET Core SDK 7.0.402
12+
version: 7.0.403
13+
displayName: Install .NET Core SDK 7.0.403
1414

1515
- task: NuGetAuthenticate@0
1616
displayName: Authenticate with NuGet feeds

eng/azure-pipelines.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ jobs:
3737
ArtifactName: Packages
3838
publishLocation: Container
3939
condition: eq(variables['BuildConfiguration'], 'Release')
40+
- template: CheckNugetStatus.yml
41+
parameters:
42+
sourcePath: '$(Build.SourcesDirectory)/src'
43+
breakBuild: false
44+
# nugetConfig: '$(Build.SourcesDirectory)/nuget.config'
4045

4146
- job: macOS
4247
displayName: macOS

eng/build.yml

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
steps:
22
- task: UseDotNet@2
33
inputs:
4-
version: 6.0.415
5-
displayName: Install .NET Core SDK 6.0.415
4+
version: 6.0.416
5+
displayName: Install .NET Core SDK 6.0.416
66

77
- task: UseDotNet@2
88
inputs:
9-
version: 7.0.402
10-
displayName: Install .NET Core SDK 7.0.402
9+
version: 7.0.403
10+
displayName: Install .NET Core SDK 7.0.403
1111

1212
- script: dotnet restore
1313
displayName: Restore packages
@@ -18,23 +18,26 @@ steps:
1818
- script: dotnet pack -c $(BuildConfiguration) --no-restore
1919
displayName: Pack
2020

21-
- task: DotNetCoreCLI@2
21+
- script: |
22+
dotnet test test/coverlet.collector.tests/coverlet.collector.tests.csproj -c $(BuildConfiguration) --no-build -bl:test.collector.binlog --results-directory:"$(Build.SourcesDirectory)\artifacts\Reports" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*" --diag:"$(Build.SourcesDirectory)\artifacts\log\$(buildConfiguration)\coverlet.collector.test.diag.log;tracelevel=verbose"
23+
dotnet test test/coverlet.core.tests/coverlet.core.tests.csproj -c $(BuildConfiguration) --no-build -bl:test.core.binlog --results-directory:"$(Build.SourcesDirectory)\artifacts\Reports" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*" --diag:"$(Build.SourcesDirectory)\artifacts\log\$(buildConfiguration)\coverlet.core.test.diag.log;tracelevel=verbose"
24+
dotnet test test/coverlet.integration.tests/coverlet.integration.tests.csproj -c $(BuildConfiguration) --no-build -bl:test.integration.binlog --results-directory:"$(Build.SourcesDirectory)\artifacts\Reports" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*" --diag:"$(Build.SourcesDirectory)\artifacts\log\$(buildConfiguration)\coverlet.integration.test.diag.log;tracelevel=verbose"
25+
dotnet test test/coverlet.msbuild.tasks.tests/coverlet.msbuild.tasks.tests.csproj -c $(BuildConfiguration) --no-build -bl:test.msbuild.binlog --results-directory:"$(Build.SourcesDirectory)\artifacts\Reports" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*" --diag:"$(Build.SourcesDirectory)\artifacts\log\$(buildConfiguration)\coverlet.msbuild.test.diag.log;tracelevel=verbose"
2226
displayName: Run tests with coverage
27+
28+
- task: PublishTestResults@2
2329
inputs:
24-
command: test
25-
projects: |
26-
**/coverlet.collector.tests.csproj
27-
**/coverlet.core.tests.csproj
28-
**/coverlet.integration.tests.csproj
29-
**/coverlet.msbuild.tasks.tests.csproj
30-
arguments: -c $(BuildConfiguration) --no-build -bl:test.binlog /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[coverlet.core.tests.samples.netstandard]*%2c[coverlet.tests.xunit.extensions]*%2c[coverlet.tests.projectsample]*" --diag:"$(Build.SourcesDirectory)\artifacts\log\$(Configuration)\coverlet.test.diag.log;tracelevel=verbose"
31-
testRunTitle: $(Agent.JobName)
30+
testResultsFormat: 'VSTest'
31+
testResultsFiles: '**/*.trx'
32+
mergeTestResults: false
33+
publishRunAttachments: true
34+
3235

3336
- template: publish-coverlet-result-files.yml
3437

3538
- template: publish-coverage-results.yml
3639
parameters:
37-
reports: $(Build.SourcesDirectory)/**/coverage.opencover.xml
40+
reports: $(Build.SourcesDirectory)/**/*.opencover.xml
3841
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Debug'))
3942
assemblyfilters: '-xunit;-coverlet.testsubject;-Coverlet.Tests.ProjectSample.*'
4043
classfilters: '-[coverlet.core.tests.samples.netstandard]*;-[coverlet.tests.xunit.extensions]*'

eng/publish-coverlet-result-files.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
steps:
22
- task: CopyFiles@2
3-
displayName: Copy tests results
3+
displayName: Copy test results
44
continueOnError: true
55
condition: always()
66
inputs:
77
SourceFolder: '$(Build.SourcesDirectory)'
88
Contents: |
99
**/*.trx
1010
**/*.html
11-
**/coverage.opencover.xml
12-
**/coverage.cobertura.xml
13-
**/coverage.json
11+
**/*.opencover.xml
12+
**/*.cobertura.xml
13+
**/*.coverage.json
1414
**/log.txt
1515
**/log.datacollector.*.txt
1616
**/log.host.*.txt
@@ -25,11 +25,13 @@ steps:
2525
TargetFolder: '$(Build.SourcesDirectory)/artifacts/TestLogs'
2626

2727
- task: CopyFiles@2
28-
displayName: Copy binlog files
28+
displayName: Copy log files
2929
condition: always()
3030
inputs:
3131
SourceFolder: '$(Build.SourcesDirectory)'
32-
Contents: '**/*.binlog'
32+
Contents: |
33+
**/*.diag.log
34+
**/*.binlog
3335
TargetFolder: '$(Build.SourcesDirectory)/artifacts/TestLogs/BuildLogs'
3436

3537
- task: PublishPipelineArtifact@1

src/coverlet.core/coverlet.core.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
</PropertyGroup>
88

99
<ItemGroup>
10-
<PackageReference Include="Microsoft.Extensions.DependencyModel" VersionOverride="$(MicrosoftExtensionsDependencyModelPackageVersion)"/>
11-
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" VersionOverride="$(MicrosoftExtensionsFileSystemGlobbingVersion)" />
10+
<PackageReference Include="Microsoft.Extensions.DependencyModel" VersionOverride="6.0.0"/>
11+
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" VersionOverride="6.0.0" />
1212
<PackageReference Include="Microsoft.Extensions.DependencyInjection" VersionOverride="6.0.1"/>
1313
<PackageReference Include="Mono.Cecil" />
1414
<PackageReference Include="System.Reflection.Metadata" VersionOverride="$(SystemReflectionMetadataVersion)" />

src/coverlet.msbuild.tasks/coverlet.msbuild.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</ItemGroup>
3636
</Target>
3737

38-
<Target Name="InstrumentModules">
38+
<Target Name="InstrumentModules" Condition="'$(TargetPath)' != ''">
3939
<Coverlet.MSbuild.Tasks.InstrumentationTask
4040
Path="$(TargetPath)"
4141
Include="$(Include)"
@@ -65,7 +65,7 @@
6565
DependsOnTargets="InstrumentModules"
6666
Condition="'$(VSTestNoBuild)' != 'true' and '$(CollectCoverage)' == 'true'" />
6767

68-
<Target Name="GenerateCoverageResult">
68+
<Target Name="GenerateCoverageResult" Condition="'$(InstrumenterState)' != ''">
6969
<PropertyGroup>
7070
<_coverletMultiTargetFrameworksCurrentTFM Condition="'$(TargetFrameworks)' != ''" >$(TargetFramework)</_coverletMultiTargetFrameworksCurrentTFM>
7171
</PropertyGroup>

0 commit comments

Comments
 (0)