|
23 | 23 | using Rothko;
|
24 | 24 | using static System.FormattableString;
|
25 | 25 | using static Octokit.GraphQL.Variable;
|
| 26 | +using CheckConclusionState = GitHub.Models.CheckConclusionState; |
| 27 | +using CheckStatusState = GitHub.Models.CheckStatusState; |
26 | 28 | using StatusState = GitHub.Models.StatusState;
|
27 | 29 |
|
28 | 30 | namespace GitHub.Services
|
@@ -98,12 +100,12 @@ public async Task<Page<PullRequestListItemModel>> ReadPullRequests(
|
98 | 100 | LastCommit = pr.Commits(null, null, 1, null).Nodes.Select(commit =>
|
99 | 101 | new LastCommitSummaryModel
|
100 | 102 | {
|
101 |
| -// CheckSuites = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) |
102 |
| -// .Select(suite => new CheckSuiteSummaryModel |
103 |
| -// { |
104 |
| -// Conclusion = (CheckConclusionStateEnum?)suite.Conclusion, |
105 |
| -// Status = (CheckStatusStateEnum)suite.Status, |
106 |
| -// }).ToList(), |
| 103 | + CheckSuites = commit.Commit.CheckSuites(null, null, null, null, null).AllPages(10) |
| 104 | + .Select(suite => new CheckSuiteSummaryModel |
| 105 | + { |
| 106 | + Conclusion = (CheckConclusionState?)suite.Conclusion, |
| 107 | + Status = (CheckStatusState)suite.Status, |
| 108 | + }).ToList(), |
107 | 109 | Statuses = commit.Commit.Status
|
108 | 110 | .Select(context =>
|
109 | 111 | context.Contexts.Select(statusContext => new StatusSummaryModel
|
@@ -147,34 +149,58 @@ public async Task<Page<PullRequestListItemModel>> ReadPullRequests(
|
147 | 149 | item.CommentCount += item.Reviews.Sum(x => x.Count);
|
148 | 150 | item.Reviews = null;
|
149 | 151 |
|
150 |
| - var hasCheckSuites = item.LastCommit.CheckSuites != null |
| 152 | + var hasCheckSuites = item.LastCommit.CheckSuites != null |
151 | 153 | && item.LastCommit.CheckSuites.Any();
|
152 | 154 |
|
153 |
| - var hasStatuses = item.LastCommit.Statuses != null |
| 155 | + var hasStatuses = item.LastCommit.Statuses != null |
154 | 156 | && item.LastCommit.Statuses.Any();
|
155 | 157 |
|
156 |
| - if (!hasStatuses) |
| 158 | + if (!hasCheckSuites && !hasStatuses) |
157 | 159 | {
|
158 | 160 | item.Checks = PullRequestChecksState.None;
|
159 | 161 | }
|
160 | 162 | else
|
161 | 163 | {
|
162 |
| - var statusHasFailure = item.LastCommit |
163 |
| - .Statuses |
164 |
| - .Any(status => status.State == StatusState.Failure); |
| 164 | + var checksHasFailure = false; |
| 165 | + var checksHasCompleteSuccess = true; |
165 | 166 |
|
| 167 | + if (hasCheckSuites) |
| 168 | + { |
| 169 | + checksHasFailure = item.LastCommit |
| 170 | + .CheckSuites.Any(model => model.Conclusion.HasValue |
| 171 | + && (model.Conclusion.Value == CheckConclusionState.Failure |
| 172 | + || model.Conclusion.Value == CheckConclusionState.ActionRequired)); |
| 173 | + |
| 174 | + if (!checksHasFailure) |
| 175 | + { |
| 176 | + checksHasCompleteSuccess = item.LastCommit |
| 177 | + .CheckSuites.All(model => model.Conclusion.HasValue |
| 178 | + && (model.Conclusion.Value == CheckConclusionState.Success |
| 179 | + || model.Conclusion.Value == CheckConclusionState.Neutral)); |
| 180 | + } |
| 181 | + } |
| 182 | + |
| 183 | + var statusHasFailure = false; |
166 | 184 | var statusHasCompleteSuccess = true;
|
167 |
| - if (!statusHasFailure) |
| 185 | + |
| 186 | + if (!checksHasFailure && hasStatuses) |
168 | 187 | {
|
169 |
| - statusHasCompleteSuccess = |
170 |
| - item.LastCommit.Statuses.All(status => status.State == StatusState.Success); |
| 188 | + statusHasFailure = item.LastCommit |
| 189 | + .Statuses |
| 190 | + .Any(status => status.State == StatusState.Failure); |
| 191 | + |
| 192 | + if (!statusHasFailure) |
| 193 | + { |
| 194 | + statusHasCompleteSuccess = |
| 195 | + item.LastCommit.Statuses.All(status => status.State == StatusState.Success); |
| 196 | + } |
171 | 197 | }
|
172 | 198 |
|
173 |
| - if (statusHasFailure) |
| 199 | + if (checksHasFailure || statusHasFailure) |
174 | 200 | {
|
175 | 201 | item.Checks = PullRequestChecksState.Failure;
|
176 | 202 | }
|
177 |
| - else if (statusHasCompleteSuccess) |
| 203 | + else if (statusHasCompleteSuccess && checksHasCompleteSuccess) |
178 | 204 | {
|
179 | 205 | item.Checks = PullRequestChecksState.Success;
|
180 | 206 | }
|
@@ -933,9 +959,9 @@ class LastCommitSummaryModel
|
933 | 959 |
|
934 | 960 | class CheckSuiteSummaryModel
|
935 | 961 | {
|
936 |
| - public CheckSuiteConclusionState? Conclusion { get; set; } |
| 962 | + public CheckConclusionState? Conclusion { get; set; } |
937 | 963 |
|
938 |
| - public CheckSuiteStatusState Status { get; set; } |
| 964 | + public CheckStatusState Status { get; set; } |
939 | 965 | }
|
940 | 966 | }
|
941 | 967 | }
|
0 commit comments