remove legacy
This commit is contained in:
parent
4dd864c7b6
commit
bfeaed40d5
@ -1,76 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
/*
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"slices"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"src.opensuse.org/autogits/common"
|
|
||||||
"src.opensuse.org/autogits/common/gitea-generated/models"
|
|
||||||
)
|
|
||||||
func fetchPRInfo(gitea GiteaPRInterface, pr common.BasicPR) PRInfo {
|
|
||||||
data, reviews, _ := gitea.GetPullRequestAndReviews(pr.Org, pr.Repo, pr.Num)
|
|
||||||
return PRInfo{
|
|
||||||
pr: data,
|
|
||||||
reviews: reviews,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rs *ReviewSet) appendPR(gitea GiteaPRInterface, pr common.BasicPR) {
|
|
||||||
if slices.ContainsFunc(rs.prs, func(elem PRInfo) bool {
|
|
||||||
return pr.Org == elem.pr.Base.Repo.Owner.UserName &&
|
|
||||||
pr.Repo == elem.pr.Base.Repo.Name &&
|
|
||||||
pr.Num == elem.pr.Index
|
|
||||||
}) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
prinfo := fetchPRInfo(gitea, pr)
|
|
||||||
rs.prs = append(rs.prs, prinfo)
|
|
||||||
_, childPRs := common.ExtractDescriptionAndPRs(bufio.NewScanner(strings.NewReader(prinfo.pr.Body)))
|
|
||||||
for _, childPR := range childPRs {
|
|
||||||
rs.appendPR(gitea, childPR)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewReviewInstance(gitea GiteaPRInterface, maintainers MaintainershipData, org, repo string, prNum int) (*ReviewSet, error) {
|
|
||||||
ret := &ReviewSet{
|
|
||||||
maintainers: maintainers,
|
|
||||||
prs: []PRInfo{},
|
|
||||||
}
|
|
||||||
|
|
||||||
ret.appendPR(gitea, common.BasicPR{Org: org, Repo: repo, Num: int64(prNum)})
|
|
||||||
return ret, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func isReviewMaintainerApproved(pkgMaintainersList []string, review *models.PullReview) bool {
|
|
||||||
if review.State != common.ReviewStateApproved || review.Stale {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if slices.Contains(pkgMaintainersList, review.User.UserName) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
func (prinfo *PRInfo) isMaintainerApproved(pkgMaintainersList []string) bool {
|
|
||||||
for _, review := range prinfo.reviews {
|
|
||||||
if isReviewMaintainerApproved(pkgMaintainersList, review) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (rs *ReviewSet) IsMaintainerApproved() (bool, error) {
|
|
||||||
for _, prinfo := range rs.prs {
|
|
||||||
pkgMaintainerList := rs.maintainers.ListPackageMaintainers(prinfo.pr.Base.Repo.Name)
|
|
||||||
if !prinfo.isMaintainerApproved(pkgMaintainerList) {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}*/
|
|
@ -1,285 +0,0 @@
|
|||||||
package main
|
|
||||||
/*
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"go.uber.org/mock/gomock"
|
|
||||||
"src.opensuse.org/autogits/common"
|
|
||||||
"src.opensuse.org/autogits/common/gitea-generated/models"
|
|
||||||
mock_main "src.opensuse.org/workflow-pr/mock"
|
|
||||||
)
|
|
||||||
|
|
||||||
type pr_review map[string]struct {
|
|
||||||
pr *models.PullRequest
|
|
||||||
reviews []*models.PullReview
|
|
||||||
maintainers []string
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestReviewApproval(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
prs pr_review
|
|
||||||
|
|
||||||
approved bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
name: "Maintainer not approved",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "nothing PR: foo/foo#10", Index: 10,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{},
|
|
||||||
maintainers: []string{"bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Maintainer approved",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Maintainer approval is missing",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"kong", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Maintainer dis-approved",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateRequestChanges,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Maintainer review is stale",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
Stale: true,
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Part of ReviewSet is not approved",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "PR: foo/bar#10", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
"foo/bar#10": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "PR: org/repo#42", Index: 10,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "bar"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateRequestChanges,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "Review set approved",
|
|
||||||
prs: pr_review{
|
|
||||||
"org/repo#42": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "PR: foo/bar#10", Index: 42,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "repo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
"foo/bar#10": {
|
|
||||||
pr: &models.PullRequest{
|
|
||||||
Body: "PR: org/repo#42", Index: 10,
|
|
||||||
RequestedReviewers: []*models.User{},
|
|
||||||
Base: &models.PRBranchInfo{
|
|
||||||
Repo: &models.Repository{
|
|
||||||
Owner: &models.User{UserName: "org"},
|
|
||||||
Name: "bar"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reviews: []*models.PullReview{
|
|
||||||
&models.PullReview{
|
|
||||||
Body: "wow!",
|
|
||||||
State: common.ReviewStateApproved,
|
|
||||||
User: &models.User{
|
|
||||||
UserName: "king",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
maintainers: []string{"king", "bingo"},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
approved: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
t.Run(test.name, func(t *testing.T) {
|
|
||||||
ctl := gomock.NewController(t)
|
|
||||||
pr := mock_main.NewMockGiteaPRInterface(ctl)
|
|
||||||
maintainership := mock_main.NewMockMaintainershipData(ctl)
|
|
||||||
|
|
||||||
for params, prs := range test.prs {
|
|
||||||
_, data := common.ExtractDescriptionAndPRs(bufio.NewScanner(strings.NewReader("PR: " + params)))
|
|
||||||
if len(data) != 1 {
|
|
||||||
t.Fatal("bad test setup, fix")
|
|
||||||
}
|
|
||||||
pr.EXPECT().GetPullRequestAndReviews(data[0].Org, data[0].Repo, data[0].Num).
|
|
||||||
Return(prs.pr, prs.reviews, nil)
|
|
||||||
maintainership.EXPECT().ListPackageMaintainers(data[0].Repo).Return(prs.maintainers)
|
|
||||||
}
|
|
||||||
|
|
||||||
info, _ := NewReviewInstance(pr, maintainership, "org", "repo", 42)
|
|
||||||
|
|
||||||
approved, _ := info.IsMaintainerApproved()
|
|
||||||
if test.approved != approved {
|
|
||||||
t.Error("Unexpected approval state:", approved)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
Loading…
x
Reference in New Issue
Block a user