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);
        }
        public void Execute(IPackageTree packageTree, IEnumerable<string> dependencyPaths, Dependency dependency)
        {
            if (!HasADependencyToUpdate(dependencyPaths))
                return;

            InfoFormat("Dependency: Executing Dependency Updaters for {0}", packageTree.Name);

            var dependentUpdaterContext = new DependentUpdaterContext(packageTree, dependencyPaths, dependency);
            updaters.ForEach(updater => updater.Update(dependentUpdaterContext));
        }
예제 #3
0
        private FileInfo[] GetDependencyFiles(Dependency dependency, IPackageTree packageForCurrentDependency)
        {
            DirectoryInfo dependencyDirectory = packageForCurrentDependency.Result;

            var files =  dependencyDirectory.GetFiles(string.Format("{0}.*", dependency.Library));

            var ret = new List<FileInfo>();

            files.ForEach(file =>
                              {
                                  var extension =
                                      Path.GetFileName(file.FullName).Substring(dependency.Library.Length);

                                  if (AllowedExtensions.Contains(extension))
                                      ret.Add(file);
                              });

            return ret.ToArray();
        }
예제 #4
0
        public static IPackageTree CreatePackageTreeNode(string packageName, string[] dependencyNames)
        {
            var buildMetaData = MockRepository.GenerateStub<IBuildMetaData>();
            buildMetaData.BuildEngine = new BuildEngine(new BuildToolStub(), String.Format("{0}.boo", packageName), Core.Utils.Framework.FrameworkVersion.FrameworkVersion35, MockRepository.GenerateStub<IDependencyDispatcher>());
            foreach (string dependencyName in dependencyNames)
            {
                var dependency = new Dependency(dependencyName, dependencyName);

                buildMetaData.BuildEngine.Dependencies.Add(dependency);
            }

            var packageTree = MockRepository.GenerateStub<IPackageTree>();
            packageTree.Stub(x => x.Name).Return(packageName);
            packageTree.Stub(x => x.GetBuildMetaData("root")).Return(buildMetaData).Repeat.Any();
            packageTree.Stub(x => x.GetBuildMetaData("complexDependency")).Return(buildMetaData).Repeat.Any();
            packageTree.Stub(x => x.GetBuildMetaData("sharedDependency")).Return(buildMetaData).Repeat.Any();

            return packageTree;
        }
예제 #5
0
 private IPackageTree GetPackageForCurrentDependency(IPackageTree packageTree, Dependency dependency)
 {
     return packageTree.RetrievePackage(dependency.PackageName);
 }
예제 #6
0
 public IPackageTree RetrievePackage(Dependency dependency)
 {
     throw new NullTreeException();
 }
예제 #7
0
 public DependentUpdaterContext(IPackageTree package, IEnumerable<string> dependencyPaths, Dependency dependency)
 {
     this.package = package;
     this.dependencyPaths = dependencyPaths;
     this.dependency = dependency;
 }
예제 #8
0
 public virtual IPackageTree RetrievePackage(Dependency dependency)
 {
     return RetrievePackage(dependency.PackageName, dependency.Version);
 }