Пример #1
0
        public void ConstructorInitialisesEmptyTaskLists()
        {
            var task = new ConditionalTask();

            Assert.AreEqual(0, task.Tasks.Length);
            Assert.AreEqual(0, task.ElseTasks.Length);
        }
Пример #2
0
        public void ExecuteRunsElseTasksWhenConditionsFail()
        {
            var passRan       = false;
            var failRan       = false;
            var mockCondition = new MockCondition
            {
                EvalFunction = ir => false
            };
            var passTask = new MockTask
            {
                RunAction = ir => passRan = true
            };
            var failTask = new MockTask
            {
                RunAction = ir => failRan = true
            };
            var task = new ConditionalTask
            {
                Tasks          = new[] { passTask },
                ElseTasks      = new[] { failTask },
                TaskConditions = new[] { mockCondition }
            };
            var resultMock = this.GenerateResultMock();

            this.mocks.ReplayAll();
            resultMock.Status = IntegrationStatus.Success;
            task.Run(resultMock);

            this.mocks.VerifyAll();
            Assert.IsFalse(passRan);
            Assert.IsTrue(failRan);
        }
Пример #3
0
 public void ConditionalTaskTest_XMLInterface_Success(
     [Values(
          "<conditional><conditions/><tasks/><elseTasks/></conditional>"
          )]
     string xml)
 {
     Debug.WriteLine(xml);
     ConditionalTask result = NetReflector.Read(xml) as ConditionalTask;
 }
Пример #4
0
        public void InitialiseStatusUpdatesTheStatus()
        {
            var task = new ConditionalTask
            {
                Tasks = new[]
                {
                    new MockTask()
                }
            };

            task.InitialiseStatus(ItemBuildStatus.Pending);
            Assert.AreEqual(ItemBuildStatus.Pending, task.CurrentStatus.Status);
        }
        public void ExecuteRunsAllTasksWhenConditionsFailAndContinueOnFailure()
        {
            var passRan       = false;
            var firstFailRan  = false;
            var secondFailRan = false;
            var thirdFailRan  = false;
            var mockCondition = new MockCondition
            {
                EvalFunction = ir => false
            };
            var passTask = new MockTask
            {
                RunAction = ir => passRan = true
            };
            var firstFailTask = new MockTask
            {
                RunAction = ir => firstFailRan = true
            };
            var secondFailTask = new MockTask
            {
                RunAction = ir => { secondFailRan = true; ir.Status = IntegrationStatus.Failure; }
            };
            var thirdFailTask = new MockTask
            {
                RunAction = ir => thirdFailRan = true
            };
            var task = new ConditionalTask
            {
                Tasks          = new[] { passTask },
                ElseTasks      = new[] { firstFailTask, secondFailTask, thirdFailTask },
                TaskConditions = new[] { mockCondition }
            };
            var resultMock = this.GenerateResultMock();

            AddResultMockExpectedClone(resultMock);
            AddResultMockExpectedClone(resultMock);
            AddResultMockExpectedMerge(resultMock);
            AddResultMockExpectedMerge(resultMock);

            this.mocks.ReplayAll();
            resultMock.Status = IntegrationStatus.Success;
            task.Run(resultMock);

            this.mocks.VerifyAll();
            Assert.IsFalse(passRan);
            Assert.IsTrue(firstFailRan);
            Assert.IsTrue(secondFailRan);
            Assert.IsTrue(thirdFailRan);
        }
Пример #6
0
        public void ValidateValidatesElseTasks()
        {
            var wasValidated = false;
            var taskMock     = new MockTask()
            {
                ValidateAction = (c, t, ep) => wasValidated = true
            };
            var task = new ConditionalTask
            {
                ElseTasks = new[] { taskMock }
            };

            task.Validate(null, ConfigurationTrace.Start(this), null);
            Assert.IsTrue(wasValidated);
        }
Пример #7
0
        public void ConditionalTaskTest_xmlinterface_pass()
        {
            string testXml = "<conditional><conditions>" +
                             "<andCondition><conditions>" +
                             "<buildCondition value=\"ForceBuild\" />" +
                             "<statusCondition value=\"Success\" />" +
                             "<folderExistsCondition folder=\"\\\\publicationServer\\c$\\inetpub\\Webproject\\\" />" +
                             "<orCondition><conditions>" +
                             "<fileExistsCondition file=\"d:\\Buildfolder\\Webproject\\project.csproj\" />" +
                             "<fileExistsCondition file=\"d:\\Buildfolder\\Webproject\\webProject.csproj\" />" +
                             "</conditions></orCondition>" +
                             "<urlPingCondition url=\"http:\\MyWebsite\\WebProject\\default.aspx\" />" +
                             "</conditions></andCondition>" +
                             "</conditions>" +
                             "<tasks><commentTask message=\"publish web site\" /></tasks>" +
                             "<elseTasks><commentTask message=\"error deploying website\" FailTask=\"True\" /></elseTasks>" +
                             "</conditional>";

            Debug.WriteLine(testXml);
            ConditionalTask result = NetReflector.Read(testXml) as ConditionalTask;
        }
Пример #8
0
        public void ConditionalTaskTest_ConditionTrue_RunTask()
        {
            ITaskCondition condition = mocks.StrictMock <ITaskCondition>();

            Expect.Call(condition.Eval(null)).IgnoreArguments().Return(true);
            ITask runTask = mocks.StrictMock <ITask>();

            Expect.Call(delegate { runTask.Run(null); }).IgnoreArguments();
            ITask noRunTask = mocks.StrictMock <ITask>();
            IIntegrationResult ResultMock = IntegrationResultMother.CreateSuccessful();

            mocks.ReplayAll();

            ConditionalTask task = new ConditionalTask();

            task.TaskConditions = new[] { condition };
            task.Tasks          = new[] { runTask };
            task.ElseTasks      = new[] { noRunTask };
            task.Run(ResultMock);

            mocks.VerifyAll();
        }
        public void ExecuteRunsAllInnerTasksWhenConditionsFailAndContinueOnFailure()
        {
            const int innerCount = 3;
            const int leafCount  = 2;

            var passRan      = false;
            int taskRunCount = 0;

            var mockCondition = new MockCondition
            {
                EvalFunction = ir => false
            };
            var passTask = new MockTask
            {
                RunAction = ir => passRan = true
            };


            var innerTasks = new List <ConditionalTask>();

            for (var innerLoop = 1; innerLoop <= innerCount; innerLoop++)
            {
                var leafTasks = new List <MockTask>();
                for (var leafLoop = 1; leafLoop <= leafCount; leafLoop++)
                {
                    leafTasks.Add(((innerLoop == 2) && (leafLoop == 2)) ?
                                  new MockTask
                    {
                        RunAction = ir =>
                        {
                            taskRunCount++;
                            ir.Status = IntegrationStatus.Failure;
                        }
                    }
                        :
                                  new MockTask
                    {
                        RunAction = ir =>
                        {
                            taskRunCount++;
                            ir.Status = IntegrationStatus.Success;
                        }
                    }
                                  );
                }

                innerTasks.Add(new ConditionalTask
                {
                    ContinueOnFailure = false,
                    ElseTasks         = leafTasks.ToArray(),
                    TaskConditions    = new[] { mockCondition }
                });
            }

            var task = new ConditionalTask
            {
                Tasks             = new[] { passTask },
                ElseTasks         = innerTasks.ToArray(),
                TaskConditions    = new[] { mockCondition },
                ContinueOnFailure = true
            };
            var resultMock = this.GenerateResultMock(leafCount, leafCount);

            AddResultMockExpectedClone(resultMock, leafCount, leafCount);
            AddResultMockExpectedClone(resultMock, leafCount, leafCount);
            AddResultMockExpectedMerge(resultMock);
            AddResultMockExpectedMerge(resultMock);

            this.mocks.ReplayAll();
            resultMock.Status = IntegrationStatus.Success;
            task.Run(resultMock);

            this.mocks.VerifyAll();
            Assert.IsFalse(passRan);
            Assert.AreEqual(innerCount * leafCount, taskRunCount, "Bad task run count");
        }
Пример #10
0
        public void ConditionalTaskTest_nullTask_throwsArgumentNullException()
        {
            ConditionalTask result = new ConditionalTask();

            result.Run(IntegrationResultMother.CreateSuccessful());
        }