public void HasModuleWorksCorrectly() { var suite = new Suite(new TestFileSystemDirectory("root")); suite.HasModule("mod").Should().BeFalse(); suite.GetModule("mod"); suite.HasModule("mod").Should().BeTrue(); }
/// <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 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"); } } } } }
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); } }
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 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); }
private Module FindModule(string module) { return(suite.HasModule(module) ? suite.GetModule(module) : null); }