From a5acc1e34e2d15d230c7ccacf09748f20be251f54d9f0819c1f4b72bef64d4b1 Mon Sep 17 00:00:00 2001 From: Adam Majer Date: Wed, 19 Feb 2025 10:51:49 +0100 Subject: [PATCH] yolo --- workflow-pr/pr.go | 9 ++++++++- workflow-pr/pr_processor_reviewed.go | 7 ++++++- workflow-pr/pr_test.go | 8 ++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/workflow-pr/pr.go b/workflow-pr/pr.go index 7a2a5ea..6b48c81 100644 --- a/workflow-pr/pr.go +++ b/workflow-pr/pr.go @@ -173,16 +173,19 @@ func (rs *PRSet) AssignReviewers(gitea common.GiteaReviewFetcherAndRequester, ma return nil } -func (rs *PRSet) IsReviewed(gitea common.GiteaPRChecker, maintainers MaintainershipData) bool { +func (rs *PRSet) IsApproved(gitea common.GiteaPRChecker, maintainers MaintainershipData) bool { configReviewers := ParseReviewers(rs.config.Reviewers) is_reviewed := false for _, pr := range rs.prs { var reviewers []string + var pkg string if rs.IsPrjGitPR(pr.pr) { reviewers = configReviewers.Prj + pkg = "" } else { reviewers = configReviewers.Pkg + pkg = pr.pr.Base.Repo.Name } r, err := FetchGiteaReviews(gitea, reviewers, pr.pr.Base.Repo.Owner.UserName, pr.pr.Base.Repo.Name, pr.pr.Index) @@ -193,6 +196,10 @@ func (rs *PRSet) IsReviewed(gitea common.GiteaPRChecker, maintainers Maintainers if !is_reviewed { return false } + + if is_reviewed = maintainers.IsApproved(pkg, r.reviews); !is_reviewed { + return false + } } return is_reviewed } diff --git a/workflow-pr/pr_processor_reviewed.go b/workflow-pr/pr_processor_reviewed.go index 6872df2..75c452a 100644 --- a/workflow-pr/pr_processor_reviewed.go +++ b/workflow-pr/pr_processor_reviewed.go @@ -12,7 +12,12 @@ func (o *PullRequestReviewed) Process(req *common.PullRequestWebhookEvent, git c return err } - if prset.IsReviewed(o.gitea) { + maintainers, err := FetchProjectMaintainershipData(o.gitea, prset.config.Organization, prset.config.GitProjectName, prset.config.Branch) + if err != nil { + return err + } + + if prset.IsApproved(o.gitea, maintainers) { prset.Merge() } diff --git a/workflow-pr/pr_test.go b/workflow-pr/pr_test.go index cc14a4b..8968eba 100644 --- a/workflow-pr/pr_test.go +++ b/workflow-pr/pr_test.go @@ -221,8 +221,12 @@ func TestPR(t *testing.T) { t.Error("expected no errors assigning reviewers:", err) } */ - if isReviewed := res.IsReviewed(review_mock); isReviewed != test.reviewed { - t.Error("expected reviewed to be NOT", isReviewed) + + maintainers := mock_main.NewMockMaintainershipData(ctl) + maintainers.EXPECT().IsApproved(gomock.Any(), gomock.Any()).Return(true).AnyTimes() + + if isApproved := res.IsApproved(review_mock, maintainers); isApproved != test.reviewed { + t.Error("expected reviewed to be NOT", isApproved) } }) }