コード例 #1
0
 private static void InvokeTask(ITargetBuilderBounce bounce, IBounceCommand command, string name, IObsoleteTask task)
 {
     using (var targetScope = bounce.TaskScope(task, command, name)) {
         bounce.Invoke(command, task);
         targetScope.TaskSucceeded();
     }
 }
コード例 #2
0
ファイル: TargetInvokerTest.cs プロジェクト: t3hc13h/bounce
        public void ShouldCleanDependenciesAndTheirDependenciesAfterBuildIfMarkedSo()
        {
            var artefacts = new HashSet <string>();

            var d     = new FakeArtefactTaskWithDependencies(artefacts, "d");
            var a     = new FakeArtefactTaskWithDependencies(artefacts, "a");
            var b     = new FakeArtefactTaskWithDependencies(artefacts, "b", new[] { new TaskDependency(d) });
            var cDeps = new[] { new TaskDependency(a), new TaskDependency(b)
                                {
                                    CleanAfterBuild = true
                                } };
            var c = new FakeArtefactTaskWithDependencies(artefacts, "c", cDeps);

            ITargetBuilderBounce bounce = GetBounce();

            var invoker       = new TargetInvoker(bounce);
            var bounceCommand = new BounceCommandParser().BuildAndClean;

            invoker.Invoke(bounceCommand, c);
            invoker.CleanAfterBuild(bounceCommand);

            Assert.That(artefacts, Has.Member("a"));
            Assert.That(artefacts, Has.No.Member("b"));
            Assert.That(b.Invoked);
            Assert.That(artefacts, Has.Member("c"));
            Assert.That(artefacts, Has.No.Member("d"));
            Assert.That(d.Invoked);
        }
コード例 #3
0
ファイル: TargetsBuilder.cs プロジェクト: haos11/bounce
 private static void InvokeTask(ITargetBuilderBounce bounce, IBounceCommand command, string name, ITask task)
 {
     using (var targetScope = bounce.TaskScope(task, command, name)) {
         bounce.Invoke(command, task);
         targetScope.TaskSucceeded();
     }
 }
コード例 #4
0
ファイル: TargetsBuilder.cs プロジェクト: nbucket/bounce
 public void BuildTargets(ITargetBuilderBounce bounce, IEnumerable<Target> targets, IBounceCommand command) {
     foreach (var target in targets) {
         if (target.Task != null) {
             InvokeTask(bounce, command, target.Name, target.Task);
         }
     }
 }
コード例 #5
0
 public TargetInvoker(ITargetBuilderBounce bounce)
 {
     BuiltTasks = new HashSet <IObsoleteTask>();
     Bounce     = bounce;
     Walker     = new TaskWalker();
     CleanAfterBuildRegister = new CleanAfterBuildRegister();
     OnceOnlyCleaner         = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
     OnceOnlyBuilder         = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
     OnceOnlyDescriber       = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
 }
コード例 #6
0
ファイル: TargetInvoker.cs プロジェクト: nbucket/bounce
 public TargetInvoker(ITargetBuilderBounce bounce)
 {
     BuiltTasks = new HashSet<IObsoleteTask>();
     Bounce = bounce;
     Walker = new TaskWalker();
     CleanAfterBuildRegister = new CleanAfterBuildRegister();
     OnceOnlyCleaner = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
     OnceOnlyBuilder = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
     OnceOnlyDescriber = new OnceOnlyTaskInvoker((task, command) => InvokeAndLog(task, command));
 }
コード例 #7
0
 public void BuildTargets(ITargetBuilderBounce bounce, IEnumerable <Target> targets, IBounceCommand command)
 {
     foreach (var target in targets)
     {
         if (target.Task != null)
         {
             InvokeTask(bounce, command, target.Name, target.Task);
         }
     }
 }
コード例 #8
0
ファイル: TargetInvokerTest.cs プロジェクト: t3hc13h/bounce
        public void EachTaskShouldDescribeThemSelvesBeforeBuild()
        {
            var dependent  = new FakeDescribingTask("one");
            var dependency = new FakeDescribingTask("two");

            dependent.Dependencies = new[] { new TaskDependency(dependency) };

            ITargetBuilderBounce bounce = GetBounce();

            var builder = new TargetInvoker(bounce);

            builder.Invoke(new BounceCommandParser().Build, dependent);

            Assert.That(bounce.DescriptionOutput.ToString(), Is.EqualTo(@"two;one;"));
        }
コード例 #9
0
ファイル: TargetInvokerTest.cs プロジェクト: t3hc13h/bounce
        public void ShouldOnlyBuildTasksOnceEvenIfTheyAreDependedUponTwice()
        {
            var all                     = new Mock <IObsoleteTask>();
            var dependent1              = new Mock <IObsoleteTask>();
            var dependent2              = new Mock <IObsoleteTask>();
            var twiceADependency        = new Mock <IObsoleteTask>();
            ITargetBuilderBounce bounce = GetBounce();

            all.Setup(d => d.Dependencies).Returns(new[] { new TaskDependency(dependent1.Object), new TaskDependency(dependent2.Object) });
            dependent1.Setup(d => d.Dependencies).Returns(new[] { new TaskDependency(twiceADependency.Object) });
            dependent2.Setup(d => d.Dependencies).Returns(new[] { new TaskDependency(twiceADependency.Object) });

            var invoker       = new TargetInvoker(bounce);
            var bounceCommand = new BounceCommandParser().Build;

            invoker.Invoke(bounceCommand, all.Object);

            twiceADependency.Verify(t => t.Invoke(bounceCommand, bounce), Times.Once());
        }
コード例 #10
0
ファイル: TargetInvokerTest.cs プロジェクト: t3hc13h/bounce
        public void ShouldBuildDependenciesBeforeDependencts()
        {
            var dependent  = new Mock <IObsoleteTask>();
            var dependency = new Mock <IObsoleteTask>();
            ITargetBuilderBounce bounce = GetBounce();

            var buildActions = new StringWriter();

            dependent.Setup(d => d.Dependencies).Returns(new[] { new TaskDependency(dependency.Object) });
            var bounceCommand = new BounceCommandParser().Build;

            dependent.Setup(d => d.Invoke(bounceCommand, bounce)).Callback(() => buildActions.Write("build dependent;"));
            dependency.Setup(d => d.Invoke(bounceCommand, bounce)).Callback(() => buildActions.Write("build dependency;"));

            var builder = new TargetInvoker(bounce);

            builder.Invoke(bounceCommand, dependent.Object);

            Assert.That(buildActions.ToString(), Is.EqualTo(@"build dependency;build dependent;"));
        }
コード例 #11
0
ファイル: TargetInvokerTest.cs プロジェクト: t3hc13h/bounce
        public void ShouldNotCleanDepsIfMarkedCleanAfterBuildButAlsoDependedUponElsewhere()
        {
            var artefacts = new HashSet <string>();

            var b     = new FakeArtefactTaskWithDependencies(artefacts, "b");
            var cDeps = new[] { new TaskDependency(b), new TaskDependency(b)
                                {
                                    CleanAfterBuild = true
                                } };
            var c = new FakeArtefactTaskWithDependencies(artefacts, "c", cDeps);

            ITargetBuilderBounce bounce = GetBounce();

            var invoker = new TargetInvoker(bounce);

            invoker.Invoke(new BounceCommandParser().Build, c);

            Assert.That(artefacts, Has.Member("b"));
            Assert.That(artefacts, Has.Member("c"));
        }