private protected override void AssertCollectorsInjection(ClonedTemplateProject clonedTemplateProject) { // Check out/in process collectors injection Assert.Contains("[coverlet]", File.ReadAllText(clonedTemplateProject.GetFiles("log.datacollector.*.txt").Single())); // There is a bug in this SDK version https://github.com/microsoft/vstest/pull/2221 // in-proc coverlet.collector.dll collector with version != 1.0.0.0 won't be loaded // Assert.Contains("[coverlet]", File.ReadAllText(clonedTemplateProject.GetFiles("log.host.*.txt").Single())); }
public void StandAlone() { using ClonedTemplateProject clonedTemplateProject = CloneTemplateProject(); UpdateNugeConfigtWithLocalPackageFolder(clonedTemplateProject.ProjectRootPath !); string coverletToolCommandPath = InstallTool(clonedTemplateProject.ProjectRootPath !); DotnetCli($"build {clonedTemplateProject.ProjectRootPath}", out string standardOutput, out string standardError); string publishedTestFile = clonedTemplateProject.GetFiles("*" + ClonedTemplateProject.AssemblyName + ".dll").Single(f => !f.Contains("obj") && !f.Contains("ref")); RunCommand(coverletToolCommandPath, $"\"{Path.GetDirectoryName(publishedTestFile)}\" --target \"dotnet\" --targetargs \"{publishedTestFile}\" --output \"{clonedTemplateProject.ProjectRootPath}\"\\", out standardOutput, out standardError); Assert.Contains("Hello World!", standardOutput); AssertCoverage(clonedTemplateProject, standardOutput: standardOutput); }
public void DotnetTool() { using ClonedTemplateProject clonedTemplateProject = CloneTemplateProject(); UpdateNugeConfigtWithLocalPackageFolder(clonedTemplateProject.ProjectRootPath !); string coverletToolCommandPath = InstallTool(clonedTemplateProject.ProjectRootPath !); DotnetCli($"build {clonedTemplateProject.ProjectRootPath}", out string standardOutput, out string standardError); string publishedTestFile = clonedTemplateProject.GetFiles("*" + ClonedTemplateProject.AssemblyName + ".dll").Single(f => !f.Contains("obj")); RunCommand(coverletToolCommandPath, $"\"{publishedTestFile}\" --target \"dotnet\" --targetargs \"test {Path.Combine(clonedTemplateProject.ProjectRootPath, ClonedTemplateProject.ProjectFileName)} --no-build\" --include-test-assembly --output \"{clonedTemplateProject.ProjectRootPath}\"\\", out standardOutput, out standardError); Assert.Contains("Test Run Successful.", standardOutput); AssertCoverage(clonedTemplateProject, standardOutput: standardOutput); }
public void TestVsTest_VsTest_Settings() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); string runSettingsPath = AddCollectorRunsettingsFile(clonedTemplateProject.ProjectRootPath !); Assert.True(DotnetCli($"publish \"{clonedTemplateProject.ProjectRootPath}\"", out string standardOutput, out string standardError), standardOutput); string publishedTestFile = clonedTemplateProject.GetFiles("*" + ClonedTemplateProject.AssemblyName + ".dll").Single(f => f.Contains("publish")); Assert.NotNull(publishedTestFile); Assert.True(DotnetCli($"vstest \"{publishedTestFile}\" --collect:\"XPlat Code Coverage\" --ResultsDirectory:\"{clonedTemplateProject.ProjectRootPath}\" /settings:\"{runSettingsPath}\" --diag:{Path.Combine(clonedTemplateProject.ProjectRootPath, "log.txt")}", out standardOutput, out standardError), standardOutput); Assert.Contains("Test Run Successful.", standardOutput); AssertCoverage(clonedTemplateProject); AssertCollectorsInjection(clonedTemplateProject); }
public void TestVsTest_VsTest() { using ClonedTemplateProject clonedTemplateProject = PrepareTemplateProject(); string runSettingsPath = AddCollectorRunsettingsFile(clonedTemplateProject.ProjectRootPath !); Assert.True(DotnetCli($"publish {clonedTemplateProject.ProjectRootPath}", out string standardOutput, out string standardError), standardOutput); string publishedTestFile = clonedTemplateProject.GetFiles("*" + ClonedTemplateProject.AssemblyName + ".dll").Single(f => f.Contains("publish")); Assert.NotNull(publishedTestFile); Assert.True(DotnetCli($"vstest \"{publishedTestFile}\" --collect:\"XPlat Code Coverage\" --diag:{Path.Combine(clonedTemplateProject.ProjectRootPath, "log.txt")}", out standardOutput, out standardError), standardOutput); // We don't have any result to check because tests and code to instrument are in same assembly so we need to pass // IncludeTestAssembly=true we do it in other test Assert.Contains("Test Run Successful.", standardOutput); AssertCollectorsInjection(clonedTemplateProject); }
private protected void AssertCoverage(ClonedTemplateProject clonedTemplateProject, string filter = "coverage.json") { bool coverageChecked = false; foreach (string coverageFile in clonedTemplateProject.GetFiles(filter)) { JsonConvert.DeserializeObject <Modules>(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; } Assert.True(coverageChecked, "Coverage check fail"); }
public void DotnetTool() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { // Disabled for the moment on unix system we get an exception(folder access denied) during tool installation return; } using ClonedTemplateProject clonedTemplateProject = CloneTemplateProject(); UpdateNugeConfigtWithLocalPackageFolder(clonedTemplateProject.ProjectRootPath !); string coverletToolCommandPath = InstallTool(clonedTemplateProject.ProjectRootPath !); DotnetCli($"build {clonedTemplateProject.ProjectRootPath}", out string standardOutput, out string standardError); string publishedTestFile = clonedTemplateProject.GetFiles("*" + ClonedTemplateProject.AssemblyName + ".dll").Single(f => !f.Contains("obj")); RunCommand(coverletToolCommandPath, $"\"{publishedTestFile}\" --target \"dotnet\" --targetargs \"test {Path.Combine(clonedTemplateProject.ProjectRootPath, ClonedTemplateProject.ProjectFileName)} --no-build\" --include-test-assembly --output \"{clonedTemplateProject.ProjectRootPath}\"\\", out standardOutput, out standardError); Assert.Contains("Test Run Successful.", standardOutput); AssertCoverage(clonedTemplateProject, standardOutput: standardOutput); }
private void AssertCollectorsInjection(ClonedTemplateProject clonedTemplateProject) { // Check out/in process collectors injection Assert.Contains("[coverlet]", File.ReadAllText(clonedTemplateProject.GetFiles("log.datacollector.*.txt").Single())); Assert.Contains("[coverlet]", File.ReadAllText(clonedTemplateProject.GetFiles("log.host.*.txt").Single())); }
private protected virtual void AssertCollectorsInjection(ClonedTemplateProject clonedTemplateProject) { // Check out/in process collectors injection Assert.Contains("[coverlet]Initializing CoverletCoverageDataCollector with configuration:", File.ReadAllText(clonedTemplateProject.GetFiles("log.datacollector.*.txt").Single())); Assert.Contains("[coverlet]Initialize CoverletInProcDataCollector", File.ReadAllText(clonedTemplateProject.GetFiles("log.host.*.txt").Single())); }