From 82f66da3b253832c2e1b6536686d05b1f2af6898 Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Wed, 5 Apr 2023 09:47:20 +0200 Subject: [PATCH] migration to .net 6.0 --- Directory.Build.targets | 6 +- Documentation/Changelog.md | 3 + eng/build.yml | 10 +++ global.json | 2 +- src/coverlet.console/coverlet.console.csproj | 4 +- .../Helpers/InstrumentationHelper.cs | 62 +++++++++---------- .../coverlet.collector.tests.csproj | 2 +- .../coverlet.core.performancetest.csproj | 3 +- .../Instrumentation/InstrumenterTests.cs | 6 +- .../coverlet.core.tests.csproj | 2 +- ...verlet.integration.determisticbuild.csproj | 2 +- .../coverlet.integration.template.csproj | 6 +- test/coverlet.integration.tests/BaseTest.cs | 16 ++--- .../DeterministicBuild.cs | 16 ++--- test/coverlet.integration.tests/Msbuild.cs | 12 ++-- .../coverlet.integration.tests.csproj | 4 +- ...s.projectsample.excludedbyattribute.csproj | 2 +- ...coverlet.tests.projectsample.fsharp.fsproj | 2 +- .../coverlet.testsubject.csproj | 2 +- 19 files changed, 88 insertions(+), 74 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 9438671ed..f923426f8 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -6,7 +6,7 @@ - + @@ -21,8 +21,8 @@ We can check minimum supported package version here https://github.com/Microsoft/vstest/blob/master/src/Microsoft.TestPlatform.ObjectModel/Microsoft.TestPlatform.ObjectModel.csproj#L37 --> - - + + diff --git a/Documentation/Changelog.md b/Documentation/Changelog.md index 3cffc7cd3..3575567a4 100644 --- a/Documentation/Changelog.md +++ b/Documentation/Changelog.md @@ -14,6 +14,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 -Allign published nuget package version to github release version [#1413](https://github.com/coverlet-coverage/coverlet/issues/1413) -Sync nuget and github release versions [#1122](https://github.com/coverlet-coverage/coverlet/issues/1122) +### Improvements +-Migration of the project to .NET 6.0 [#1473](https://github.com/coverlet-coverage/coverlet/pull/1473) + ### Breaking changes - New parameter `ExcludeAssembliesWithoutSources` to control automatic assembly exclusion [1164](https://github.com/coverlet-coverage/coverlet/issues/1164). The parameter `InstrumentModulesWithoutLocalSources` has been removed. since it can be handled by setting `ExcludeAssembliesWithoutSources` to `None`. - The default heuristics for determining whether to instrument an assembly has been changed. In previous versions any missing source file was taken as a signal that it was a third-party project that shouldn't be instrumented, with exceptions for some common file name patterns for source generators. Now only assemblies where no source files at all can be found are excluded from instrumentation, and the code for detecting source generator files have been removed. To get back to the behaviour that at least one missing file is sufficient to exclude an assembly, set `ExcludeAssembliesWithoutSources` to `MissingAny`, or use assembly exclusion filters for more fine-grained control. diff --git a/eng/build.yml b/eng/build.yml index fb3a5b9c9..e4db0b0a6 100644 --- a/eng/build.yml +++ b/eng/build.yml @@ -9,6 +9,16 @@ steps: version: 5.0.401 displayName: Install .NET Core SDK 5.0.401 +- task: UseDotNet@2 + inputs: + version: 6.0.408 + displayName: Install .NET Core SDK 6.0.408 + +- task: UseDotNet@2 + inputs: + version: 7.0.203 + displayName: Install .NET Core SDK 7.0.203 + - script: dotnet restore displayName: Restore packages diff --git a/global.json b/global.json index c07142494..2dbcd442b 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "5.0.401", + "version": "6.0.408", "rollForward": "latestMajor" } } diff --git a/src/coverlet.console/coverlet.console.csproj b/src/coverlet.console/coverlet.console.csproj index 5d33ebec8..b44e05dff 100644 --- a/src/coverlet.console/coverlet.console.csproj +++ b/src/coverlet.console/coverlet.console.csproj @@ -1,8 +1,8 @@ - + Exe - net5.0 + net6.0 coverlet true coverlet.console diff --git a/src/coverlet.core/Helpers/InstrumentationHelper.cs b/src/coverlet.core/Helpers/InstrumentationHelper.cs index bbd234ab1..6723fc733 100644 --- a/src/coverlet.core/Helpers/InstrumentationHelper.cs +++ b/src/coverlet.core/Helpers/InstrumentationHelper.cs @@ -125,20 +125,18 @@ public bool HasPdb(string module, out bool embedded) public bool EmbeddedPortablePdbHasLocalSource(string module, AssemblySearchType excludeAssembliesWithoutSources) { - using (Stream moduleStream = _fileSystem.OpenRead(module)) - using (var peReader = new PEReader(moduleStream)) + using Stream moduleStream = _fileSystem.OpenRead(module); + using var peReader = new PEReader(moduleStream); + foreach (DebugDirectoryEntry entry in peReader.ReadDebugDirectory()) { - foreach (DebugDirectoryEntry entry in peReader.ReadDebugDirectory()) + if (entry.Type == DebugDirectoryEntryType.EmbeddedPortablePdb) { - if (entry.Type == DebugDirectoryEntryType.EmbeddedPortablePdb) - { - using MetadataReaderProvider embeddedMetadataProvider = peReader.ReadEmbeddedPortablePdbDebugDirectoryData(entry); - MetadataReader metadataReader = embeddedMetadataProvider.GetMetadataReader(); + using MetadataReaderProvider embeddedMetadataProvider = peReader.ReadEmbeddedPortablePdbDebugDirectoryData(entry); + MetadataReader metadataReader = embeddedMetadataProvider.GetMetadataReader(); - if (!MatchDocumentsWithSources(module, excludeAssembliesWithoutSources, metadataReader)) - { - return false; - } + if (!MatchDocumentsWithSources(module, excludeAssembliesWithoutSources, metadataReader)) + { + return false; } } } @@ -150,31 +148,29 @@ public bool EmbeddedPortablePdbHasLocalSource(string module, AssemblySearchType public bool PortablePdbHasLocalSource(string module, AssemblySearchType excludeAssembliesWithoutSources) { - using (Stream moduleStream = _fileSystem.OpenRead(module)) - using (var peReader = new PEReader(moduleStream)) + using Stream moduleStream = _fileSystem.OpenRead(module); + using var peReader = new PEReader(moduleStream); + foreach (DebugDirectoryEntry entry in peReader.ReadDebugDirectory()) { - foreach (DebugDirectoryEntry entry in peReader.ReadDebugDirectory()) + if (entry.Type == DebugDirectoryEntryType.CodeView) { - if (entry.Type == DebugDirectoryEntryType.CodeView) + CodeViewDebugDirectoryData codeViewData = peReader.ReadCodeViewDebugDirectoryData(entry); + using Stream pdbStream = _fileSystem.OpenRead(_sourceRootTranslator.ResolveFilePath(codeViewData.Path)); + using var metadataReaderProvider = MetadataReaderProvider.FromPortablePdbStream(pdbStream); + MetadataReader metadataReader = null; + try + { + metadataReader = metadataReaderProvider.GetMetadataReader(); + } + catch (BadImageFormatException) + { + _logger.LogWarning($"{nameof(BadImageFormatException)} during MetadataReaderProvider.FromPortablePdbStream in InstrumentationHelper.PortablePdbHasLocalSource, unable to check if module has got local source."); + return true; + } + + if (!MatchDocumentsWithSources(module, excludeAssembliesWithoutSources, metadataReader)) { - CodeViewDebugDirectoryData codeViewData = peReader.ReadCodeViewDebugDirectoryData(entry); - using Stream pdbStream = _fileSystem.OpenRead(_sourceRootTranslator.ResolveFilePath(codeViewData.Path)); - using var metadataReaderProvider = MetadataReaderProvider.FromPortablePdbStream(pdbStream); - MetadataReader metadataReader = null; - try - { - metadataReader = metadataReaderProvider.GetMetadataReader(); - } - catch (BadImageFormatException) - { - _logger.LogWarning($"{nameof(BadImageFormatException)} during MetadataReaderProvider.FromPortablePdbStream in InstrumentationHelper.PortablePdbHasLocalSource, unable to check if module has got local source."); - return true; - } - - if (!MatchDocumentsWithSources(module, excludeAssembliesWithoutSources, metadataReader)) - { - return false; - } + return false; } } } diff --git a/test/coverlet.collector.tests/coverlet.collector.tests.csproj b/test/coverlet.collector.tests/coverlet.collector.tests.csproj index 822ddda6f..fa828394a 100644 --- a/test/coverlet.collector.tests/coverlet.collector.tests.csproj +++ b/test/coverlet.collector.tests/coverlet.collector.tests.csproj @@ -2,7 +2,7 @@ - net5.0 + net6.0 false diff --git a/test/coverlet.core.performancetest/coverlet.core.performancetest.csproj b/test/coverlet.core.performancetest/coverlet.core.performancetest.csproj index be9cd0e08..41f8d5bd3 100644 --- a/test/coverlet.core.performancetest/coverlet.core.performancetest.csproj +++ b/test/coverlet.core.performancetest/coverlet.core.performancetest.csproj @@ -2,13 +2,14 @@ - net5.0 + net6.0 false + diff --git a/test/coverlet.core.tests/Instrumentation/InstrumenterTests.cs b/test/coverlet.core.tests/Instrumentation/InstrumenterTests.cs index 1918a6d72..a8c31da33 100644 --- a/test/coverlet.core.tests/Instrumentation/InstrumenterTests.cs +++ b/test/coverlet.core.tests/Instrumentation/InstrumenterTests.cs @@ -514,11 +514,11 @@ public void CanInstrumentFSharpAssemblyWithAnonymousRecord() string sample = Directory.GetFiles(Directory.GetCurrentDirectory(), "coverlet.tests.projectsample.fsharp.dll").First(); var instrumentationHelper = new InstrumentationHelper(new ProcessExitHandler(), new RetryHelper(), new FileSystem(), new Mock().Object, - new SourceRootTranslator(sample, new Mock().Object, new FileSystem(), new AssemblyAdapter())); + new SourceRootTranslator(Assembly.GetExecutingAssembly().Location, new Mock().Object, new FileSystem(), new AssemblyAdapter())); var instrumenter = new Instrumenter(sample, "_coverlet_tests_projectsample_fsharp", new CoverageParameters(), loggerMock.Object, instrumentationHelper, - new FileSystem(), new SourceRootTranslator(sample, loggerMock.Object, new FileSystem(), new AssemblyAdapter()), new CecilSymbolHelper()); - + new FileSystem(), new SourceRootTranslator(Assembly.GetExecutingAssembly().Location, loggerMock.Object, new FileSystem(), new AssemblyAdapter()), new CecilSymbolHelper()); + Assert.True(instrumentationHelper.HasPdb(sample, out bool embedded)); Assert.False(embedded); Assert.True(instrumenter.CanInstrument()); diff --git a/test/coverlet.core.tests/coverlet.core.tests.csproj b/test/coverlet.core.tests/coverlet.core.tests.csproj index f54c85f67..f040aa9c3 100644 --- a/test/coverlet.core.tests/coverlet.core.tests.csproj +++ b/test/coverlet.core.tests/coverlet.core.tests.csproj @@ -2,7 +2,7 @@ - net5.0 + net6.0 false $(NoWarn);CS8002 NU1702 diff --git a/test/coverlet.integration.determisticbuild/coverlet.integration.determisticbuild.csproj b/test/coverlet.integration.determisticbuild/coverlet.integration.determisticbuild.csproj index 3c828c96d..b79d89433 100644 --- a/test/coverlet.integration.determisticbuild/coverlet.integration.determisticbuild.csproj +++ b/test/coverlet.integration.determisticbuild/coverlet.integration.determisticbuild.csproj @@ -3,7 +3,7 @@ - net5.0 + net6.0 false coverletsample.integration.determisticbuild diff --git a/test/coverlet.integration.template/coverlet.integration.template.csproj b/test/coverlet.integration.template/coverlet.integration.template.csproj index 60bfec072..d1639d96f 100644 --- a/test/coverlet.integration.template/coverlet.integration.template.csproj +++ b/test/coverlet.integration.template/coverlet.integration.template.csproj @@ -1,7 +1,7 @@  - net5.0 + net6.0 false coverletsamplelib.integration.template false @@ -10,8 +10,8 @@ - - + + diff --git a/test/coverlet.integration.tests/BaseTest.cs b/test/coverlet.integration.tests/BaseTest.cs index c10372c02..2d44555e0 100644 --- a/test/coverlet.integration.tests/BaseTest.cs +++ b/test/coverlet.integration.tests/BaseTest.cs @@ -65,7 +65,7 @@ private protected string GetPackageVersion(string filter) } } - private protected ClonedTemplateProject CloneTemplateProject(bool cleanupOnDispose = true, string testSDKVersion = "16.5.0") + private protected ClonedTemplateProject CloneTemplateProject(bool cleanupOnDispose = true, string testSDKVersion = "17.5.0") { DirectoryInfo finalRoot = Directory.CreateDirectory($"{Guid.NewGuid().ToString("N")[..6]}{Interlocked.Increment(ref s_folderSuffix)}"); foreach (string file in (Directory.GetFiles($"../../../../coverlet.integration.template", "*.cs") @@ -248,12 +248,14 @@ private protected void AssertCoverage(ClonedTemplateProject clonedTemplateProjec bool coverageChecked = false; foreach (string coverageFile in clonedTemplateProject.GetFiles(filter)) { - JsonConvert.DeserializeObject(File.ReadAllText(coverageFile)) - .Document("DeepThought.cs") - .Class("Coverlet.Integration.Template.DeepThought") - .Method("System.Int32 Coverlet.Integration.Template.DeepThought::AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything()") - .AssertLinesCovered((6, 1), (7, 1), (8, 1)); - coverageChecked = true; + Classes? document = JsonConvert.DeserializeObject(File.ReadAllText(coverageFile))?.Document("DeepThought.cs"); + if (document != null) + { + document.Class("Coverlet.Integration.Template.DeepThought") + .Method("System.Int32 Coverlet.Integration.Template.DeepThought::AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything()") + .AssertLinesCovered((6, 1), (7, 1), (8, 1)); + coverageChecked = true; + } } Assert.True(coverageChecked, $"Coverage check fail\n{standardOutput}"); diff --git a/test/coverlet.integration.tests/DeterministicBuild.cs b/test/coverlet.integration.tests/DeterministicBuild.cs index 5af1f3339..2607b5e8e 100644 --- a/test/coverlet.integration.tests/DeterministicBuild.cs +++ b/test/coverlet.integration.tests/DeterministicBuild.cs @@ -45,13 +45,15 @@ private protected void AssertCoverage(string standardOutput = "", bool checkDete string reportFilePath = ""; foreach (string coverageFile in Directory.GetFiles(_testProjectPath, "coverage.json", SearchOption.AllDirectories)) { - JsonConvert.DeserializeObject(File.ReadAllText(coverageFile)) - .Document("DeepThought.cs") - .Class("Coverlet.Integration.DeterministicBuild.DeepThought") - .Method("System.Int32 Coverlet.Integration.DeterministicBuild.DeepThought::AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything()") - .AssertLinesCovered((6, 1), (7, 1), (8, 1)); - coverageChecked = true; - reportFilePath = coverageFile; + Classes? document = JsonConvert.DeserializeObject(File.ReadAllText(coverageFile))?.Document("DeepThought.cs"); + if (document != null) + { + document.Class("Coverlet.Integration.DeterministicBuild.DeepThought") + .Method("System.Int32 Coverlet.Integration.DeterministicBuild.DeepThought::AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything()") + .AssertLinesCovered((6, 1), (7, 1), (8, 1)); + coverageChecked = true; + reportFilePath = coverageFile; + } } Assert.True(coverageChecked, $"Coverage check fail\n{standardOutput}"); File.Delete(reportFilePath); diff --git a/test/coverlet.integration.tests/Msbuild.cs b/test/coverlet.integration.tests/Msbuild.cs index b79f356cf..83c635934 100644 --- a/test/coverlet.integration.tests/Msbuild.cs +++ b/test/coverlet.integration.tests/Msbuild.cs @@ -96,7 +96,7 @@ public void TestMsbuild_CoverletOutput_Folder_FileNameWithDoubleExtension() public void Test_MultipleTargetFrameworkReport_NoCoverletOutput() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] { "net5.0", "netcoreapp3.1" }; + string[] targetFrameworks = new string[] { "net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(DotnetCli($"test -c {_buildConfiguration} \"{clonedTemplateProject.ProjectRootPath}\" /p:CollectCoverage=true /p:Include=\"[{ClonedTemplateProject.AssemblyName}]*DeepThought\" /p:IncludeTestAssembly=true", out string standardOutput, out string standardError, clonedTemplateProject.ProjectRootPath!), standardOutput); Assert.Contains("Passed!", standardOutput); @@ -114,7 +114,7 @@ public void Test_MultipleTargetFrameworkReport_NoCoverletOutput() public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] { "netcoreapp3.1", "net5.0" }; + string[] targetFrameworks = new string[] { "net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(DotnetCli($"test -c {_buildConfiguration} \"{clonedTemplateProject.ProjectRootPath}\" /p:CollectCoverage=true /p:Include=\"[{ClonedTemplateProject.AssemblyName}]*DeepThought\" /p:IncludeTestAssembly=true /p:CoverletOutput=\"{clonedTemplateProject.ProjectRootPath}\"\\", out string standardOutput, out string standardError, clonedTemplateProject.ProjectRootPath!), standardOutput); Assert.Contains("Passed!", standardOutput); @@ -133,7 +133,7 @@ public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder() public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWithoutExtension() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] { "net5.0", "netcoreapp3.1" }; + string[] targetFrameworks = new string[] {"net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(DotnetCli($"test -c {_buildConfiguration} \"{clonedTemplateProject.ProjectRootPath}\" /p:CollectCoverage=true /p:Include=\"[{ClonedTemplateProject.AssemblyName}]*DeepThought\" /p:IncludeTestAssembly=true /p:CoverletOutput=\"{clonedTemplateProject.ProjectRootPath}\"\\file", out string standardOutput, out string standardError, clonedTemplateProject.ProjectRootPath!), standardOutput); Assert.Contains("Passed!", standardOutput); @@ -151,7 +151,7 @@ public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWit public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWithExtension_SpecifyFramework() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] { "net5.0", "netcoreapp3.1" }; + string[] targetFrameworks = new string[] {"net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(clonedTemplateProject.IsMultipleTargetFramework()); string[] frameworks = clonedTemplateProject.GetTargetFrameworks(); @@ -180,7 +180,7 @@ public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWit public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWithExtension() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] {"net5.0", "netcoreapp3.1" }; + string[] targetFrameworks = new string[] {"net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(DotnetCli($"test -c {_buildConfiguration} \"{clonedTemplateProject.ProjectRootPath}\" /p:CollectCoverage=true /p:Include=\"[{ClonedTemplateProject.AssemblyName}]*DeepThought\" /p:IncludeTestAssembly=true /p:CoverletOutput=\"{clonedTemplateProject.ProjectRootPath}\"\\file.ext", out string standardOutput, out string standardError, clonedTemplateProject.ProjectRootPath!), standardOutput); Assert.Contains("Passed!", standardOutput); @@ -198,7 +198,7 @@ public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWit public void Test_MultipleTargetFrameworkReport_CoverletOutput_Folder_FileNameWithDoubleExtension() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); - string[] targetFrameworks = new string[] { "net5.0", "netcoreapp3.1" }; + string[] targetFrameworks = new string[] {"net6.0", "net7.0" }; UpdateProjectTargetFramework(clonedTemplateProject, targetFrameworks); Assert.True(DotnetCli($"test -c {_buildConfiguration} \"{clonedTemplateProject.ProjectRootPath}\" /p:CollectCoverage=true /p:Include=\"[{ClonedTemplateProject.AssemblyName}]*DeepThought\" /p:IncludeTestAssembly=true /p:CoverletOutput=\"{clonedTemplateProject.ProjectRootPath}\"\\file.ext1.ext2", out string standardOutput, out string standardError, clonedTemplateProject.ProjectRootPath!), standardOutput); Assert.Contains("Passed!", standardOutput); diff --git a/test/coverlet.integration.tests/coverlet.integration.tests.csproj b/test/coverlet.integration.tests/coverlet.integration.tests.csproj index b80f7c1a2..6de30285a 100644 --- a/test/coverlet.integration.tests/coverlet.integration.tests.csproj +++ b/test/coverlet.integration.tests/coverlet.integration.tests.csproj @@ -1,7 +1,7 @@ - + - net5.0 + net6.0 false enable diff --git a/test/coverlet.tests.projectsample.excludedbyattribute/coverlet.tests.projectsample.excludedbyattribute.csproj b/test/coverlet.tests.projectsample.excludedbyattribute/coverlet.tests.projectsample.excludedbyattribute.csproj index 6acabd989..3020bf383 100644 --- a/test/coverlet.tests.projectsample.excludedbyattribute/coverlet.tests.projectsample.excludedbyattribute.csproj +++ b/test/coverlet.tests.projectsample.excludedbyattribute/coverlet.tests.projectsample.excludedbyattribute.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 false false diff --git a/test/coverlet.tests.projectsample.fsharp/coverlet.tests.projectsample.fsharp.fsproj b/test/coverlet.tests.projectsample.fsharp/coverlet.tests.projectsample.fsharp.fsproj index 03637dad4..cd7a95969 100644 --- a/test/coverlet.tests.projectsample.fsharp/coverlet.tests.projectsample.fsharp.fsproj +++ b/test/coverlet.tests.projectsample.fsharp/coverlet.tests.projectsample.fsharp.fsproj @@ -1,7 +1,7 @@  - net5.0 + net6.0 true false false diff --git a/test/coverlet.testsubject/coverlet.testsubject.csproj b/test/coverlet.testsubject/coverlet.testsubject.csproj index 6acabd989..3020bf383 100644 --- a/test/coverlet.testsubject/coverlet.testsubject.csproj +++ b/test/coverlet.testsubject/coverlet.testsubject.csproj @@ -1,7 +1,7 @@ - net5.0 + net6.0 false false