示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
        }