예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }