Пример #1
0
        public void GetProductNameExactMatch()
        {
            var a     = new DefaultSuiteContentsAnalyzer(suite);
            var mod1  = suite.GetModule("mod1");
            var mod2  = suite.GetModule("mod2");
            var mod3  = suite.GetModule("mod3");
            var prod1 = suite.GetProduct("prod1");

            prod1.AddModule(mod2);
            prod1.AddModule(mod3);

            a.GetProductName(new[] { mod3, mod2 }).Should().Be("prod1");
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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");
                        }
                    }
                }
            }
        }
Пример #5
0
        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");
        }
Пример #6
0
        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 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"));
        }
Пример #8
0
        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"));
        }
Пример #9
0
 private void PackProduct(Suite suite, string productName)
 {
     if (suite.HasProduct(productName))
     {
         var product = suite.GetProduct(productName);
         if (product.Packager != null)
         {
             var packager = productPackagerFactory.CreateProductPackager(product.Packager.PackagerType);
             packager.Pack(product, GetProductOutputs(product));
         }
         else
         {
             throw new InvalidCommandParameterException("pack", "The product has no packager definition!");
         }
     }
     else
     {
         throw new InvalidCommandParameterException("pack", String.Format("Product {0} is not defined!", productName));
     }
 }
Пример #10
0
 private void PublishProduct(Suite suite, string productName)
 {
     if (suite.HasProduct(productName))
     {
         var product = suite.GetProduct(productName);
         if (product.Packager != null)
         {
             var packager = productPackagerFactory.CreateProductPackager(product.Packager.PackagerType);
             packager.Publish(product);
         }
         else
         {
             throw new InvalidCommandParameterException("publish", "The product has no packager definition!");
         }
     }
     else
     {
         throw new InvalidCommandParameterException("publish", String.Format("Product {0} is not defined!", productName));
     }
 }
Пример #11
0
        private IBuilder RunPostProcessors(IBuildContext context, Project[] prjs, IBuilder input)
        {
            var modules = prjs.Select(p => p.Module).Distinct().ToList();
            var postProcessableItems = prjs.Concat(modules.Cast <IPostProcessorsHolder>()).ToList();
            var productName          = analyzer.GetProductName(modules);

            if (productName != null)
            {
                postProcessableItems.Add(suite.GetProduct(productName));
            }

            var factories      = postProcessorFactories.ToList();
            var resultBuilders = new List <IPostProcessor>();

            foreach (var ppHolder in postProcessableItems)
            {
                foreach (var pp in ppHolder.PostProcessors)
                {
                    var postProcessor =
                        factories.Select(f => f.CreatePostProcessorFor(ppHolder, pp, new [] { input })).FirstOrDefault(p => p != null);
                    if (postProcessor != null)
                    {
                        postProcessor.AddToContext(context);
                        resultBuilders.Add(postProcessor);
                    }
                }
            }

            if (resultBuilders.Count == 0)
            {
                return(input);
            }
            else
            {
                var merger = new MergingBuilder(resultBuilders.Concat(new[] { input }));
                merger.AddToContext(context);
                return(merger);
            }
        }