private bool IsRegressing(Project project) { AllBuildDetails lastBuildDetails; if (lastProjectsBuildDetails.TryGetValue(project, out lastBuildDetails) == false || lastBuildDetails == null) { return(false); } AllBuildDetails newBuildDetails = project.AllBuildDetails; if (newBuildDetails == null) { return(false); } // moving from unknown/aborted to successful should not be considered as a regression if (newBuildDetails.Status.Value <= BuildStatusEnum.Successful) { return(false); } bool res = BuildStatusUtils.IsWorse(newBuildDetails.Status, lastBuildDetails.Status); return(res); }
private void UpdateForProject(Project project) { if (lastStatuses.ContainsKey(project.Url) && lastCompletedStatuses.ContainsKey(project.Url)) { if (lastStatuses[project.Url].IsInProgress) { if (project.StatusValue == BuildStatusEnum.Successful) { if (BuildStatusUtils.IsErrorBuild(lastCompletedStatuses[project.Url])) { FixedProjects.Add(project); } else { SucceedingProjects.Add(project); } } else if (TreatAsFailure(project.Status)) { if (TreatAsFailure(lastCompletedStatuses[project.Url])) { StillFailingProjects.Add(project); } else { FailingProjects.Add(project); } } } } }
private bool ShouldOpenConsolePage(Project project) { if (project == null) { return(false); } BuildStatus status = project.Status; bool res = BuildStatusUtils.IsErrorBuild(status) || status.IsInProgress; return(res); }
private BuildStatus GetProjectStatus(Project project) { BuildStatus status = project.Status; BuildStatus acknowledgedStatus = GetAcknowledgedStatus(project); if (project.IsAcknowledged || (acknowledgedStatus != null)) { if (project.IsAcknowledged || (status.Value == acknowledgedStatus.Value)) { return(new BuildStatus(BuildStatusEnum.Successful, false, false)); } else if (status.Value != BuildStatusEnum.Unknown && BuildStatusUtils.IsWorse(acknowledgedStatus, status)) { ClearAcknowledgedStatus(project); } } return(status); }
// FIXME: the framework doesn't fire correctly MouseClick and MouseDoubleClick, // so this is deactivated private void notifyIcon_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Left) { return; } try { // order the projects by build status var projectsByStatus = new Dictionary <BuildStatusEnum, SortedSet <Project> >(); foreach (KeyValuePair <Project, AllBuildDetails> pair in lastProjectsBuildDetails) { BuildStatusEnum status = BuildStatusEnum.Unknown; if (pair.Value != null) { status = BuildStatusUtils.DegradeStatus(pair.Value.Status).Value; } SortedSet <Project> projects = new SortedSet <Project>(); if (projectsByStatus.TryGetValue(status, out projects) == false) { projects = new SortedSet <Project>(); projectsByStatus.Add(status, projects); } projects.Add(pair.Key); } StringBuilder text = new StringBuilder(); string prefix = null; foreach (KeyValuePair <BuildStatusEnum, SortedSet <Project> > pair in projectsByStatus) { // don't display successful projects unless this is the only status if (pair.Key == BuildStatusEnum.Successful || projectsByStatus.Count == 1) { continue; } if (prefix != null) { text.Append(prefix); } string statusText = JenkinsTrayResources.ResourceManager .GetString("BuildStatus_" + pair.Key.ToString()); text.Append(statusText); foreach (Project project in pair.Value) { text.Append("\n - ").Append(project.Name); BuildDetails lastFailedBuild = project.LastFailedBuild; if (lastFailedBuild != null && lastFailedBuild.Users != null && lastFailedBuild.Users.Count > 0) { string users = StringUtils.Join(lastFailedBuild.Users, ", "); text.Append(" (").Append(users).Append(")"); } } prefix = "\n"; } string textToDisplay = text.ToString(); if (string.IsNullOrEmpty(textToDisplay)) { textToDisplay = JenkinsTrayResources.DisplayBuildStatus_NoProjects; } notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, JenkinsTrayResources.DisplayBuildStatus_Caption, textToDisplay, ToolTipIcon.Info); } catch (Exception ex) { LoggingHelper.LogError(logger, ex); } }