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