public void SetUp() { kernel = new StandardKernel(); Kernel.RegisterCoreBindings(kernel); kernel.Bind<IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("root")).WhenTargetHas <SuiteRootAttribute>(); output = new TestUserOutput(); kernel.Bind<IUserOutput>().ToConstant(output).InSingletonScope(); suite = kernel.Get<Suite>(); suite.Name = "test suite"; var mod1 = suite.GetModule("first module"); var mod2 = suite.GetModule("other module"); var mod3 = suite.GetModule("last module"); var proj11 = mod1.GetProject("project 1.1"); var proj12 = mod1.GetProject("project 1.2"); var proj31 = mod3.GetProject("project 3.1"); mod1.GetTestProject("test1"); mod2.GetTestProject("test2"); var cs = proj31.GetSourceSet("cs"); var vb = proj31.GetSourceSet("vb"); var fs = proj31.GetSourceSet("fs"); cs.Add(new SuiteRelativePath("a.cs")); cs.Add(new SuiteRelativePath("b.cs")); cs.Add(new SuiteRelativePath("c.cs")); vb.Add(new SuiteRelativePath("x.vb")); }
public void SetUp() { kernel = new StandardKernel(); Kernel.RegisterCoreBindings(kernel); kernel.Bind <IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("root")).WhenTargetHas <SuiteRootAttribute>(); output = new TestUserOutput(); kernel.Bind <IUserOutput>().ToConstant(output).InSingletonScope(); suite = kernel.Get <Suite>(); suite.Name = "test suite"; var mod1 = suite.GetModule("first module"); var mod2 = suite.GetModule("other module"); var mod3 = suite.GetModule("last module"); var proj11 = mod1.GetProject("project 1.1"); var proj12 = mod1.GetProject("project 1.2"); var proj31 = mod3.GetProject("project 3.1"); mod1.GetTestProject("test1"); mod2.GetTestProject("test2"); var cs = proj31.GetSourceSet("cs"); var vb = proj31.GetSourceSet("vb"); var fs = proj31.GetSourceSet("fs"); cs.Add(new SuiteRelativePath("a.cs")); cs.Add(new SuiteRelativePath("b.cs")); cs.Add(new SuiteRelativePath("c.cs")); vb.Add(new SuiteRelativePath("x.vb")); }
public void GetModuleReturnsTheSameInstanceIfCalledTwice() { var suite = new Suite(new TestFileSystemDirectory("root")); var mod1 = suite.GetModule("mod"); var mod2 = suite.GetModule("mod"); mod1.Should().BeSameAs(mod2); }
public void SetUp() { suite = new Suite(new TestFileSystemDirectory("root")); suiteNoExe = new Suite(new TestFileSystemDirectory("root")); suite.GetModule("TestModule").GetProject("TestLib").Type = ProjectType.Library; suiteNoExe.GetModule("TestModule").GetProject("TestLib").Type = ProjectType.Library; suite.GetModule("TestModule").GetProject("TestExe").Type = ProjectType.Executable; product = suite.GetProduct("TestProduct"); product.AddModule(suite.GetModule("TestModule")); targetParser = new Mock<ICommandTargetParser>(); buildTargetSource = new Mock<IHasBuildTarget>(); data = new AddonSupportSolutionItemData(targetParser.Object, buildTargetSource.Object, new Goal("test")); }
public void SetUp() { suite = new Suite(new TestFileSystemDirectory("root")); suiteNoExe = new Suite(new TestFileSystemDirectory("root")); suite.GetModule("TestModule").GetProject("TestLib").Type = ProjectType.Library; suiteNoExe.GetModule("TestModule").GetProject("TestLib").Type = ProjectType.Library; suite.GetModule("TestModule").GetProject("TestExe").Type = ProjectType.Executable; product = suite.GetProduct("TestProduct"); product.AddModule(suite.GetModule("TestModule")); targetParser = new Mock <ICommandTargetParser>(); buildTargetSource = new Mock <IHasBuildTarget>(); data = new AddonSupportSolutionItemData(targetParser.Object, buildTargetSource.Object, new Goal("test")); }
public void TestProjectsDiscovered() { var fs = CreateFsWithSourcesAndTests(); var suite = new Suite(fs); suite.Modules.Should().BeEmpty(); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); suite.Modules.Should().HaveCount(3); suite.Modules.Should().OnlyContain(m => m.Name == "Module1" || m.Name == "Module2" || m.Name == "Module3"); var mod3 = suite.GetModule("Module3"); mod3.Projects.Should().HaveCount(2); mod3.Projects.Should().Contain(p => p.Name == "Project31"); mod3.Projects.Should().Contain(p => p.Name == "Project32"); mod3.TestProjects.Should().HaveCount(2); mod3.TestProjects.Should().Contain(p => p.Name == "Project31.Test"); mod3.TestProjects.Should().Contain(p => p.Name == "Project32.Test"); }
/// <summary> /// Extends suite model with discovered information based on bari conventions /// </summary> /// <param name="suite">The suite model to be extended with discoveries</param> 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)); } } else { // This is a project directory Project project = module.GetProject(projectName); DiscoverProjectSources(project, moduleDir.GetChildDirectory(projectName)); } } })); }
/// <summary> /// Prepares a builder to be ran in a given build context. /// /// <para>This is the place where a builder can add additional dependencies.</para> /// </summary> /// <param name="context">The current build context</param> public void AddToContext(IBuildContext context) { var moduleName = reference.Uri.Host; var projectName = reference.Uri.AbsolutePath.TrimStart('/'); if (suite.HasModule(moduleName)) { var module = suite.GetModule(moduleName); referencedProject = module.GetProjectOrTestProject(projectName); if (!context.Contains(this)) { if (referencedProject != null) { subtasks = new HashSet <IBuilder>(); context.AddBuilder(this, SubtaskGenerator(context)); } else { throw new InvalidReferenceException(string.Format("Module {0} has no project called {1}", moduleName, projectName)); } } else { subtasks = new HashSet <IBuilder>(context.GetDependencies(this)); } } else { throw new InvalidReferenceException(string.Format("Suite has no module called {0}", moduleName)); } }
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"); }
public void SourceSetsDiscovered() { var fs = CreateFsWithSources(); var suite = new Suite(fs); suite.Modules.Should().BeEmpty(); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); var project = suite.GetModule("Module1").GetProject("Project11"); project.SourceSets.Should().HaveCount(2); project.SourceSets.Should().Contain(set => set.Type == "cs"); project.SourceSets.Should().Contain(set => set.Type == "fs"); var csSet = project.GetSourceSet("cs"); var fsSet = project.GetSourceSet("fs"); csSet.Files.Should().HaveCount(3); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "source1.cs"))); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "source2.cs"))); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "subdir", "source3.cs"))); fsSet.Files.Should().HaveCount(1); fsSet.Files.Should().HaveElementAt(0, new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "fs", "a.fs"))); }
/// <summary> /// Writes the section using an XML writer /// </summary> /// <param name="writer">XML writer to use</param> /// <param name="project">The project to generate .csproj for</param> /// <param name="context">Current .csproj generation context</param> public override void Write(XmlWriter writer, Project project, IMSBuildProjectGeneratorContext context) { writer.WriteStartElement("ItemGroup"); foreach (var refPath in context.References) { if (((string)refPath).StartsWith("SLN!")) { var moduleAndprojectName = ((string)refPath).Substring(4); var parts = moduleAndprojectName.Split('#'); var moduleName = parts[0]; var projectName = parts[1]; var referredProject = Suite.GetModule(moduleName).GetProjectOrTestProject(projectName); if (referredProject.Type == ProjectType.StaticLibrary) { writer.WriteStartElement("ProjectReference"); writer.WriteAttributeString("Include", ToProjectRelativePath(project, Path.Combine(Suite.SuiteRoot.GetRelativePath(referredProject.RootDirectory), "cpp", projectName + ".vcxproj"), "cpp")); writer.WriteElementString("Project", projectGuidManagement.GetGuid(project).ToString("B")); writer.WriteEndElement(); } } } writer.WriteEndElement(); }
public void HasModuleWorksCorrectly() { var suite = new Suite(new TestFileSystemDirectory("root")); suite.HasModule("mod").Should().BeFalse(); suite.GetModule("mod"); suite.HasModule("mod").Should().BeTrue(); }
public void GetModuleCreatesInstanceIfMissing() { var suite = new Suite(new TestFileSystemDirectory("root")); var mod1 = suite.GetModule("mod"); mod1.Should().NotBeNull(); mod1.Name.Should().Be("mod"); }
public CommandTarget ParseTarget(string target) { if (string.IsNullOrEmpty(target)) { return(new FullSuiteTarget(suite)); } else { if (suite.HasProduct(target)) { var product = suite.GetProduct(target); return(new ProductTarget(product)); } if (suite.HasModule(target)) { var module = suite.GetModule(target); return(new ModuleTarget(module)); } else { var matches = new HashSet <Project>(); // Looking for modulename.projectname matches foreach (var module in suite.Modules) { if (target.StartsWith(module.Name + '.', StringComparison.InvariantCultureIgnoreCase)) { string projectName = target.Substring(module.Name.Length + 1); if (module.HasProject(projectName)) { matches.Add(module.GetProject(projectName)); } } } // If there is only one match if (matches.Count == 1) { var project = matches.First(); return(new ProjectTarget(project)); } else { if (matches.Count > 1) { throw new ArgumentException( "The given module and project name identifies more than one projects", "target"); } else { throw new ArgumentException("The given project does not exist", "target"); } } } } }
public void ProductWithExplicitStartupExe() { var mod2 = suite.GetModule("TestModule2"); var alternativeExe = mod2.GetProject("AlternativeExe"); alternativeExe.Type = ProjectType.WindowsExecutable; product.AddModule(mod2); product.AddParameters("startup", new StartupModuleParameters(alternativeExe)); targetParser.Setup(p => p.ParseTarget(It.IsAny <string>())).Returns(new ProductTarget(product)); data.StartupPath.Should().Be(Path.Combine("TestModule2", "AlternativeExe.exe")); }
public void ProjectsDiscovered() { var fs = new TestFileSystemDirectory("root", new TestFileSystemDirectory("src", new TestFileSystemDirectory("Module1", new TestFileSystemDirectory("Project11")), new TestFileSystemDirectory("Module2"), new TestFileSystemDirectory("Module3", new TestFileSystemDirectory("Project31"), new TestFileSystemDirectory("Project32"))), new TestFileSystemDirectory("output")); var suite = new Suite(fs); suite.Modules.Should().BeEmpty(); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); suite.Modules.Should().HaveCount(3); suite.Modules.Should().OnlyContain(m => m.Name == "Module1" || m.Name == "Module2" || m.Name == "Module3"); suite.GetModule("Module1").Projects.Should().HaveCount(1); suite.GetModule("Module1").Projects.Should().Contain(p => p.Name == "Project11"); suite.GetModule("Module2").Projects.Should().HaveCount(0); suite.GetModule("Module3").Projects.Should().HaveCount(2); suite.GetModule("Module3").Projects.Should().Contain(p => p.Name == "Project31"); suite.GetModule("Module3").Projects.Should().Contain(p => p.Name == "Project32"); }
public void ExistingSourcesMergedWithDiscoveredOnes() { var fs = CreateFsWithSources(); var suite = new Suite(fs); var fsSet = suite.GetModule("Module1").GetProject("Project11").GetSourceSet("fs"); var vbSet = suite.GetModule("Module1").GetProject("Project11").GetSourceSet("vb"); fsSet.Add(new SuiteRelativePath("src\\Module1\\Project11\\fs\\b.fs")); vbSet.Add(new SuiteRelativePath("src\\Module1\\Project11\\vb\\x.vb")); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); var project = suite.GetModule("Module1").GetProject("Project11"); project.SourceSets.Should().HaveCount(3); project.SourceSets.Should().Contain(set => set.Type == "cs"); project.SourceSets.Should().Contain(set => set.Type == "fs"); project.SourceSets.Should().Contain(set => set.Type == "vb"); var csSet = project.GetSourceSet("cs"); fsSet = project.GetSourceSet("fs"); vbSet = project.GetSourceSet("vb"); csSet.Files.Should().HaveCount(3); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\source1.cs")); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\source2.cs")); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\subdir\\source3.cs")); fsSet.Files.Should().HaveCount(2); fsSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\fs\\a.fs")); fsSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\fs\\b.fs")); vbSet.Files.Should().HaveCount(1); vbSet.Files.Should().HaveElementAt(0, new SuiteRelativePath("src\\Module1\\Project11\\vb\\x.vb")); }
/// <summary> /// Writes the section using an XML writer /// </summary> /// <param name="writer">XML writer to use</param> /// <param name="project">The project to generate .csproj for</param> /// <param name="context">Current .csproj generation context</param> public override void Write(XmlWriter writer, Project project, IMSBuildProjectGeneratorContext context) { writer.WriteStartElement("ItemGroup"); foreach (var refPath in context.References.Where(IsValidReference)) { if (IsSolutionReference(refPath)) { var moduleAndprojectName = ((string)refPath).Substring(4); var parts = moduleAndprojectName.Split('#'); var moduleName = parts[0]; var projectName = parts[1]; var referredProject = Suite.GetModule(moduleName).GetProjectOrTestProject(projectName); if (referredProject.Type == ProjectType.Library || referredProject.Type == ProjectType.Executable) { writer.WriteComment("Project reference " + projectGuidManagement.GetGuid(referredProject)); writer.WriteStartElement("Reference"); writer.WriteAttributeString("Include", projectName); writer.WriteElementString("HintPath", ToProjectRelativePath(project, Path.Combine(Suite.SuiteRoot.GetRelativePath(targetDir), referredProject.Module.Name, referredProject.Name + ".dll"), sourceSetName)); writer.WriteElementString("SpecificVersion", "False"); writer.WriteEndElement(); } } else { writer.WriteStartElement("Reference"); if (IsGACReference(refPath)) { var assemblyName = ((string)refPath).Substring(4); writer.WriteAttributeString("Include", assemblyName); } else { string relativePath = ToProjectRelativePath(project, Path.Combine("target", refPath), sourceSetName); writer.WriteAttributeString("Include", Path.GetFileNameWithoutExtension(relativePath)); writer.WriteElementString("HintPath", relativePath); writer.WriteElementString("SpecificVersion", "False"); writer.WriteElementString("Private", "True"); } writer.WriteEndElement(); } } writer.WriteEndElement(); }
public void SetUp() { fallback = new Mock<ISlnNameGenerator>(); suite = new Suite(new TestFileSystemDirectory("root")); suiteContents = new DefaultSuiteContentsAnalyzer(suite); generator = new ReadableSlnNameGenerator(fallback.Object, suiteContents); fallback.Setup(f => f.GetName(It.IsAny<IEnumerable<Project>>())).Returns("fallback"); // mod1: proj11, testproj11 // mod2: proj21, proj22 // mod3: proj31 // mod4: proj41 // mod5: proj51 // mod6: proj61 // mod7: proj71 // prod1: mod1, mod2 // prod2: mod2, mod3 mod1 = suite.GetModule("mod1"); mod2 = suite.GetModule("mod2"); mod3 = suite.GetModule("mod3"); mod4 = suite.GetModule("mod4"); mod5 = suite.GetModule("mod5"); mod6 = suite.GetModule("mod6"); mod7 = suite.GetModule("mod7"); mod8 = suite.GetModule("mod8"); proj11 = mod1.GetProject("proj1"); tproj11 = mod1.GetTestProject("test1"); proj21 = mod2.GetProject("proj21"); proj22 = mod2.GetProject("proj22"); proj31 = mod3.GetProject("proj3"); proj41 = mod4.GetProject("proj4"); proj51 = mod5.GetProject("proj5"); proj61 = mod6.GetProject("proj6"); proj71 = mod7.GetProject("proj7"); proj81 = mod8.GetProject("proj8"); tproj81 = mod8.GetTestProject("test8"); prod1 = suite.GetProduct("prod1"); prod1.AddModule(mod1); prod1.AddModule(mod2); prod2 = suite.GetProduct("prod2"); prod2.AddModule(mod2); prod2.AddModule(mod3); }
public void SetUp() { fallback = new Mock <ISlnNameGenerator>(); suite = new Suite(new TestFileSystemDirectory("root")); suiteContents = new DefaultSuiteContentsAnalyzer(suite); generator = new ReadableSlnNameGenerator(fallback.Object, suiteContents); fallback.Setup(f => f.GetName(It.IsAny <IEnumerable <Project> >())).Returns("fallback"); // mod1: proj11, testproj11 // mod2: proj21, proj22 // mod3: proj31 // mod4: proj41 // mod5: proj51 // mod6: proj61 // mod7: proj71 // prod1: mod1, mod2 // prod2: mod2, mod3 mod1 = suite.GetModule("mod1"); mod2 = suite.GetModule("mod2"); mod3 = suite.GetModule("mod3"); mod4 = suite.GetModule("mod4"); mod5 = suite.GetModule("mod5"); mod6 = suite.GetModule("mod6"); mod7 = suite.GetModule("mod7"); mod8 = suite.GetModule("mod8"); proj11 = mod1.GetProject("proj1"); tproj11 = mod1.GetTestProject("test1"); proj21 = mod2.GetProject("proj21"); proj22 = mod2.GetProject("proj22"); proj31 = mod3.GetProject("proj3"); proj41 = mod4.GetProject("proj4"); proj51 = mod5.GetProject("proj5"); proj61 = mod6.GetProject("proj6"); proj71 = mod7.GetProject("proj7"); proj81 = mod8.GetProject("proj8"); tproj81 = mod8.GetTestProject("test8"); prod1 = suite.GetProduct("prod1"); prod1.AddModule(mod1); prod1.AddModule(mod2); prod2 = suite.GetProduct("prod2"); prod2.AddModule(mod2); prod2.AddModule(mod3); }
public void Issue90_SingleProjectProduct() { var s = new Suite(new TestFileSystemDirectory("z")); var m = s.GetModule("m"); var p = m.GetProject("p"); var prod = s.GetProduct("prod"); prod.AddModule(m); var sc = new DefaultSuiteContentsAnalyzer(s); var g = new ReadableSlnNameGenerator(fallback.Object, sc); var name = g.GetName(new[] { p }); name.Should().Be("prod"); }
public void ExistingSourcesMergedWithDiscoveredOnes() { var fs = CreateFsWithSources(); var suite = new Suite(fs); var fsSet = suite.GetModule("Module1").GetProject("Project11").GetSourceSet("fs"); var vbSet = suite.GetModule("Module1").GetProject("Project11").GetSourceSet("vb"); fsSet.Add(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "fs", "b.fs"))); vbSet.Add(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "vb", "x.vb"))); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); var project = suite.GetModule("Module1").GetProject("Project11"); project.SourceSets.Should().HaveCount(3); project.SourceSets.Should().Contain(set => set.Type == "cs"); project.SourceSets.Should().Contain(set => set.Type == "fs"); project.SourceSets.Should().Contain(set => set.Type == "vb"); var csSet = project.GetSourceSet("cs"); fsSet = project.GetSourceSet("fs"); vbSet = project.GetSourceSet("vb"); csSet.Files.Should().HaveCount(3); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "source1.cs"))); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "source2.cs"))); csSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "cs", "subdir", "source3.cs"))); fsSet.Files.Should().HaveCount(2); fsSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "fs", "a.fs"))); fsSet.Files.Should().Contain(new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "fs", "b.fs"))); vbSet.Files.Should().HaveCount(1); vbSet.Files.Should().HaveElementAt(0, new SuiteRelativePath(Path.Combine("src", "Module1", "Project11", "vb", "x.vb"))); }
private static Project CalculateReferencedProject(Suite suite, Module module, Reference r) { switch (r.Uri.Scheme) { case "suite": { var moduleName = r.Uri.Host; var projectName = r.Uri.AbsolutePath.TrimStart('/'); if (suite.HasModule(moduleName)) { module = suite.GetModule(moduleName); var result = module.GetProjectOrTestProject(projectName); if (result == null) { throw new InvalidReferenceException(string.Format("Module {0} has no project called {1}", moduleName, projectName)); } return(result); } else { throw new InvalidReferenceException(string.Format("Suite has no module called {0}", moduleName)); } } case "module": { string projectName = r.Uri.Host; var result = module.GetProjectOrTestProject(projectName); if (result == null) { throw new InvalidReferenceException(string.Format("Module {0} has no project called {1}", module.Name, projectName)); } return(result); } default: throw new InvalidOperationException("Unsupported suite reference type: " + r.Uri.Scheme); } }
public void SetUp() { kernel = new StandardKernel(); Kernel.RegisterCoreBindings(kernel); kernel.Bind<IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("root")).WhenTargetHas <SuiteRootAttribute>(); kernel.Bind<IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("target")).WhenTargetHas <TargetRootAttribute>(); kernel.Bind<IProjectGuidManagement>().To<DefaultProjectGuidManagement>(); suite = kernel.Get<Suite>(); suite.Name = "test suite"; var mod = suite.GetModule("testmod"); project = mod.GetProject("test"); kernel.Bind<Suite>().ToConstant(suite); kernel.Bind<Project>().ToConstant(project); }
public void SetUp() { kernel = new StandardKernel(); Kernel.RegisterCoreBindings(kernel); kernel.Bind <IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("root")).WhenTargetHas <SuiteRootAttribute>(); kernel.Bind <IFileSystemDirectory>().ToConstant(new TestFileSystemDirectory("target")).WhenTargetHas <TargetRootAttribute>(); kernel.Bind <IProjectGuidManagement>().To <DefaultProjectGuidManagement>(); suite = kernel.Get <Suite>(); suite.Name = "test suite"; var mod = suite.GetModule("testmod"); project = mod.GetProject("test"); kernel.Bind <Suite>().ToConstant(suite); kernel.Bind <Project>().ToConstant(project); }
private void LoadProduct(Suite suite, Product product, YamlNode productNode) { Contract.Requires(product != null); Contract.Requires(productNode != null); foreach (KeyValuePair <string, YamlNode> item in parser.EnumerateNamedNodesOf(productNode, "modules")) { if (suite.HasModule(item.Key)) { var module = suite.GetModule(item.Key); product.AddModule(module); } else { output.Warning(String.Format("The product {0} refers to a non-existing module {1}", product.Name, item.Key)); } } SetProjectPostProcessors(suite, product, productNode); LoadParameters(suite, product, productNode); }
public override IProjectParameters Load(Suite suite, string name, YamlNode value, YamlParser parser) { var startupName = ParseString(value); if (suite.HasModule(startupName)) { return(new StartupModuleParameters(suite.GetModule(startupName))); } else { var project = (from module in suite.Modules where module.HasProject(startupName) select module.GetProject(startupName)).FirstOrDefault(); if (project != null) { return(new StartupModuleParameters(project)); } else { return(new StartupModuleParameters()); } } }
private Module FindModule(string module) { return(suite.HasModule(module) ? suite.GetModule(module) : null); }
public void ModulesPartiallyCovered() { var a = new DefaultSuiteContentsAnalyzer(suite); var mod1 = suite.GetModule("mod1"); var mod2 = suite.GetModule("mod2"); var projx = mod1.GetProject("x"); var projy = mod1.GetProject("y"); var matches = a.GetCoveredModules(new[] { projx }); matches.Should().HaveCount(1); matches.First().Partial.Should().BeTrue(); matches.First().Module.Should().Be(mod1); }
private void LoadProduct(Suite suite, Product product, YamlNode productNode) { Contract.Requires(product != null); Contract.Requires(productNode != null); foreach (KeyValuePair<string, YamlNode> item in parser.EnumerateNamedNodesOf(productNode, "modules")) { if (suite.HasModule(item.Key)) { var module = suite.GetModule(item.Key); product.AddModule(module); } else { output.Warning(String.Format("The product {0} refers to a non-existing module {1}", product.Name, item.Key)); } } SetProjectPostProcessors(suite, product, productNode); LoadParameters(suite, product, productNode); }
public void SourceSetsDiscovered() { var fs = CreateFsWithSources(); var suite = new Suite(fs); suite.Modules.Should().BeEmpty(); var discovery = new ModuleProjectDiscovery(fs); discovery.ExtendWithDiscoveries(suite); var project = suite.GetModule("Module1").GetProject("Project11"); project.SourceSets.Should().HaveCount(2); project.SourceSets.Should().Contain(set => set.Type == "cs"); project.SourceSets.Should().Contain(set => set.Type == "fs"); var csSet = project.GetSourceSet("cs"); var fsSet = project.GetSourceSet("fs"); csSet.Files.Should().HaveCount(3); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\source1.cs")); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\source2.cs")); csSet.Files.Should().Contain(new SuiteRelativePath("src\\Module1\\Project11\\cs\\subdir\\source3.cs")); fsSet.Files.Should().HaveCount(1); fsSet.Files.Should().HaveElementAt(0, new SuiteRelativePath("src\\Module1\\Project11\\fs\\a.fs")); }