fix(packages): show error for duplicate cleanup rules #37820 (#38786)

## Issue

Gitea does not display a clear error message when a user tries to create
a cleanup rule for a package type that already has an existing cleanup
rule.

Although the duplicate rule is detected, the user is not informed why
the cleanup rule cannot be created.

## Solution

Add a user-facing error message when a cleanup rule already exists for
the selected package type.

Also add an integration test to verify that the appropriate error
message is displayed when attempting to create a duplicate cleanup rule.

Fixes #37820
This commit is contained in:
Mitrahsoft
2026-08-06 12:36:32 +05:30
committed by GitHub
parent 92ac357b1a
commit caf2e03605
3 changed files with 30 additions and 1 deletions
+27
View File
@@ -29,6 +29,33 @@ import (
"github.com/stretchr/testify/assert"
)
func TestPackageCleanupRuleDuplicateType(t *testing.T) {
defer tests.PrepareTestEnv(t)()
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
session := loginUser(t, user.Name)
// Create the first cleanup rule for the generic package type.
req := NewRequestWithValues(t, "POST", "/user/settings/packages/rules/add", map[string]string{
"type": "generic",
"action": "save",
"keep_count": "0",
"remove_days": "0",
})
session.MakeRequest(t, req, http.StatusSeeOther)
// Try to create another cleanup rule for the same package type.
req = NewRequestWithValues(t, "POST", "/user/settings/packages/rules/add", map[string]string{
"type": "generic",
"action": "save",
"keep_count": "0",
"remove_days": "0",
})
resp := session.MakeRequest(t, req, http.StatusOK)
assert.Contains(t, resp.Body.String(), "A cleanup rule for this package type already exists.")
}
func TestPackageAPI(t *testing.T) {
defer tests.PrepareTestEnv(t)()