aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2024-12-15 13:38:39 -0800
committerGitHub <noreply@github.com>2024-12-16 05:38:39 +0800
commit42090844ed2de5e615abc6ece351c152d3344295 (patch)
treecfd076247b3692a48b82d3af5ea6a5057cf14f59
parentc8ea41b049c887794e4dd87b690b3031b98458b9 (diff)
downloadgitea-42090844ed2de5e615abc6ece351c152d3344295.tar.gz
gitea-42090844ed2de5e615abc6ece351c152d3344295.zip
Fix bug on action list deleted branch (#32848)
Fix https://github.com/go-gitea/gitea/issues/32761#issuecomment-2540946064 --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--models/fixtures/action_run.yml19
-rw-r--r--models/fixtures/branch.yml12
-rw-r--r--routers/web/repo/actions/actions.go9
-rw-r--r--routers/web/repo/actions/actions_test.go22
-rw-r--r--routers/web/repo/actions/main_test.go14
5 files changed, 72 insertions, 4 deletions
diff --git a/models/fixtures/action_run.yml b/models/fixtures/action_run.yml
index 0747c46d2f..1db849352f 100644
--- a/models/fixtures/action_run.yml
+++ b/models/fixtures/action_run.yml
@@ -55,3 +55,22 @@
updated: 1683636626
need_approval: 0
approved_by: 0
+-
+ id: 794
+ title: "job output"
+ repo_id: 4
+ owner_id: 1
+ workflow_id: "test.yaml"
+ index: 190
+ trigger_user_id: 1
+ ref: "refs/heads/test"
+ commit_sha: "c2d72f548424103f01ee1dc02889c1e2bff816b0"
+ event: "push"
+ is_fork_pull_request: 0
+ status: 1
+ started: 1683636528
+ stopped: 1683636626
+ created: 1683636108
+ updated: 1683636626
+ need_approval: 0
+ approved_by: 0
diff --git a/models/fixtures/branch.yml b/models/fixtures/branch.yml
index c7bdff7733..17b1869ab6 100644
--- a/models/fixtures/branch.yml
+++ b/models/fixtures/branch.yml
@@ -81,3 +81,15 @@
is_deleted: false
deleted_by_id: 0
deleted_unix: 0
+
+-
+ id: 15
+ repo_id: 4
+ name: 'master'
+ commit_id: 'c7cd3cd144e6d23c9d6f3d07e52b2c1a956e0338'
+ commit_message: 'add Readme'
+ commit_time: 1588147171
+ pusher_id: 13
+ is_deleted: false
+ deleted_by_id: 0
+ deleted_unix: 0
diff --git a/routers/web/repo/actions/actions.go b/routers/web/repo/actions/actions.go
index 7ed37ea26b..1de1835936 100644
--- a/routers/web/repo/actions/actions.go
+++ b/routers/web/repo/actions/actions.go
@@ -5,6 +5,7 @@ package actions
import (
"bytes"
+ stdCtx "context"
"fmt"
"net/http"
"slices"
@@ -245,7 +246,7 @@ func List(ctx *context.Context) {
return
}
- if err := loadIsRefDeleted(ctx, runs); err != nil {
+ if err := loadIsRefDeleted(ctx, ctx.Repo.Repository.ID, runs); err != nil {
log.Error("LoadIsRefDeleted", err)
}
@@ -273,7 +274,7 @@ func List(ctx *context.Context) {
// loadIsRefDeleted loads the IsRefDeleted field for each run in the list.
// TODO: move this function to models/actions/run_list.go but now it will result in a circular import.
-func loadIsRefDeleted(ctx *context.Context, runs actions_model.RunList) error {
+func loadIsRefDeleted(ctx stdCtx.Context, repoID int64, runs actions_model.RunList) error {
branches := make(container.Set[string], len(runs))
for _, run := range runs {
refName := git.RefName(run.Ref)
@@ -285,14 +286,14 @@ func loadIsRefDeleted(ctx *context.Context, runs actions_model.RunList) error {
return nil
}
- branchInfos, err := git_model.GetBranches(ctx, ctx.Repo.Repository.ID, branches.Values(), false)
+ branchInfos, err := git_model.GetBranches(ctx, repoID, branches.Values(), false)
if err != nil {
return err
}
branchSet := git_model.BranchesToNamesSet(branchInfos)
for _, run := range runs {
refName := git.RefName(run.Ref)
- if refName.IsBranch() && !branchSet.Contains(run.Ref) {
+ if refName.IsBranch() && !branchSet.Contains(refName.ShortName()) {
run.IsRefDeleted = true
}
}
diff --git a/routers/web/repo/actions/actions_test.go b/routers/web/repo/actions/actions_test.go
index 194704d14e..6a976ed65c 100644
--- a/routers/web/repo/actions/actions_test.go
+++ b/routers/web/repo/actions/actions_test.go
@@ -7,6 +7,10 @@ import (
"strings"
"testing"
+ actions_model "code.gitea.io/gitea/models/actions"
+ "code.gitea.io/gitea/models/db"
+ unittest "code.gitea.io/gitea/models/unittest"
+
act_model "github.com/nektos/act/pkg/model"
"github.com/stretchr/testify/assert"
)
@@ -154,3 +158,21 @@ func TestReadWorkflow_WorkflowDispatchConfig(t *testing.T) {
Type: "boolean",
}, workflowDispatch.Inputs[2])
}
+
+func Test_loadIsRefDeleted(t *testing.T) {
+ unittest.PrepareTestEnv(t)
+
+ runs, total, err := db.FindAndCount[actions_model.ActionRun](db.DefaultContext,
+ actions_model.FindRunOptions{RepoID: 4, Ref: "refs/heads/test"})
+ assert.NoError(t, err)
+ assert.Len(t, runs, 1)
+ assert.EqualValues(t, 1, total)
+ for _, run := range runs {
+ assert.False(t, run.IsRefDeleted)
+ }
+
+ assert.NoError(t, loadIsRefDeleted(db.DefaultContext, 4, runs))
+ for _, run := range runs {
+ assert.True(t, run.IsRefDeleted)
+ }
+}
diff --git a/routers/web/repo/actions/main_test.go b/routers/web/repo/actions/main_test.go
new file mode 100644
index 0000000000..a82f9c6672
--- /dev/null
+++ b/routers/web/repo/actions/main_test.go
@@ -0,0 +1,14 @@
+// Copyright 2024 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package actions
+
+import (
+ "testing"
+
+ "code.gitea.io/gitea/models/unittest"
+)
+
+func TestMain(m *testing.M) {
+ unittest.MainTest(m)
+}