badges: Relax the default workflow badge conditions
Previously, if no branch was explicitly specified for a workflow, it defaulted to the default branch of the repo. This worked fine for workflows that were triggered on push, but it prevented showing badges for workflows that only run on tags, or on schedule - since they do not run on a specific branch. Thus, relax the conditions, and if no branch is specified, just return the latest run of the given workflow. If one is specified, *then* restrict it to said branch. Fixes #3487. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
This commit is contained in:
parent
6cb8c81de1
commit
d6915f4d5f
4 changed files with 35 additions and 7 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue