1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package actions
-
- import (
- "testing"
-
- actions_model "code.gitea.io/gitea/models/actions"
-
- "github.com/stretchr/testify/assert"
- )
-
- func Test_jobStatusResolver_Resolve(t *testing.T) {
- tests := []struct {
- name string
- jobs actions_model.ActionJobList
- want map[int64]actions_model.Status
- }{
- {
- name: "no blocked",
- jobs: actions_model.ActionJobList{
- {ID: 1, JobID: "1", Status: actions_model.StatusWaiting, Needs: []string{}},
- {ID: 2, JobID: "2", Status: actions_model.StatusWaiting, Needs: []string{}},
- {ID: 3, JobID: "3", Status: actions_model.StatusWaiting, Needs: []string{}},
- },
- want: map[int64]actions_model.Status{},
- },
- {
- name: "single blocked",
- jobs: actions_model.ActionJobList{
- {ID: 1, JobID: "1", Status: actions_model.StatusSuccess, Needs: []string{}},
- {ID: 2, JobID: "2", Status: actions_model.StatusBlocked, Needs: []string{"1"}},
- {ID: 3, JobID: "3", Status: actions_model.StatusWaiting, Needs: []string{}},
- },
- want: map[int64]actions_model.Status{
- 2: actions_model.StatusWaiting,
- },
- },
- {
- name: "multiple blocked",
- jobs: actions_model.ActionJobList{
- {ID: 1, JobID: "1", Status: actions_model.StatusSuccess, Needs: []string{}},
- {ID: 2, JobID: "2", Status: actions_model.StatusBlocked, Needs: []string{"1"}},
- {ID: 3, JobID: "3", Status: actions_model.StatusBlocked, Needs: []string{"1"}},
- },
- want: map[int64]actions_model.Status{
- 2: actions_model.StatusWaiting,
- 3: actions_model.StatusWaiting,
- },
- },
- {
- name: "chain blocked",
- jobs: actions_model.ActionJobList{
- {ID: 1, JobID: "1", Status: actions_model.StatusFailure, Needs: []string{}},
- {ID: 2, JobID: "2", Status: actions_model.StatusBlocked, Needs: []string{"1"}},
- {ID: 3, JobID: "3", Status: actions_model.StatusBlocked, Needs: []string{"2"}},
- },
- want: map[int64]actions_model.Status{
- 2: actions_model.StatusSkipped,
- 3: actions_model.StatusSkipped,
- },
- },
- {
- name: "loop need",
- jobs: actions_model.ActionJobList{
- {ID: 1, JobID: "1", Status: actions_model.StatusBlocked, Needs: []string{"3"}},
- {ID: 2, JobID: "2", Status: actions_model.StatusBlocked, Needs: []string{"1"}},
- {ID: 3, JobID: "3", Status: actions_model.StatusBlocked, Needs: []string{"2"}},
- },
- want: map[int64]actions_model.Status{},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- r := newJobStatusResolver(tt.jobs)
- assert.Equal(t, tt.want, r.Resolve())
- })
- }
- }
|