///<summary> /// Invokes the next task in the queue ///</summary> public void InvokeNextTask() { while (Tasks.Count > 0) { NamedTask task = Tasks.Dequeue(); //do not run another task if a previous task has errored Defaults.Logger.WriteHeader(task.Name); try { task.Task.Invoke(); } catch (Exception ex) { Defaults.Logger.WriteError("ERROR", ex.ToString()); BuildFile.SetErrorState(); } if (IsInErrorState) { return; //stop executing tasks if non-zero error code } } if (IsInErrorState == false) { Defaults.Logger.WriteHeader("DONE"); } }
public void TaskThatThrowsExceptionShouldSignalErrorState() { Assert.That(!BuildFile.IsInErrorState); var subject = new BuildFile(); subject.AddTask("Test", delegate { throw new ApplicationException("testing execption handling");}); subject.InvokeNextTask(); Assert.That(BuildFile.IsInErrorState); }
public void ShouldHaveProperCount() { var subject = new BuildFile(); bool methodCalled = false; subject.AddTask(delegate { methodCalled = true; }); Assert.That(subject.TaskCount, Is.EqualTo(1)); }
public void ClearTasksShouldRemoveAllTasks() { var subject = new BuildFile(); subject.AddTask(delegate { }); Assert.That(subject.TaskCount, Is.EqualTo(1)); subject.ClearTasks(); Assert.That(subject.TaskCount, Is.EqualTo(0)); }
public void AddNamedTask() { var subject = new BuildFile(); bool methodCalled = false; subject.AddTask("Test", delegate { methodCalled = true; }); var task = subject.Tasks.Dequeue(); Assert.That(task.Name, Is.EqualTo("Test")); }
public void TaskThatThrowsExceptionShouldSignalErrorState() { Assert.That(!BuildFile.IsInErrorState); var subject = new BuildFile(); subject.AddTask("Test", delegate { throw new ApplicationException("testing execption handling"); }); subject.InvokeNextTask(); Assert.That(BuildFile.IsInErrorState); }
public void TaskThatThrowsExceptionShouldPreventOtherTasksFromRunning() { Assert.That(!BuildFile.IsInErrorState); var DidSecondTaskRun = false; var subject = new BuildFile(); subject.AddTask("Test", delegate { throw new ApplicationException("testing execption handling"); }); subject.AddTask("Test", delegate { DidSecondTaskRun = true; }); subject.InvokeNextTask(); Assert.That(!DidSecondTaskRun); }
public void TestThatQueueGetsProcessed() { var subject = new BuildFile(); bool methodCalled = false; subject.AddTask(delegate { methodCalled = true; }); Assert.That(subject.Tasks.Count, Is.EqualTo(1)); subject.InvokeNextTask(); Assert.IsTrue(methodCalled); Assert.That(subject.Tasks.Count, Is.EqualTo(0)); }