Merge pull request 'badges: Relax the default workflow badge conditions' (#3843) from algernon/forgejo:relax-and-have-a-badge into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3843 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
This commit is contained in:
commit
37962e2b2a
4 changed files with 35 additions and 7 deletions
|
@ -336,15 +336,18 @@ func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error) {
|
|||
|
||||
func GetLatestRunForBranchAndWorkflow(ctx context.Context, repoID int64, branch, workflowFile, event string) (*ActionRun, error) {
|
||||
var run ActionRun
|
||||
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("ref=?", branch).And("workflow_id=?", workflowFile)
|
||||
q := db.GetEngine(ctx).Where("repo_id=?", repoID).And("workflow_id=?", workflowFile)
|
||||
if event != "" {
|
||||
q = q.And("event=?", event)
|
||||
}
|
||||
if branch != "" {
|
||||
q = q.And("ref=?", branch)
|
||||
}
|
||||
has, err := q.Desc("id").Get(&run)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, workflow_id %s", repoID, branch, workflowFile)
|
||||
return nil, util.NewNotExistErrorf("run with repo_id %d, ref %s, event %s, workflow_id %s", repoID, branch, event, workflowFile)
|
||||
}
|
||||
return &run, nil
|
||||
}
|
||||
|
|
1
release-notes/8.0.0/fix/3843.md
Normal file
1
release-notes/8.0.0/fix/3843.md
Normal file
|
@ -0,0 +1 @@
|
|||
- Fixed a bug that resulted in workflow badges not working for workflows that weren't running on push (such as scheduled workflows, and ones that run on tags and for prs)
|
|
@ -45,10 +45,9 @@ func errorBadge(ctx *context_module.Context, label, text string) {
|
|||
|
||||
func GetWorkflowBadge(ctx *context_module.Context) {
|
||||
branch := ctx.Req.URL.Query().Get("branch")
|
||||
if branch == "" {
|
||||
branch = ctx.Repo.Repository.DefaultBranch
|
||||
}
|
||||
if branch != "" {
|
||||
branch = fmt.Sprintf("refs/heads/%s", branch)
|
||||
}
|
||||
event := ctx.Req.URL.Query().Get("event")
|
||||
|
||||
workflowFile := ctx.Params("workflow_name")
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||||
// Copyright 2024 The Forgejo Authors c/o Codeberg e.V.. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
@ -40,12 +41,17 @@ func TestBadges(t *testing.T) {
|
|||
{
|
||||
Operation: "create",
|
||||
TreePath: ".gitea/workflows/pr.yml",
|
||||
ContentReader: strings.NewReader("name: test\non:\n push:\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n"),
|
||||
ContentReader: strings.NewReader("name: pr\non:\n push:\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n"),
|
||||
},
|
||||
{
|
||||
Operation: "create",
|
||||
TreePath: ".gitea/workflows/self-test.yaml",
|
||||
ContentReader: strings.NewReader("name: test\non:\n push:\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n"),
|
||||
ContentReader: strings.NewReader("name: self-test\non:\n push:\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n"),
|
||||
},
|
||||
{
|
||||
Operation: "create",
|
||||
TreePath: ".gitea/workflows/tag-test.yaml",
|
||||
ContentReader: strings.NewReader("name: tags\non:\n push:\n tags: '*'\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - run: echo helloworld\n"),
|
||||
},
|
||||
},
|
||||
)
|
||||
|
@ -112,6 +118,25 @@ func TestBadges(t *testing.T) {
|
|||
req = NewRequestf(t, "GET", "/user2/%s/actions/workflows/pr.yml/badge.svg?event=cron", repo.Name)
|
||||
resp = MakeRequest(t, req, http.StatusSeeOther)
|
||||
assertBadge(t, resp, "pr.yml-Not%20found-crimson")
|
||||
|
||||
t.Run("tagged", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
// With no tags, the workflow has no runs, and isn't found
|
||||
req := NewRequestf(t, "GET", "/user2/%s/actions/workflows/tag-test.yaml/badge.svg", repo.Name)
|
||||
resp := MakeRequest(t, req, http.StatusSeeOther)
|
||||
assertBadge(t, resp, "tag--test.yaml-Not%20found-crimson")
|
||||
|
||||
// Lets create a tag!
|
||||
owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||
err := release.CreateNewTag(git.DefaultContext, owner, repo, "main", "v1", "message")
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Now the workflow is wating
|
||||
req = NewRequestf(t, "GET", "/user2/%s/actions/workflows/tag-test.yaml/badge.svg", repo.Name)
|
||||
resp = MakeRequest(t, req, http.StatusSeeOther)
|
||||
assertBadge(t, resp, "tag--test.yaml-waiting-lightgrey")
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("Stars", func(t *testing.T) {
|
||||
|
|
Loading…
Reference in a new issue