protected override void Because()
        {
            rootBuildMetaData = CreateStub<IBuildMetaData>();
            dependencyBuildMetaData = CreateStub<IBuildMetaData>();

            var simpleDependency = new Dependency("simpleDependency", "simpleDependency.boo");
            var rootDependency = new Dependency("root", "root.boo");

            rootBuildMetaData.BuildEngine = new BuildEngine(new BuildToolStub(), "root.boo", Horn.Core.Utils.Framework.FrameworkVersion.FrameworkVersion35, CreateStub<IDependencyDispatcher>());
            rootBuildMetaData.BuildEngine.Dependencies.Add(simpleDependency);
            dependencyBuildMetaData.BuildEngine = new BuildEngine(new BuildToolStub(), "simpleDependency.boo", Utils.Framework.FrameworkVersion.FrameworkVersion35, CreateStub<IDependencyDispatcher>());
            dependencyBuildMetaData.BuildEngine.Dependencies.Add(rootDependency);

            packageTree = CreateStub<IPackageTree>();
            packageTree.Stub(x => x.Name).Return("root");
            packageTree.Stub(x => x.GetBuildMetaData("root")).Return(rootBuildMetaData);

            dependentTree = CreateStub<IPackageTree>();
            dependentTree.Stub(x => x.Name).Return("simpleDependency");
            dependentTree.Stub(x => x.GetBuildMetaData("simpleDependency")).Return(dependencyBuildMetaData);

            packageTree.Stub(x => x.RetrievePackage(simpleDependency)).Return(dependentTree);
            packageTree.Stub(x => x.RetrievePackage(rootDependency)).Return(packageTree);
            dependentTree.Stub(x => x.RetrievePackage(simpleDependency)).Return(dependentTree);
            dependentTree.Stub(x => x.RetrievePackage(rootDependency)).Return(packageTree);
        }
예제 #2
0
        private IPackageTree GetComponentTree(out IBuildMetaData buildMetaData)
        {
            var baseConfigReader = CreateStub <BooConfigReader>();

            baseConfigReader.BuildMetaData.InstallName = "horn";

            var componentTree = CreateStub <IPackageTree>();

            var tempDirectory = new DirectoryInfo(DirectoryHelper.GetTempDirectoryName());

            componentTree.Stub(x => x.WorkingDirectory).Return(tempDirectory).Repeat.Any();

            componentTree.Stub(x => x.GetRevisionData()).Return(new RevisionData("3"));

            buildMetaData = GetBuildMetaData(baseConfigReader);

            componentTree.Stub(x => x.GetBuildMetaData("horn")).Return(buildMetaData);

            componentTree.Stub(x => x.Name).Return("log4net");

            componentTree.Stub(x => x.Result).Return(new DirectoryInfo(@"C:\somewhere\build_root_dir"));

            componentTree.Stub(x => x.GetBuildMetaData("log4net"))
            .Return(buildMetaData).IgnoreArguments().Repeat.Any();

            return(componentTree);
        }
예제 #3
0
        protected override void Because()
        {
            rootBuildMetaData       = CreateStub <IBuildMetaData>();
            dependencyBuildMetaData = CreateStub <IBuildMetaData>();

            var simpleDependency = new Dependency("simpleDependency", "simpleDependency.boo");
            var rootDependency   = new Dependency("root", "root.boo");

            rootBuildMetaData.BuildEngine = new BuildEngine(new BuildToolStub(), "root.boo", Horn.Core.Utils.Framework.FrameworkVersion.FrameworkVersion35, CreateStub <IDependencyDispatcher>());
            rootBuildMetaData.BuildEngine.Dependencies.Add(simpleDependency);
            dependencyBuildMetaData.BuildEngine = new BuildEngine(new BuildToolStub(), "simpleDependency.boo", Utils.Framework.FrameworkVersion.FrameworkVersion35, CreateStub <IDependencyDispatcher>());
            dependencyBuildMetaData.BuildEngine.Dependencies.Add(rootDependency);

            packageTree = CreateStub <IPackageTree>();
            packageTree.Stub(x => x.Name).Return("root");
            packageTree.Stub(x => x.GetBuildMetaData("root")).Return(rootBuildMetaData);

            dependentTree = CreateStub <IPackageTree>();
            dependentTree.Stub(x => x.Name).Return("simpleDependency");
            dependentTree.Stub(x => x.GetBuildMetaData("simpleDependency")).Return(dependencyBuildMetaData);

            packageTree.Stub(x => x.RetrievePackage(simpleDependency)).Return(dependentTree);
            packageTree.Stub(x => x.RetrievePackage(rootDependency)).Return(packageTree);
            dependentTree.Stub(x => x.RetrievePackage(simpleDependency)).Return(dependentTree);
            dependentTree.Stub(x => x.RetrievePackage(rootDependency)).Return(packageTree);
        }
예제 #4
0
 public PackageTreeStub(IBuildMetaData buildMetaData, string name, bool useInternalDictionary)
 {
     this.buildMetaData         = buildMetaData;
     this.name                  = name;
     this.useInternalDictionary = useInternalDictionary;
     BaseDirectory              = AppDomain.CurrentDomain.BaseDirectory;
 }
예제 #5
0
        protected virtual void ExecuteRepositoryElementList(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            if (!buildMetaData.RepositoryElementList.HasElements())
            {
                return;
            }

            foreach (var repositoryElement in buildMetaData.RepositoryElementList)
            {
                repositoryElement.PrepareRepository(componentTree, get).Export();
            }
        }
예제 #6
0
        public override void before_each_spec()
        {
            var dependencyResolver = MockRepository.GenerateStub <IDependencyResolver>();

            fileSystemProvider = MockRepository.GenerateStub <IFileSystemProvider>();
            packageBuilder     = MockRepository.GenerateStub <IPackageCommand>();
            rootPackageTree    = MockRepository.GenerateStub <IPackageTree>();
            buildMetaData      = MockRepository.GenerateStub <IBuildMetaData>();

            commandArgs = new CommandArgs("horn", false, null, false, null);

            dependencyResolver.Stub(x => x.HasComponent <ICommandArgs>()).Return(true);

            dependencyResolver.Stub(x => x.Resolve <ICommandArgs>()).Return(commandArgs);

            dependencyResolver.Stub(x => x.Resolve <IPackageCommand>("install")
                                    ).Return(packageBuilder);

            IoC.InitializeWith(dependencyResolver);

            rootPackageTree.Stub(x => x.Result).Return(new DirectoryInfo(@"z:\horn"));

            buildMetaData.ProjectInfo = new Dictionary <string, object>();

            rootPackageTree.Stub(x => x.GetAllPackageMetaData()).Return(new List <IBuildMetaData> {
                buildMetaData
            });

            rootPackageTree.Stub(x => x.Name).Return("horn");

            var category = new Category(null, rootPackageTree);

            fileSystemProvider.Stub(x => x.GetFiles(Arg <DirectoryInfo> .Is.TypeOf, Arg <string> .Is.TypeOf)).Return(
                new List <FileInfo>
            {
                new FileInfo(string.Format("horn-{0}.zip",
                                           new DateTime(2009, 10, 30).ToString(FileSystemProvider.FileDateFormat))),
                new FileInfo(string.Format("horn-{0}.zip",
                                           new DateTime(2009, 10, 29).ToString(FileSystemProvider.FileDateFormat))),
                new FileInfo(string.Format("horn-{0}.zip",
                                           new DateTime(2009, 10, 31).ToString(FileSystemProvider.FileDateFormat)))
            }.ToArray());

            package = new PackageDouble(category, buildMetaData);

            string zipFileName = string.Format("{0}-{1}.zip", package.Name, DateTime.Now.ToString(FileSystemProvider.FileDateFormat));

            fileSystemProvider.Stub(
                x => x.ZipFolder(Arg <DirectoryInfo> .Is.TypeOf, Arg <DirectoryInfo> .Is.TypeOf, Arg <string> .Is.TypeOf)).
            Return(new FileInfo(zipFileName));
        }
예제 #7
0
        protected virtual void ExecutePrebuildCommands(IBuildMetaData metaData, IPackageTree packageTree)
        {
            packageTree.PatchPackage();

            if (!metaData.PrebuildCommandList.HasElements())
            {
                return;
            }

            foreach (var command in metaData.PrebuildCommandList)
            {
                processFactory.ExcuteCommand(command, packageTree.WorkingDirectory.FullName);
            }
        }
예제 #8
0
        protected override void establish_context()
        {
            var horn = new Category(null, "orm");

            nhibernate = new Category(horn, "nhibernate");

            buildMetaData = TreeHelper.GetPackageTreeParts(new List <Dependency>());

            buildMetaData.InstallName = "nhibernate";

            buildMetaData.Version = "trunk";

            buildMetaData.ProjectInfo.Add("forum", "http://groups.google.co.uk/group/nhusers?hl=en");
        }
예제 #9
0
        protected override void establish_context()
        {
            var horn = new Category(null, "orm");

            nhibernate = new Category(horn, "nhibernate");

            buildMetaData = TreeHelper.GetPackageTreeParts(new List<Dependency>());

            buildMetaData.InstallName = "nhibernate";

            buildMetaData.Version = "trunk";

            buildMetaData.ProjectInfo.Add("forum", "http://groups.google.co.uk/group/nhusers?hl=en");
        }
예제 #10
0
        protected virtual void RetrieveSourceCode(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            ExecuteRepositoryElementList(buildMetaData, componentTree);

            ExecuteExportList(buildMetaData, componentTree);

            if (buildMetaData.SourceControl == null)
            {
                return;
            }

            log.InfoFormat("\nHorn is fetching {0}.\n\n".ToUpper(), buildMetaData.SourceControl.Url);

            get.From(buildMetaData.SourceControl).ExportTo(componentTree);
        }
예제 #11
0
        public override void before_each_spec()
        {
            var dependencyResolver = MockRepository.GenerateStub<IDependencyResolver>();
            fileSystemProvider = MockRepository.GenerateStub<IFileSystemProvider>();
            packageBuilder = MockRepository.GenerateStub<IPackageCommand>();
            rootPackageTree = MockRepository.GenerateStub<IPackageTree>();
            buildMetaData = MockRepository.GenerateStub<IBuildMetaData>();

            commandArgs = new CommandArgs("horn", false, null, false, null);

            dependencyResolver.Stub(x => x.HasComponent<ICommandArgs>()).Return(true);

            dependencyResolver.Stub(x => x.Resolve<ICommandArgs>()).Return(commandArgs);

            dependencyResolver.Stub(x => x.Resolve<IPackageCommand>("install")
                ).Return(packageBuilder);

            IoC.InitializeWith(dependencyResolver);

            rootPackageTree.Stub(x => x.Result).Return(new DirectoryInfo(@"z:\horn"));

            buildMetaData.ProjectInfo= new Dictionary<string, object>();

            rootPackageTree.Stub(x => x.GetAllPackageMetaData()).Return(new List<IBuildMetaData> {buildMetaData});

            rootPackageTree.Stub(x => x.Name).Return("horn");

            var category = new Category(null, rootPackageTree);

            fileSystemProvider.Stub(x => x.GetFiles(Arg<DirectoryInfo>.Is.TypeOf, Arg<string>.Is.TypeOf)).Return(
                new List<FileInfo>
                    {
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 30).ToString(FileSystemProvider.FileDateFormat))),
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 29).ToString(FileSystemProvider.FileDateFormat))),
                        new FileInfo(string.Format("horn-{0}.zip",
                                                   new DateTime(2009, 10, 31).ToString(FileSystemProvider.FileDateFormat)))
                    }.ToArray());

            package = new PackageDouble(category, buildMetaData);

            string zipFileName = string.Format("{0}-{1}.zip", package.Name, DateTime.Now.ToString(FileSystemProvider.FileDateFormat));

            fileSystemProvider.Stub(
                x => x.ZipFolder(Arg<DirectoryInfo>.Is.TypeOf, Arg<DirectoryInfo>.Is.TypeOf, Arg<string>.Is.TypeOf)).
                Return(new FileInfo(zipFileName));
        }
예제 #12
0
        protected virtual void ExecuteExportList(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            if (!buildMetaData.ExportList.HasElements())
                return;

            var initialise = true;

            foreach (var sourceControl in buildMetaData.ExportList)
            {
                log.InfoFormat("\nHorn is fetching {0}.\n\n".ToUpper(), sourceControl.Url);

                get.From(sourceControl).ExportTo(componentTree, sourceControl.ExportPath, initialise);

                initialise = false;
            }
        }
예제 #13
0
        protected virtual void BuildDependencyTree(IPackageTree packageTree, IDependencyTree dependencyTree)
        {
            foreach (var nextTree in dependencyTree)
            {
                IBuildMetaData nextMetaData = GetBuildMetaData(nextTree);

                if (!commandArgs.RebuildOnly)
                {
                    RetrieveSourceCode(nextMetaData, nextTree);
                }

                ExecutePrebuildCommands(nextMetaData, nextTree);

                BuildSource(nextTree, nextMetaData);
            }
        }
예제 #14
0
        public Package(Category parent, IBuildMetaData buildMetaData)
        {
            Contents = new List <PackageFile>();

            Name = parent.Name;

            Version = buildMetaData.Version;

            MetaData = new List <MetaData>();

            Parent = parent;

            foreach (var projectInfo in buildMetaData.ProjectInfo)
            {
                MetaData.Add(new MetaData(projectInfo.Key, projectInfo.Value.ToString()));
            }
        }
예제 #15
0
파일: Package.cs 프로젝트: kkozmic/horn_src
        public Package(Category parent, IBuildMetaData buildMetaData)
        {
            Contents = new List<PackageFile>();

            Name = parent.Name;

            Version = buildMetaData.Version;

            MetaData = new List<MetaData>();

            Parent = parent;

            foreach (var projectInfo in buildMetaData.ProjectInfo)
            {
                MetaData.Add(new MetaData(projectInfo.Key, projectInfo.Value.ToString()));
            }
        }
예제 #16
0
        public static void AssertBuildMetaDataValues(IBuildMetaData metaData)
        {
            Assert.IsAssignableFrom<SVNSourceControl>(metaData.SourceControl);

            Assert.Equal(SvnUrl, metaData.SourceControl.Url);

            Assert.IsAssignableFrom<MSBuildBuildTool>(metaData.BuildEngine.BuildTool);

            //TODO: Uncomment.  The metadata is currently not being parsed from the BooConfigReader
            //Assert.Equal(MetaData.Count, metaData.ProjectInfo.Count);
            //MetaData.ForEach(x => Assert.Contains(x, metaData.ProjectInfo));

            Assert.Equal(BuildFile, metaData.BuildEngine.BuildFile);

            Assert.Equal(OutputDirectory, metaData.BuildEngine.BuildRootDirectory);

            Assert.Equal(".", metaData.BuildEngine.SharedLibrary);
        }
예제 #17
0
        protected virtual void ExecuteExportList(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            if (!buildMetaData.ExportList.HasElements())
            {
                return;
            }

            var initialise = true;

            foreach (var sourceControl in buildMetaData.ExportList)
            {
                log.InfoFormat("\nHorn is fetching {0}.\n\n".ToUpper(), sourceControl.Url);

                get.From(sourceControl).ExportTo(componentTree, sourceControl.ExportPath, initialise);

                initialise = false;
            }
        }
예제 #18
0
        public static void AssertBuildMetaDataValues(IBuildMetaData metaData)
        {
            Assert.IsAssignableFrom <SVNSourceControl>(metaData.SourceControl);

            Assert.Equal(SvnUrl, metaData.SourceControl.Url);

            Assert.IsAssignableFrom <MSBuildBuildTool>(metaData.BuildEngine.BuildTool);

            //TODO: Uncomment.  The metadata is currently not being parsed from the BooConfigReader
            //Assert.Equal(MetaData.Count, metaData.ProjectInfo.Count);
            //MetaData.ForEach(x => Assert.Contains(x, metaData.ProjectInfo));

            Assert.Equal(BuildFile, metaData.BuildEngine.BuildFile);

            Assert.Equal(OutputDirectory, metaData.BuildEngine.BuildRootDirectory);

            Assert.Equal(".", metaData.BuildEngine.SharedLibrary);
        }
 public PackageBuilderWithOnlyPrebuildStub(IGet get, IProcessFactory processFactory, ICommandArgs commandArgs, IBuildMetaData buildMetaData)
     : base(get, processFactory, commandArgs)
 {
     this.buildMetaData = buildMetaData;
 }
예제 #20
0
        protected virtual void BuildSource(IPackageTree nextTree, IBuildMetaData nextMetaData)
        {
            log.InfoFormat("\nHorn is building {0}.\n\n".ToUpper(), nextMetaData.InstallName);

            nextMetaData.BuildEngine.Build( processFactory, nextTree, commandArgs.Mode );
        }
예제 #21
0
        protected virtual void RetrieveSourceCode(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            ExecuteRepositoryElementList(buildMetaData, componentTree);

            ExecuteExportList(buildMetaData, componentTree);

            if (buildMetaData.SourceControl == null)
                return;

            log.InfoFormat("\nHorn is fetching {0}.\n\n".ToUpper(), buildMetaData.SourceControl.Url);

            get.From(buildMetaData.SourceControl).ExportTo(componentTree);
        }
예제 #22
0
        protected virtual void ExecuteRepositoryElementList(IBuildMetaData buildMetaData, IPackageTree componentTree)
        {
            if (!buildMetaData.RepositoryElementList.HasElements())
                return;

            foreach (var repositoryElement in buildMetaData.RepositoryElementList)
            {
                repositoryElement.PrepareRepository(componentTree, get).Export();
            }
        }
예제 #23
0
        protected virtual void ExecutePrebuildCommands(IBuildMetaData metaData, IPackageTree packageTree)
        {
            packageTree.PatchPackage();

            if (!metaData.PrebuildCommandList.HasElements())
                return;

            foreach (var command in metaData.PrebuildCommandList)
            {
                processFactory.ExcuteCommand(command, packageTree.WorkingDirectory.FullName);
            }
        }
예제 #24
0
 public PackageDouble(Category parent, IBuildMetaData buildMetaData) : base(parent, buildMetaData)
 {
 }
예제 #25
0
 protected override void Because()
 {
     buildMetaData = GetBuildMetaDataInstance();
 }
예제 #26
0
 protected BooConfigReader()
 {
     buildMetaData = new BuildMetaData();
     Global.package.PackageInfo.Clear();
 }
예제 #27
0
 protected BooConfigReader()
 {
     buildMetaData = new BuildMetaData();
     Global.package.PackageInfo.Clear();
 }
예제 #28
0
 public PackageDouble(Category parent, IBuildMetaData buildMetaData)
     : base(parent, buildMetaData)
 {
 }
예제 #29
0
 protected override void BuildSource(IPackageTree nextTree, IBuildMetaData nextMetaData)
 {
     Console.WriteLine(string.Format("Building {0}", nextMetaData.InstallName));
 }
예제 #30
0
 public PackageBuilderWithOnlyPrebuildStub(IGet get, IProcessFactory processFactory, ICommandArgs commandArgs, IBuildMetaData buildMetaData) : base(get, processFactory, commandArgs)
 {
     this.buildMetaData = buildMetaData;
 }
 protected override void Because()
 {
     buildMetaData = GetBuildMetaDataInstance();
 }
        private IPackageTree GetComponentTree(out IBuildMetaData buildMetaData)
        {
            var baseConfigReader = CreateStub<BooConfigReader>();

            baseConfigReader.BuildMetaData.InstallName = "horn";

            var componentTree = CreateStub<IPackageTree>();

            var tempDirectory = new DirectoryInfo(DirectoryHelper.GetTempDirectoryName());

            componentTree.Stub(x => x.WorkingDirectory).Return(tempDirectory).Repeat.Any();

            componentTree.Stub(x => x.GetRevisionData()).Return(new RevisionData("3"));

            buildMetaData = GetBuildMetaData(baseConfigReader);

            componentTree.Stub(x => x.GetBuildMetaData("horn")).Return(buildMetaData);

            componentTree.Stub(x => x.Name).Return("log4net");

            componentTree.Stub(x => x.Result).Return(new DirectoryInfo(@"C:\somewhere\build_root_dir"));

            componentTree.Stub(x => x.GetBuildMetaData("log4net"))
                         .Return(buildMetaData).IgnoreArguments().Repeat.Any();

            return componentTree;
        }
예제 #33
0
        protected virtual void BuildSource(IPackageTree nextTree, IBuildMetaData nextMetaData)
        {
            log.InfoFormat("\nHorn is building {0}.\n\n".ToUpper(), nextMetaData.InstallName);

            nextMetaData.BuildEngine.Build(processFactory, nextTree, commandArgs.Mode);
        }
예제 #34
0
 protected override void BuildSource(IPackageTree nextTree, IBuildMetaData nextMetaData)
 {
     Console.WriteLine(string.Format("Building {0}", nextMetaData.InstallName));
 }