public void Should_Add_The_Test_Assembly_Regex_Escaped_To_Module_Excludes_When_IncludeTestAssembly_Is_False(bool includeTestAssembly1, bool includeTestAssembly2) { var testContainers = new List <ITestContainer>() { CreateTestContainer("Source1"), CreateTestContainer("Source2"), }; Dictionary <string, IUserRunSettingsProjectDetails> userRunSettingsProjectDetailsLookup = new Dictionary <string, IUserRunSettingsProjectDetails> { { "Source1", new TestUserRunSettingsProjectDetails { CoverageOutputFolder = "", Settings = new TestMsCodeCoverageOptions { IncludeTestAssembly = includeTestAssembly1, ModulePathsExclude = new string[] { "ModulePathExclude" } }, ExcludedReferencedProjects = new List <string>(), IncludedReferencedProjects = new List <string>(), TestDllFile = @"Some\Path1" } }, { "Source2", new TestUserRunSettingsProjectDetails { CoverageOutputFolder = "", Settings = new TestMsCodeCoverageOptions { IncludeTestAssembly = includeTestAssembly2 }, ExcludedReferencedProjects = new List <string>(), IncludedReferencedProjects = new List <string>(), TestDllFile = @"Some\Path2" } }, }; var testDlls = userRunSettingsProjectDetailsLookup.Select(kvp => kvp.Value.TestDllFile).ToList(); string GetModulePathExcludeWhenExcludingTestAssembly(bool first) { var regexed = MsCodeCoverageRegex.RegexEscapePath(testDlls[first ? 0 : 1]); return(ModulePathElement(regexed)); } var expectedModulePathExcludes1 = !includeTestAssembly1?GetModulePathExcludeWhenExcludingTestAssembly(true) : ""; var expectedModulePathExcludes2 = !includeTestAssembly2?GetModulePathExcludeWhenExcludingTestAssembly(false) : ""; var expectedModulePathExcludes = expectedModulePathExcludes1 + expectedModulePathExcludes2 + ModulePathElement("ModulePathExclude"); var replacements = runSettingsTemplateReplacementsFactory.Create(testContainers, userRunSettingsProjectDetailsLookup, null); Assert.AreEqual(expectedModulePathExcludes, replacements.ModulePathsExclude); }
public void Should_Have_ModulePathsInclude_Replacements_From_IncludedReferencedProjects_And_Settings() { var msCodeCoverageOptions = new TestCoverageProjectOptions { ModulePathsInclude = new[] { "FromSettings" }, IncludeTestAssembly = true }; var coverageProject = CreateCoverageProject(mock => { mock.Setup(cp => cp.Settings).Returns(msCodeCoverageOptions); mock.Setup(cp => cp.IncludedReferencedProjects).Returns(new List <string> { "ModuleName" }); }); var replacements = runSettingsTemplateReplacementsFactory.Create(coverageProject, null); var expectedModulePathsInclude = $"{ModulePathElement(MsCodeCoverageRegex.RegexModuleName("ModuleName"))}{ModulePathElement("FromSettings")}"; Assert.AreEqual(expectedModulePathsInclude, replacements.ModulePathsInclude); }
public void Should_Add_Regexed_IncludedExcluded_Referenced_Projects_To_ModulePaths() { var testContainers = new List <ITestContainer>() { CreateTestContainer("Source1"), CreateTestContainer("Source2"), }; Dictionary <string, IUserRunSettingsProjectDetails> userRunSettingsProjectDetailsLookup = new Dictionary <string, IUserRunSettingsProjectDetails> { { "Source1", new TestUserRunSettingsProjectDetails { CoverageOutputFolder = "", Settings = new TestMsCodeCoverageOptions { IncludeTestAssembly = true, ModulePathsExclude = new string[] { "ModulePathExclude" }, ModulePathsInclude = new string[] { "ModulePathInclude" } }, ExcludedReferencedProjects = new List <string> { "ExcludedReferenced1" }, IncludedReferencedProjects = new List <string> { "IncludedReferenced1" }, } }, { "Source2", new TestUserRunSettingsProjectDetails { CoverageOutputFolder = "", Settings = new TestMsCodeCoverageOptions { IncludeTestAssembly = true }, ExcludedReferencedProjects = new List <string> { "ExcludedReferenced2" }, IncludedReferencedProjects = new List <string> { "IncludedReferenced2" }, } }, }; var projectDetails = userRunSettingsProjectDetailsLookup.Select(kvp => kvp.Value).ToList(); var allExcludedReferencesProjects = projectDetails.SelectMany(pd => pd.ExcludedReferencedProjects); var allIncludedReferencesProjects = projectDetails.SelectMany(pd => pd.IncludedReferencedProjects); string GetExpectedExcludedOrIncludedEscaped(IEnumerable <string> excludedOrIncludedReferenced) { return(string.Join("", excludedOrIncludedReferenced.Select(referenced => ModulePathElement(MsCodeCoverageRegex.RegexModuleName(referenced))))); } var expectedModulePathExcludes = GetExpectedExcludedOrIncludedEscaped(allExcludedReferencesProjects) + ModulePathElement("ModulePathExclude"); var expectedModulePathIncludes = GetExpectedExcludedOrIncludedEscaped(allIncludedReferencesProjects) + ModulePathElement("ModulePathInclude"); var replacements = runSettingsTemplateReplacementsFactory.Create(testContainers, userRunSettingsProjectDetailsLookup, null); Assert.AreEqual(expectedModulePathExcludes, replacements.ModulePathsExclude); Assert.AreEqual(expectedModulePathIncludes, replacements.ModulePathsInclude); }