Bari.Core.Model.Discovery.ModuleProjectDiscovery.ExtendWithDiscoveries C# (CSharp) Method

ExtendWithDiscoveries() public method

Extends suite model with discovered information based on bari conventions
public ExtendWithDiscoveries ( Suite suite ) : void
suite Suite The suite model to be extended with discoveries
return void
        public void ExtendWithDiscoveries(Suite suite)
        {
            var srcDir = suiteRoot.GetChildDirectory("src");
            srcDir.With(s => s.ChildDirectories.Do(
                moduleName =>
                {
                    Module module = suite.GetModule(moduleName);

                    var moduleDir = srcDir.GetChildDirectory(moduleName);
                    foreach (var projectName in moduleDir.ChildDirectories)
                    {
                        if (projectName.Equals("tests", StringComparison.InvariantCultureIgnoreCase))
                        {
                            // This is the special subdirectory for test projects
                            var testsDir = moduleDir.GetChildDirectory(projectName);
                            foreach (var testProjectName in testsDir.ChildDirectories)
                            {
                                var testProject = module.GetTestProject(testProjectName);
                                DiscoverProjectSources(testProject, testsDir.GetChildDirectory(testProjectName), suite.SourceSetIgnoreLists);
                            }
                        }
                        else
                        {
                            // This is a project directory

                            Project project = module.GetProject(projectName);
                            DiscoverProjectSources(project, moduleDir.GetChildDirectory(projectName), suite.SourceSetIgnoreLists);
                        }
                    }
                }));
        }

Usage Example

        public void ExistingModulesMergedWithDiscoveredOnes()
        {
            var fs = new TestFileSystemDirectory("root",
                                                 new TestFileSystemDirectory("src",
                                                                             new TestFileSystemDirectory("Module1",
                                                                                                         new TestFileSystemDirectory
                                                                                                             ("Project11"))));

            var suite = new Suite(fs);

            var module1 = suite.GetModule("Module1");
            var projectA = module1.GetProject("ProjectA");

            module1.Projects.Should().HaveCount(1);
            module1.Projects.Should().HaveElementAt(0, projectA);

            var discovery = new ModuleProjectDiscovery(fs);
            discovery.ExtendWithDiscoveries(suite);

            suite.Modules.Should().HaveCount(1);
            suite.Modules.Should().HaveElementAt(0, module1);
            module1.Projects.Should().HaveCount(2);
            module1.Projects.Should().Contain(projectA);
            module1.Projects.Should().Contain(p => p.Name == "Project11");
        }
All Usage Examples Of Bari.Core.Model.Discovery.ModuleProjectDiscovery::ExtendWithDiscoveries