Skip to content

Commit e68dbe3

Browse files
committed
fix
1 parent d28a484 commit e68dbe3

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

models/actions/run_job.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,12 @@ func UpdateRunJob(ctx context.Context, job *ActionRunJob, cond builder.Cond, col
153153
}
154154

155155
func AggregateJobStatus(jobs []*ActionRunJob) Status {
156-
allSuccessOrSkipped := true
156+
allSuccessOrSkipped := len(jobs) != 0
157+
allSkipped := len(jobs) != 0
157158
var hasFailure, hasCancelled, hasSkipped, hasWaiting, hasRunning, hasBlocked bool
158159
for _, job := range jobs {
159160
allSuccessOrSkipped = allSuccessOrSkipped && (job.Status == StatusSuccess || job.Status == StatusSkipped)
161+
allSkipped = allSkipped && job.Status == StatusSkipped
160162
hasFailure = hasFailure || job.Status == StatusFailure
161163
hasCancelled = hasCancelled || job.Status == StatusCancelled
162164
hasSkipped = hasSkipped || job.Status == StatusSkipped
@@ -165,8 +167,12 @@ func AggregateJobStatus(jobs []*ActionRunJob) Status {
165167
hasBlocked = hasBlocked || job.Status == StatusBlocked
166168
}
167169
switch {
170+
case allSkipped:
171+
return StatusSkipped
168172
case allSuccessOrSkipped:
169173
return StatusSuccess
174+
case hasCancelled:
175+
return StatusCancelled
170176
case hasFailure:
171177
return StatusFailure
172178
case hasRunning:
@@ -175,8 +181,6 @@ func AggregateJobStatus(jobs []*ActionRunJob) Status {
175181
return StatusWaiting
176182
case hasBlocked:
177183
return StatusBlocked
178-
case hasCancelled:
179-
return StatusCancelled
180184
case hasSkipped:
181185
return StatusSkipped
182186
default:

models/actions/run_job_status_test.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
func TestAggregateJobStatus(t *testing.T) {
1313
testStatuses := func(expected Status, statuses []Status) {
14+
t.Helper()
1415
var jobs []*ActionRunJob
1516
for _, v := range statuses {
1617
jobs = append(jobs, &ActionRunJob{Status: v})
@@ -38,18 +39,28 @@ func TestAggregateJobStatus(t *testing.T) {
3839
{[]Status{StatusSuccess, StatusRunning}, StatusRunning},
3940
{[]Status{StatusSuccess, StatusBlocked}, StatusBlocked},
4041

42+
// any cancelled, then cancelled
43+
{[]Status{StatusCancelled}, StatusCancelled},
44+
{[]Status{StatusCancelled, StatusSuccess}, StatusCancelled},
45+
{[]Status{StatusCancelled, StatusSkipped}, StatusCancelled},
46+
{[]Status{StatusCancelled, StatusFailure}, StatusCancelled},
47+
{[]Status{StatusCancelled, StatusWaiting}, StatusCancelled},
48+
{[]Status{StatusCancelled, StatusRunning}, StatusCancelled},
49+
{[]Status{StatusCancelled, StatusBlocked}, StatusCancelled},
50+
4151
// failure with other status, fail fast
4252
// Should "running" win? Maybe no: old code does make "running" win, but GitHub does fail fast.
4353
{[]Status{StatusFailure}, StatusFailure},
4454
{[]Status{StatusFailure, StatusSuccess}, StatusFailure},
4555
{[]Status{StatusFailure, StatusSkipped}, StatusFailure},
46-
{[]Status{StatusFailure, StatusCancelled}, StatusFailure},
56+
{[]Status{StatusFailure, StatusCancelled}, StatusCancelled},
4757
{[]Status{StatusFailure, StatusWaiting}, StatusFailure},
4858
{[]Status{StatusFailure, StatusRunning}, StatusFailure},
4959
{[]Status{StatusFailure, StatusBlocked}, StatusFailure},
5060

5161
// skipped with other status
52-
{[]Status{StatusSkipped}, StatusSuccess},
62+
// TODO: need to clarify whether a PR with "skipped" job status is considered as "mergeable" or not.
63+
{[]Status{StatusSkipped}, StatusSkipped},
5364
{[]Status{StatusSkipped, StatusSuccess}, StatusSuccess},
5465
{[]Status{StatusSkipped, StatusFailure}, StatusFailure},
5566
{[]Status{StatusSkipped, StatusCancelled}, StatusCancelled},

0 commit comments

Comments
 (0)