This is an automated email from the ASF dual-hosted git repository.

zixuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-test-infra.git


The following commit(s) were added to refs/heads/master by this push:
     new 19e15d1  Fix remove labels (#70)
19e15d1 is described below

commit 19e15d1ca3d5749dffb9beea3227476fb1427b30
Author: Zixuan Liu <[email protected]>
AuthorDate: Thu Sep 8 23:17:26 2022 +0800

    Fix remove labels (#70)
    
    * Fix remove labels
    
    * Fix style
---
 docbot/action.go      | 17 +++++++++------
 docbot/action_test.go | 57 +++++++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 62 insertions(+), 12 deletions(-)

diff --git a/docbot/action.go b/docbot/action.go
index 026a9f7..f8deead 100644
--- a/docbot/action.go
+++ b/docbot/action.go
@@ -17,6 +17,11 @@ const (
 Instructions see [Pulsar Documentation Label 
Guide](https://docs.google.com/document/d/1Qw7LHQdXWBW9t2-r-A7QdFDBwmZh6ytB4guwMoXHqc0).`
        MessageLabelMultiple = `Please select only one documentation label for 
your PR.
 Instructions see [Pulsar Documentation Label 
Guide](https://docs.google.com/document/d/1Qw7LHQdXWBW9t2-r-A7QdFDBwmZh6ytB4guwMoXHqc0).`
+
+       openedActionType    = "opened"
+       editedActionType    = "edited"
+       labeledActionType   = "labeled"
+       unlabeledActionType = "unlabeled"
 )
 
 type Action struct {
@@ -51,7 +56,7 @@ func (a *Action) Run(prNumber int, actionType string) error {
        a.prNumber = prNumber
 
        switch actionType {
-       case "opened", "edited", "labeled", "unlabeled":
+       case openedActionType, editedActionType, labeledActionType, 
unlabeledActionType:
                return a.checkLabels()
        }
        return nil
@@ -68,6 +73,8 @@ func (a *Action) checkLabels() error {
                bodyLabels = a.extractLabels(*pr.Body)
        }
 
+       logger.Infof("PR description: %v\n", *pr.Body)
+
        logger.Infoln("@List repo labels")
        repoLabels, err := a.getRepoLabels()
        if err != nil {
@@ -128,11 +135,9 @@ func (a *Action) checkLabels() error {
                }
 
                for label, checked := range expectedLabelsMap {
-                       _, found := prLabels[label]
-                       if found {
-                               continue
-                       }
-                       if checked {
+                       if _, found := prLabels[label]; found && !checked {
+                               labelsToRemove[label] = struct{}{}
+                       } else if !found && checked {
                                labelsToAdd[label] = struct{}{}
                        }
                }
diff --git a/docbot/action_test.go b/docbot/action_test.go
index a2af4f6..fccefe0 100644
--- a/docbot/action_test.go
+++ b/docbot/action_test.go
@@ -85,7 +85,7 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        if err != nil {
                t.Fatal(err)
        }
@@ -137,7 +137,7 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        if err != nil {
                t.Fatal(err)
        }
@@ -183,7 +183,7 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        assertMessageLabel(t, err, MessageLabelMissing)
 }
 
@@ -227,7 +227,7 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        assertMessageLabel(t, err, MessageLabelMultiple)
 }
 
@@ -271,7 +271,7 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        if err != nil {
                t.Fatal(err)
        }
@@ -315,6 +315,51 @@ Need to update docs?
        config := mustNewActionConfig()
        action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
 
-       err := action.Run(1, "opened")
+       err := action.Run(1, openedActionType)
        assertMessageLabel(t, err, MessageLabelMissing)
 }
+
+func TestSingleChecked_WhenDocLabelExists(t *testing.T) {
+       id := int64(1)
+       body := fmt.Sprintf(`
+Check the box below or label this PR directly.
+
+Need to update docs?
+
+- [ ] %s
+(Your PR needs to update docs and you will update later)
+
+- [x] %s
+(Please explain why)
+
+- [ ] %s
+(Your PR contains doc changes)
+
+- [ ] %s
+(Docs have been already added)
+`, "`doc-required`", "`doc-not-needed`", "`doc`", "`doc-complete`")
+
+       docLabel := "doc"
+       mockedHTTPClient := mock.NewMockedHTTPClient(
+               mock.WithRequestMatch(
+                       mock.GetReposPullsByOwnerByRepoByPullNumber,
+                       github.PullRequest{
+                               ID:     &id,
+                               Body:   &body,
+                               Labels: []*github.Label{{Name: &docLabel}},
+                       },
+               ), mock.WithRequestMatch(
+                       mock.GetReposLabelsByOwnerByRepo,
+                       repoLabels(),
+               ),
+               
mock.WithRequestMatch(mock.PostReposIssuesLabelsByOwnerByRepoByIssueNumber, 
nil),
+               
mock.WithRequestMatch(mock.DeleteReposIssuesLabelsByOwnerByRepoByIssueNumberByName,
 nil),
+       )
+       config := mustNewActionConfig()
+       action := NewActionWithClient(context.Background(), config, 
github.NewClient(mockedHTTPClient))
+
+       err := action.Run(1, openedActionType)
+       if err != nil {
+               t.Fatal(err)
+       }
+}

Reply via email to