예제 #1
0
        public void Then_the_correct_working_directory_is_selected()
        {
            var castle = packageTree.RetrievePackage("castle");

            castle.Version = "2.1.0";

            Assert.Equal("Working-2.1.0", castle.WorkingDirectory.Name);
        }
예제 #2
0
        protected override void Because()
        {
            packageTree = TreeHelper.GetTempPackageTree();

            buildEngine = new BuildEngineStub(new BuildToolStub(), null, null);

            buildEngine.BuildRootDirectory = "build";

            working = packageTree.RetrievePackage("log4net").WorkingDirectory;

            buildRoot = new DirectoryInfo(Path.Combine(working.FullName,
                                                        buildEngine.BuildRootDirectory));
        }
예제 #3
0
        protected override void Because()
        {
            packageTree = TreeHelper.GetTempPackageTree();

            buildEngine = new BuildEngineStub(new BuildToolStub(), null, null);

            buildEngine.BuildRootDirectory = "build";

            working = packageTree.RetrievePackage("log4net").WorkingDirectory;

            buildRoot = new DirectoryInfo(Path.Combine(working.FullName,
                                                       buildEngine.BuildRootDirectory));
        }
예제 #4
0
        protected override void Because()
        {
            var buildEngine = new BuildEngineStub(new BuildToolStub(), null, null);

            buildEngine.BuildRootDirectory = "build";

            working = packageTree.RetrievePackage("castle").WorkingDirectory;

            var buildRoot = new DirectoryInfo(Path.Combine(working.FullName,
                                                           buildEngine.BuildRootDirectory));

            actual = buildEngine.GetBuildDirectory(buildRoot);

            expected = new DirectoryInfo(Path.Combine(working.FullName, @"build\net-3.5\debug"));
        }
예제 #5
0
        public virtual void Execute(IPackageTree packageTree)
        {
            Initialise();

            LogPackageDetails();

            if (!packageTree.BuildNodes().Select(x => x.Name).ToList().Contains(commandArgs.PackageName))
                throw new UnknownInstallPackageException(string.Format("No package definition exists for {0}.", commandArgs.PackageName));

            IPackageTree componentTree = packageTree.RetrievePackage(commandArgs);

            IDependencyTree dependencyTree = GetDependencyTree(componentTree);

            BuildDependencyTree(packageTree, dependencyTree);

            log.InfoFormat("\nHorn has finished installing {0}.\n\n".ToUpper(), commandArgs.PackageName);
        }
예제 #6
0
        public virtual void Execute(IPackageTree packageTree)
        {
            Initialise();

            LogPackageDetails();

            if (!packageTree.BuildNodes().Select(x => x.Name).ToList().Contains(commandArgs.PackageName))
            {
                throw new UnknownInstallPackageException(string.Format("No package definition exists for {0}.", commandArgs.PackageName));
            }

            IPackageTree componentTree = packageTree.RetrievePackage(commandArgs);

            IDependencyTree dependencyTree = GetDependencyTree(componentTree);

            BuildDependencyTree(packageTree, dependencyTree);

            log.InfoFormat("\nHorn has finished installing {0}.\n\n".ToUpper(), commandArgs.PackageName);
        }
예제 #7
0
        private BuildTree CalculateDependencies(IPackageTree packageTree, BuildTree currentTree)
        {
            if (currentTree == null)
            {
                currentTree = new BuildTree(packageTree);
            }
            else
            {
                if (HasACircularDependency(currentTree, packageTree))
                {
                    throw new CircularDependencyException(packageTree.Name);
                }

                InsertDependenciesBeforeParent(currentTree, packageTree);
            }

            var buildMetaData = packageTree.GetBuildMetaData(packageTree.Name);

            var buildEngine = buildMetaData.BuildEngine;

            var dependencies = buildEngine.Dependencies;

            foreach (var dependency in dependencies)
            {
                var package = packageTree.RetrievePackage(dependency);

                if (package is NullPackageTree)
                {
                    throw new UnknownInstallPackageException(string.Format("No package definition exists for dependent package {0}, which is required by {1}.", dependency.PackageName, packageTree.FullName));
                }

                CalculateDependencies(package, currentTree);
            }

            return(currentTree);
        }
예제 #8
0
 private IPackageTree GetPackageForCurrentDependency(IPackageTree packageTree, Dependency dependency)
 {
     return packageTree.RetrievePackage(dependency.PackageName);
 }
예제 #9
0
 private IPackageTree GetPackageForCurrentDependency(IPackageTree packageTree, Dependency dependency)
 {
     return(packageTree.RetrievePackage(dependency.PackageName));
 }
예제 #10
0
        private BuildTree CalculateDependencies(IPackageTree packageTree, BuildTree currentTree)
        {
            if (currentTree == null)
            {
                currentTree = new BuildTree(packageTree);
            }
            else
            {
                if (HasACircularDependency(currentTree, packageTree))
                {
                    throw new CircularDependencyException(packageTree.Name);
                }

                InsertDependenciesBeforeParent(currentTree, packageTree);
            }

            var buildMetaData = packageTree.GetBuildMetaData(packageTree.Name);

            var buildEngine = buildMetaData.BuildEngine;

            var dependencies = buildEngine.Dependencies;

            foreach (var dependency in dependencies)
            {
                var package = packageTree.RetrievePackage(dependency);

                if (package is NullPackageTree)
                    throw new UnknownInstallPackageException(string.Format("No package definition exists for dependent package {0}, which is required by {1}.", dependency.PackageName, packageTree.FullName));

                CalculateDependencies(package, currentTree);
            }

            return currentTree;
        }
예제 #11
0
        public void Then_Horn_Retrieves_The_Build_File_From_The_Structure()
        {
            var metaData = hornTree.RetrievePackage("horn").GetBuildMetaData("horn");

            BaseDSLSpecification.AssertBuildMetaDataValues(metaData);
        }
예제 #12
0
 public void Then_A_Null_Package_Tree_Object_Is_Returned()
 {
     Assert.IsType <NullPackageTree>(hornTree.RetrievePackage("unkownpackage"));
 }