private static string GetTimeRemainingMessage(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.Activity.IsSleeping())
            {
                if (projectStatus.NextBuildTime == DateTime.MaxValue)
                    return "Project is not automatically triggered";

                if (projectStatus.NextBuildTime.Date != DateTime.Now.Date)
                {
                    return string.Format("Next build check: {0:G}", projectStatus.NextBuildTime);
                }
                else
                {
                    return string.Format("Next build check: {0:T}", projectStatus.NextBuildTime);
                }
            }

            if (!projectStatus.Activity.IsPending())
            {
            TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild;

            if (durationRemaining != TimeSpan.MaxValue)
            {
                if (durationRemaining <= TimeSpan.Zero)
                {
                    return string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate()));
                }

                return string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining));
            }
            }

            return string.Empty;
        }
        public string FormatDetailString(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.ProjectState == ProjectState.NotConnected)
            {
                if (projectStatus.ConnectException == null)
                    return "Connecting...";

                return string.Format("Error: {0}", projectStatus.ConnectException.Message);
            }

            if (projectStatus.Activity == ProjectActivity.Sleeping)
            {
                if (projectStatus.NextBuildTime == DateTime.MaxValue)
                    return "Project is not automatically triggered";

                return string.Format("Next build check: {0:T}", projectStatus.NextBuildTime);
            }

            TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild;

            if (durationRemaining != TimeSpan.MaxValue)
            {
                if (durationRemaining <= TimeSpan.Zero)
                {
                    return string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate()));
                }

                return string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining));
            }

            return string.Empty;
        }
 private static void DisplayWebPageForProject(ISingleProjectDetail project)
 {
     if (project.IsConnected)
     {
         string url = project.WebURL;
         Process.Start(url);
     }
 }
        public string FormatDetailString(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.ProjectState == ProjectState.NotConnected)
            {
                if (projectStatus.ConnectException == null)
                    return "Connecting...";

                return string.Format("Error: {0}", projectStatus.ConnectException.Message);
            }

            string message = GetTimeRemainingMessage(projectStatus);

            // show first breaking task and the breaking users
            // search from the end, to get the most recent messages of the specified kind.
            bool breakerFound = false;
            bool breakingTaskFound = false;

            for (int i = projectStatus.Messages.Length - 1; i >= 0; i--)
            {
                if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers)
                {
                    if (!breakerFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - ";
                            message += projectStatus.Messages[i].Text;
                        }

                        breakerFound = true;
                    }
                }

                if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks)
                {
                    if (!breakingTaskFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - ";
                            message += projectStatus.Messages[i].Text;
                        }
                        breakingTaskFound = true;
                    }
                }
            }

            if (projectStatus.CurrentMessage.Length > 0) message += " - " + projectStatus.CurrentMessage;

            return message;
        }
Exemple #5
0
        private static void DisplayWebPageForProject(ISingleProjectDetail project)
        {
            if (project.IsConnected)
            {
                // replace plain http by https in case the buildserver is using https
                string url = project.WebURL;
                if (url != null && project.Configuration?.BuildServer?.Url != null &&
                    project.Configuration.BuildServer.Url.StartsWith("https:") &&
                    url.StartsWith("http:"))
                {
                    url = url.Replace("http:", "https:");
                }

                Process.Start(url);
            }
        }
        private static string GetProjectAttribute(ISingleProjectDetail project, string attribute)
        {
            var attrId = attribute.Trim('%').ToLowerInvariant();
            switch (attrId)
            {
                case "name": return project.ProjectName;
                case "state": return project.ProjectState.Name;
                case "server": return project.ServerName;
                case "url": return project.WebURL;
                case "category": return project.Category;
                case "buildlabel": return project.LastBuildLabel;
                case "remainingtime": return ((int)Math.Round(project.EstimatedTimeRemainingOnCurrentBuild.TotalSeconds)).ToString("D0", CultureInfo.InvariantCulture);
                case "queue": return project.QueueName;
                case "queuepriority": return project.QueuePriority.ToString(CultureInfo.InvariantCulture);

                case "percentsign": return "%";
                default: return attribute;
            }
        }
Exemple #7
0
        private static string GetTimeRemainingMessage(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.Activity.IsSleeping())
            {
                if (projectStatus.NextBuildTime == DateTime.MaxValue)
                {
                    return("Project is not automatically triggered");
                }

                if (projectStatus.NextBuildTime.Date != DateTime.Now.Date)
                {
                    return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Next build check: {0:G}", projectStatus.NextBuildTime));
                }
                else
                {
                    return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Next build check: {0:T}", projectStatus.NextBuildTime));
                }
            }

            if (!projectStatus.Activity.IsPending())
            {
                TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild;

                if (durationRemaining != TimeSpan.MaxValue)
                {
                    if (durationRemaining <= TimeSpan.Zero)
                    {
                        return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate())));
                    }

                    return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} estimated remaining", new CCTimeFormatter(durationRemaining)));
                }
            }

            return(string.Empty);
        }
        public string FormatDetailString(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.ProjectState == ProjectState.NotConnected)
            {
                if (projectStatus.ConnectException == null)
                {
                    return("Connecting...");
                }

                return(string.Format("Error: {0}", projectStatus.ConnectException.Message));
            }

            if (projectStatus.Activity == ProjectActivity.Sleeping)
            {
                if (projectStatus.NextBuildTime == DateTime.MaxValue)
                {
                    return("Project is not automatically triggered");
                }

                return(string.Format("Next build check: {0:T}", projectStatus.NextBuildTime));
            }

            TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild;

            if (durationRemaining != TimeSpan.MaxValue)
            {
                if (durationRemaining <= TimeSpan.Zero)
                {
                    return(string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate())));
                }

                return(string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining)));
            }

            return(string.Empty);
        }
	    private static void DisplayWebPageForProject(ISingleProjectDetail project)
		{
			if (project.IsConnected)
			{
				string url = project.WebURL;
				Process.Start(url);
			}
		}
		public string FormatDetailString(ISingleProjectDetail projectStatus)
		{
			if (projectStatus.ProjectState == ProjectState.NotConnected)
			{
				if (projectStatus.ConnectException == null)
					return "Connecting...";

				return string.Format(System.Globalization.CultureInfo.CurrentCulture,"Error: {0}", projectStatus.ConnectException.Message);
			}

			string message = GetTimeRemainingMessage(projectStatus);



            // show first breaking task and the breaking users
            // search from the end, to get the most recent messages of the specified kind.
		    bool breakerFound = false;
		    bool breakingTaskFound = false;
		    bool aborterFound = false;
            bool fixerFound = false;
            

            for (int i = projectStatus.Messages.Length - 1; i >= 0; i--)
            {

                if (projectStatus.Messages[i].Kind == Message.MessageKind.Fixer)
                {
                    if (!fixerFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - ";
                            message += projectStatus.Messages[i].Text;
                        }

                        fixerFound = true;
                    }
                }

                
                if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers)
                {
                    if (!breakerFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - Breaker(s) ";
                            message += projectStatus.Messages[i].Text;
                        }

                        breakerFound = true;
                    }                                        
                }

                if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks)
                {
                    if (!breakingTaskFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - ";
                            message += projectStatus.Messages[i].Text;
                        }
                        breakingTaskFound = true;
                    }
                }


                if (projectStatus.Messages[i].Kind == Message.MessageKind.BuildAbortedBy)
                {
                    if (!aborterFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0) message += " - Aborted By :";
                            message += projectStatus.Messages[i].Text;
                        }
                        aborterFound = true;
                    }
                }
            }

            if (!string.IsNullOrEmpty(projectStatus.CurrentMessage))
            {
                message += " - " + projectStatus.CurrentMessage;
            }

			return message;
		}
Exemple #11
0
        public string FormatDetailString(ISingleProjectDetail projectStatus)
        {
            if (projectStatus.ProjectState == ProjectState.NotConnected)
            {
                if (projectStatus.ConnectException == null)
                {
                    return("Connecting...");
                }

                return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Error: {0}", projectStatus.ConnectException.Message));
            }

            string message = GetTimeRemainingMessage(projectStatus);



            // show first breaking task and the breaking users
            // search from the end, to get the most recent messages of the specified kind.
            bool breakerFound      = false;
            bool breakingTaskFound = false;
            bool aborterFound      = false;

            for (int i = projectStatus.Messages.Length - 1; i >= 0; i--)
            {
                if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers)
                {
                    if (!breakerFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0)
                            {
                                message += " - Breaker(s) ";
                            }
                            message += projectStatus.Messages[i].Text;
                        }

                        breakerFound = true;
                    }
                }

                if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks)
                {
                    if (!breakingTaskFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0)
                            {
                                message += " - ";
                            }
                            message += projectStatus.Messages[i].Text;
                        }
                        breakingTaskFound = true;
                    }
                }


                if (projectStatus.Messages[i].Kind == Message.MessageKind.BuildAbortedBy)
                {
                    if (!aborterFound)
                    {
                        if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text)
                        {
                            if (message.Length > 0)
                            {
                                message += " - Aborted By :";
                            }
                            message += projectStatus.Messages[i].Text;
                        }
                        aborterFound = true;
                    }
                }
            }

            if (projectStatus.CurrentMessage.Length > 0)
            {
                message += " - " + projectStatus.CurrentMessage;
            }

            return(message);
        }
 public void ThrowsWhenAttemptingToRetrieveSingleProjectDetail()
 {
     Assert.That(delegate { ISingleProjectDetail detail = aggregator.Detail; },
                 Throws.TypeOf <InvalidOperationException>());
 }
 public static string Format(string format, ISingleProjectDetail project)
 {
     if (project == null) throw new ArgumentNullException("project");
     return reFormatter.Replace(format, match => GetProjectAttribute(project, match.Value));
 }