@@ -11,6 +11,7 @@ import (
11
11
12
12
func TestAggregateJobStatus (t * testing.T ) {
13
13
testStatuses := func (expected Status , statuses []Status ) {
14
+ t .Helper ()
14
15
var jobs []* ActionRunJob
15
16
for _ , v := range statuses {
16
17
jobs = append (jobs , & ActionRunJob {Status : v })
@@ -29,6 +30,16 @@ func TestAggregateJobStatus(t *testing.T) {
29
30
statuses []Status
30
31
expected Status
31
32
}{
33
+ // unknown cases, maybe it shouldn't happen in real world
34
+ {[]Status {}, StatusUnknown },
35
+ {[]Status {StatusUnknown , StatusSuccess }, StatusUnknown },
36
+ {[]Status {StatusUnknown , StatusSkipped }, StatusUnknown },
37
+ {[]Status {StatusUnknown , StatusFailure }, StatusFailure },
38
+ {[]Status {StatusUnknown , StatusCancelled }, StatusCancelled },
39
+ {[]Status {StatusUnknown , StatusWaiting }, StatusWaiting },
40
+ {[]Status {StatusUnknown , StatusRunning }, StatusRunning },
41
+ {[]Status {StatusUnknown , StatusBlocked }, StatusBlocked },
42
+
32
43
// success with other status
33
44
{[]Status {StatusSuccess }, StatusSuccess },
34
45
{[]Status {StatusSuccess , StatusSkipped }, StatusSuccess }, // skipped doesn't affect success
@@ -38,18 +49,28 @@ func TestAggregateJobStatus(t *testing.T) {
38
49
{[]Status {StatusSuccess , StatusRunning }, StatusRunning },
39
50
{[]Status {StatusSuccess , StatusBlocked }, StatusBlocked },
40
51
52
+ // any cancelled, then cancelled
53
+ {[]Status {StatusCancelled }, StatusCancelled },
54
+ {[]Status {StatusCancelled , StatusSuccess }, StatusCancelled },
55
+ {[]Status {StatusCancelled , StatusSkipped }, StatusCancelled },
56
+ {[]Status {StatusCancelled , StatusFailure }, StatusCancelled },
57
+ {[]Status {StatusCancelled , StatusWaiting }, StatusCancelled },
58
+ {[]Status {StatusCancelled , StatusRunning }, StatusCancelled },
59
+ {[]Status {StatusCancelled , StatusBlocked }, StatusCancelled },
60
+
41
61
// failure with other status, fail fast
42
62
// Should "running" win? Maybe no: old code does make "running" win, but GitHub does fail fast.
43
63
{[]Status {StatusFailure }, StatusFailure },
44
64
{[]Status {StatusFailure , StatusSuccess }, StatusFailure },
45
65
{[]Status {StatusFailure , StatusSkipped }, StatusFailure },
46
- {[]Status {StatusFailure , StatusCancelled }, StatusFailure },
66
+ {[]Status {StatusFailure , StatusCancelled }, StatusCancelled },
47
67
{[]Status {StatusFailure , StatusWaiting }, StatusFailure },
48
68
{[]Status {StatusFailure , StatusRunning }, StatusFailure },
49
69
{[]Status {StatusFailure , StatusBlocked }, StatusFailure },
50
70
51
71
// skipped with other status
52
- {[]Status {StatusSkipped }, StatusSuccess },
72
+ // TODO: need to clarify whether a PR with "skipped" job status is considered as "mergeable" or not.
73
+ {[]Status {StatusSkipped }, StatusSkipped },
53
74
{[]Status {StatusSkipped , StatusSuccess }, StatusSuccess },
54
75
{[]Status {StatusSkipped , StatusFailure }, StatusFailure },
55
76
{[]Status {StatusSkipped , StatusCancelled }, StatusCancelled },
0 commit comments