public void ExecuteLogsFailMessage() { var buildInfo = this.mocks.StrictMock <BuildProgressInformation>(string.Empty, string.Empty); var result = this.mocks.StrictMock <IIntegrationResult>(); var logger = this.mocks.StrictMock <ILogger>(); SetupResult.For(result.Status).PropertyBehavior(); SetupResult.For(result.BuildProgressInformation).Return(buildInfo); Expect.Call(() => buildInfo.SignalStartRunTask("Adding a comment to the log")); Expect.Call(() => logger.Debug("Logging error message: Test Message")); GeneralTaskResult loggedResult = null; Expect.Call(() => result.AddTaskResult( Arg <GeneralTaskResult> .Matches <GeneralTaskResult>(arg => { loggedResult = arg; return(true); }))); var task = new CommentTask { FailTask = true, Message = "Test Message", Logger = logger }; result.Status = IntegrationStatus.Unknown; this.mocks.ReplayAll(); task.Run(result); this.mocks.VerifyAll(); Assert.IsNotNull(loggedResult); Assert.IsFalse(loggedResult.CheckIfSuccess()); Assert.AreEqual("Test Message", loggedResult.Data); }
public void ExecuteLogsFailMessage() { var buildInfo = this.mocks.Create <BuildProgressInformation>(MockBehavior.Strict, string.Empty, string.Empty).Object; var result = this.mocks.Create <IIntegrationResult>(MockBehavior.Strict).Object; var logger = this.mocks.Create <ILogger>(MockBehavior.Strict).Object; Mock.Get(result).SetupProperty(_result => _result.Status); Mock.Get(result).SetupGet(_result => _result.BuildProgressInformation).Returns(buildInfo); Mock.Get(buildInfo).Setup(_buildInfo => _buildInfo.SignalStartRunTask("Adding a comment to the log")).Verifiable(); Mock.Get(logger).Setup(_logger => _logger.Debug("Logging error message: Test Message")).Verifiable(); GeneralTaskResult loggedResult = null; Mock.Get(result).Setup(_result => _result.AddTaskResult(It.IsAny <GeneralTaskResult>())) .Callback <ITaskResult>(arg => loggedResult = (GeneralTaskResult)arg).Verifiable(); var task = new CommentTask { FailTask = true, Message = "Test Message", Logger = logger }; result.Status = IntegrationStatus.Unknown; task.Run(result); this.mocks.VerifyAll(); Assert.IsNotNull(loggedResult); Assert.IsFalse(loggedResult.CheckIfSuccess()); Assert.AreEqual("Test Message", loggedResult.Data); }
/// <summary> /// Execute the actual task functionality. /// </summary> /// <param name="result"></param> /// <returns> /// True if the task was successful, false otherwise. /// </returns> protected override bool Execute(IIntegrationResult result) { result.BuildProgressInformation.SignalStartRunTask(!string.IsNullOrEmpty(Description) ? Description : "Publishing build results"); if (result.Succeeded || AlwaysPublish) { var srcDir = new DirectoryInfo(result.BaseFromWorkingDirectory(SourceDir)); var pubDir = new DirectoryInfo(result.BaseFromArtifactsDirectory(PublishDir)); Log.Debug("Publish directory is '{0}'", pubDir.FullName); Log.Debug("Source directory is '{0}'", srcDir.FullName); if (!srcDir.Exists) { Log.Warning("Source directory '{0}' does not exist - cancelling task", srcDir.FullName); var errorResult = new GeneralTaskResult( false, "Unable to find source directory '" + srcDir.FullName + "'"); result.AddTaskResult(errorResult); return(false); } if (!pubDir.Exists) { Log.Info("Publish directory '{0}' does not exist - creating", pubDir.FullName); pubDir.Create(); } else { if (CleanPublishDirPriorToCopy) { DeleteFolder(pubDir.FullName); pubDir.Create(); } } if (UseLabelSubDirectory) { pubDir = pubDir.CreateSubdirectory(result.Label); } RecurseSubDirectories(srcDir, pubDir); switch (CleanUpMethod) { case CleanupPolicy.NoCleaning: break; case CleanupPolicy.DeleteBuildsOlderThanXDays: DeleteSubDirsOlderThanXDays(new DirectoryInfo(result.BaseFromArtifactsDirectory(PublishDir)).FullName, CleanUpValue, result.BuildLogDirectory); break; case CleanupPolicy.KeepLastXBuilds: KeepLastXSubDirs(new DirectoryInfo(result.BaseFromArtifactsDirectory(PublishDir)).FullName, CleanUpValue, result.BuildLogDirectory); break; default: throw new System.Exception(string.Format(System.Globalization.CultureInfo.CurrentCulture, "unmapped cleaning method choosen {0}", CleanUpMethod)); } } return(true); }