From 8d0c07d08ee20133943d1a48e48fe86fce01f036 Mon Sep 17 00:00:00 2001 From: Marco Rossignoli Date: Sat, 15 Feb 2020 11:06:16 +0100 Subject: [PATCH] add coverlet smoke test --- TestPlatform.sln | 17 +++++++- scripts/build.ps1 | 4 ++ .../DataCollectorTests.Coverlet.cs | 40 +++++++++++++++++++ .../IntegrationTestBase.cs | 4 +- .../CoverletCoverageTestProject.csproj | 19 +++++++++ .../CoverletCoverageTestProject/UnitTest1.cs | 14 +++++++ 6 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs create mode 100644 test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj create mode 100644 test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs diff --git a/TestPlatform.sln b/TestPlatform.sln index b592e87249..5c4042b844 100644 --- a/TestPlatform.sln +++ b/TestPlatform.sln @@ -181,7 +181,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.TestPlatform.Exte EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "coverlet.collector", "test\TestAssets\coverlet.collector\coverlet.collector.csproj", "{F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectFileRunSettingsTestProject", "test\TestAssets\ProjectFileRunSettingsTestProject\ProjectFileRunSettingsTestProject.csproj", "{8E87F6E4-E884-4404-B2E5-CBFB28038AE5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectFileRunSettingsTestProject", "test\TestAssets\ProjectFileRunSettingsTestProject\ProjectFileRunSettingsTestProject.csproj", "{8E87F6E4-E884-4404-B2E5-CBFB28038AE5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CoverletCoverageTestProject", "test\TestAssets\CoverletCoverageTestProject\CoverletCoverageTestProject.csproj", "{700CE03D-926C-4166-900E-143A353F3E58}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -925,6 +927,18 @@ Global {8E87F6E4-E884-4404-B2E5-CBFB28038AE5}.Release|x64.Build.0 = Release|Any CPU {8E87F6E4-E884-4404-B2E5-CBFB28038AE5}.Release|x86.ActiveCfg = Release|Any CPU {8E87F6E4-E884-4404-B2E5-CBFB28038AE5}.Release|x86.Build.0 = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|x64.ActiveCfg = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|x64.Build.0 = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|x86.ActiveCfg = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Debug|x86.Build.0 = Debug|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|Any CPU.Build.0 = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|x64.ActiveCfg = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|x64.Build.0 = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|x86.ActiveCfg = Release|Any CPU + {700CE03D-926C-4166-900E-143A353F3E58}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1003,6 +1017,7 @@ Global {41248B96-6E15-4E5E-A78F-859897676814} = {020E15EA-731F-4667-95AF-226671E0C3AE} {F1D8630D-97D5-4CD7-BC18-A5E1779FA6E3} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A} {8E87F6E4-E884-4404-B2E5-CBFB28038AE5} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A} + {700CE03D-926C-4166-900E-143A353F3E58} = {8DA7CBD9-F17E-41B6-90C4-CFF55848A25A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0541B30C-FF51-4E28-B172-83F5F3934BCD} diff --git a/scripts/build.ps1 b/scripts/build.ps1 index c424f75357..37c0924b6b 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -228,6 +228,10 @@ function Publish-PatchedDotnet { Write-Log "Publish-PatchedDotnet: Copy VSTest task artifacts to local dotnet installation to allow `dotnet test` to run with it" $buildArtifactsPath = "$env:TP_ROOT_DIR\src\Microsoft.TestPlatform.Build\bin\$TPB_Configuration\$TPB_TargetFrameworkNS2_0\*" Copy-Item $buildArtifactsPath $dotnetTestArtifactsSdkPath -Force + + Write-Log "Publish-PatchedDotnet: Copy vstest.console.dll artifact to local dotnet installation to allow `dotnet test` to run with it" + $buildArtifactsPath = "$env:TP_ROOT_DIR\src\vstest.console\bin\$TPB_Configuration\$TPB_TargetFrameworkCore20\vstest.console.dll" + Copy-Item $buildArtifactsPath $dotnetTestArtifactsSdkPath -Force } function Publish-Package diff --git a/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs b/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs new file mode 100644 index 0000000000..14418a3f90 --- /dev/null +++ b/test/Microsoft.TestPlatform.SmokeTests/DataCollectorTests.Coverlet.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace Microsoft.TestPlatform.SmokeTests +{ + using Microsoft.TestPlatform.TestUtilities; + using Microsoft.VisualStudio.TestTools.UnitTesting; + using System; + using System.IO; + using System.Linq; + using System.Reflection; + + [TestClass] + public class DataCollectorTestsCoverlets : IntegrationTestBase + { + [TestMethod] + public void RunCoverletCoverage() + { + string projectFileName = this.GetProjectAssetFullPath("CoverletCoverageTestProject.csproj", "CoverletCoverageTestProject.csproj"); + string logId = Guid.NewGuid().ToString("N"); + this.InvokeDotnetTest($"--collect:\"XPlat Code Coverage\" {projectFileName} --diag:coverletcoverage.{logId}.log"); + var currentDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + + // Verify vstest.console.dll CollectArgumentProcessor fix codeBase for coverlet package + var log = Directory.GetFiles(currentDir, $"coverletcoverage.{logId}.log").Single(); + Assert.IsTrue(File.ReadAllText(log).Contains("CoverletDataCollector in-process codeBase path")); + + // Verify out-of-proc coverlet collector load + var dataCollectorLog = Directory.GetFiles(currentDir, $"coverletcoverage.{logId}.datacollector*log").Single(); + Assert.IsTrue(File.ReadAllText(dataCollectorLog).Contains("[coverlet]Initializing CoverletCoverageDataCollector")); + + // Verify in-proc coverlet collector load + var hostLog = Directory.GetFiles(currentDir, $"coverletcoverage.{logId}.host*log").Single(); + Assert.IsTrue(File.ReadAllText(hostLog).Contains("[coverlet]Initialize CoverletInProcDataCollector")); + + // Verify default coverage file is generated + this.StdOutputContains("coverage.cobertura.xml"); + } + } +} diff --git a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs index 9aa4880d2b..f53851c9c9 100644 --- a/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs +++ b/test/Microsoft.TestPlatform.TestUtilities/IntegrationTestBase.cs @@ -524,10 +524,10 @@ private void ExecuteVsTestConsole(string args, out string stdOut, out string std private void ExecutePatchedDotnet(string command, string args, out string stdOut, out string stdError, out int exitCode) { var environmentVariables = new Dictionary { - ["DOTNET_MULTILEVEL_LOOKUP"] = "0" + ["DOTNET_MULTILEVEL_LOOKUP"] = "0" }; - var patchedDotnetPath = Path.Combine(this.testEnvironment.TestArtifactsDirectory, @"dotnet\dotnet.exe"); ; + var patchedDotnetPath = Path.Combine(this.testEnvironment.TestArtifactsDirectory, @"dotnet\dotnet.exe"); this.ExecuteApplication(patchedDotnetPath, string.Join(" ", command, args), out stdOut, out stdError, out exitCode, environmentVariables); } diff --git a/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj b/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj new file mode 100644 index 0000000000..0a53a6d54e --- /dev/null +++ b/test/TestAssets/CoverletCoverageTestProject/CoverletCoverageTestProject.csproj @@ -0,0 +1,19 @@ + + + + + + + + netcoreapp2.1 + false + + + + + + + + + + diff --git a/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs b/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs new file mode 100644 index 0000000000..07b48704bd --- /dev/null +++ b/test/TestAssets/CoverletCoverageTestProject/UnitTest1.cs @@ -0,0 +1,14 @@ +using System; +using Xunit; + +namespace CoverletCoverageTestProject +{ + public class UnitTest1 + { + [Fact] + public void Test1() + { + + } + } +}