When creating a new repository and copying issue labels from a template, the explicit sort order of exclusive labels was previously being lost (resetting to 0). This fix ensures that the original sort order for exclusive labels (e.g., 1, 2) is properly copied and retained in the newly created repository. Fixes #36463 --------- Signed-off-by: Paulo Chen <paulochen@tecnico.ulisboa.pt> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ func GenerateIssueLabels(ctx context.Context, templateRepo, generateRepo *repo_m
|
|||||||
RepoID: generateRepo.ID,
|
RepoID: generateRepo.ID,
|
||||||
Name: templateLabel.Name,
|
Name: templateLabel.Name,
|
||||||
Exclusive: templateLabel.Exclusive,
|
Exclusive: templateLabel.Exclusive,
|
||||||
|
ExclusiveOrder: templateLabel.ExclusiveOrder,
|
||||||
Description: templateLabel.Description,
|
Description: templateLabel.Description,
|
||||||
Color: templateLabel.Color,
|
Color: templateLabel.Color,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
@@ -525,19 +527,39 @@ func TestGenerateRepository(t *testing.T) {
|
|||||||
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||||
repo44 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 44})
|
repo44 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 44})
|
||||||
|
|
||||||
|
tmplRepoLabels := []*issues_model.Label{
|
||||||
|
{RepoID: 44, Name: "priority/high", Exclusive: true, ExclusiveOrder: 2, Color: "#ee0000", Description: "desc-high"},
|
||||||
|
{RepoID: 44, Name: "priority/low", Exclusive: true, ExclusiveOrder: 1, Color: "#0000ee", Description: "desc-low"},
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NoError(t, issues_model.NewLabels(t.Context(), tmplRepoLabels...))
|
||||||
|
|
||||||
generatedRepo, err := repo_service.GenerateRepository(t.Context(), user2, user2, repo44, repo_service.GenerateRepoOptions{
|
generatedRepo, err := repo_service.GenerateRepository(t.Context(), user2, user2, repo44, repo_service.GenerateRepoOptions{
|
||||||
Name: "generated-from-template-44",
|
Name: "generated-from-template-44",
|
||||||
GitContent: true,
|
GitContent: true,
|
||||||
|
IssueLabels: true,
|
||||||
})
|
})
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.NotNil(t, generatedRepo)
|
require.NotNil(t, generatedRepo)
|
||||||
|
|
||||||
exist, err := util.IsExist(repo_model.RepoPath(user2.Name, generatedRepo.Name))
|
exist, err := util.IsExist(repo_model.RepoPath(user2.Name, generatedRepo.Name))
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.True(t, exist)
|
require.True(t, exist)
|
||||||
|
|
||||||
unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: generatedRepo.Name})
|
unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{OwnerName: user2.Name, Name: generatedRepo.Name})
|
||||||
|
|
||||||
|
generatedLabels, err := issues_model.GetLabelsByRepoID(t.Context(), generatedRepo.ID, "", db.ListOptions{})
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, generatedLabels, len(tmplRepoLabels))
|
||||||
|
for i, tmplLabel := range tmplRepoLabels {
|
||||||
|
genLabel := generatedLabels[i]
|
||||||
|
assert.Equal(t, tmplLabel.Name, genLabel.Name)
|
||||||
|
assert.Equal(t, tmplLabel.Exclusive, genLabel.Exclusive)
|
||||||
|
assert.Equal(t, tmplLabel.ExclusiveOrder, genLabel.ExclusiveOrder)
|
||||||
|
assert.Equal(t, tmplLabel.Color, genLabel.Color)
|
||||||
|
assert.Equal(t, tmplLabel.Description, genLabel.Description)
|
||||||
|
}
|
||||||
|
|
||||||
err = repo_service.DeleteRepositoryDirectly(t.Context(), generatedRepo.ID)
|
err = repo_service.DeleteRepositoryDirectly(t.Context(), generatedRepo.ID)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user