예제 #1
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_pull_request_with_label(self):
        label_name = "test label"
        pull_request = build(builder.pull_request().label(
            builder.label().name(label_name)))

        self.assertTrue(
            github_logic.pull_request_has_label(pull_request, label_name))
예제 #2
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_noop_if_feature_not_enabled(self, add_pr_comment_mock,
                                         edit_pr_title_mock):
        pull_request = build(builder.pull_request().label(builder.label().name(
            github_logic.AutomergeLabel.AFTER_TESTS_AND_APPROVAL.value)))

        github_logic.maybe_add_automerge_warning_comment(pull_request)

        add_pr_comment_mock.assert_not_called()
 def test_is_pull_request_ready_for_automerge_after_tests_no_review(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)
     ).title("blah blah [shipit]").mergeable(
         MergeableState.MERGEABLE).merged(False).label(builder.label().name(
             github_logic.AutomergeLabel.AFTER_TESTS_AND_APPROVAL.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
 def test_is_pull_request_ready_for_automerge_no_automerge_label(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.APPROVED)).mergeable(
                     MergeableState.MERGEABLE).merged(False).label(
                         builder.label().name("random label")))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
예제 #5
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_does_not_add_warning_comment_if_label_does_not_require_approval(
            self, add_pr_comment_mock, edit_pr_title_mock):
        pull_request = build(builder.pull_request().title(
            self.SAMPLE_PR_TITLE).label(builder.label().name(
                github_logic.AutomergeLabel.AFTER_TESTS.value)))

        github_logic.maybe_add_automerge_warning_comment(pull_request)

        add_pr_comment_mock.assert_not_called()
 def test_is_pull_request_ready_for_automerge_immediately_conflicting(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_FAILED)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.CHANGES_REQUESTED)).mergeable(
                     MergeableState.CONFLICTING).merged(False).label(
                         builder.label().name(github_logic.AutomergeLabel.
                                              IMMEDIATELY.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
 def test_is_pull_request_ready_for_automerge_after_tests(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.CHANGES_REQUESTED)).mergeable(
                     MergeableState.MERGEABLE).merged(False).label(
                         builder.label().name(github_logic.AutomergeLabel.
                                              AFTER_TESTS.value)))
     self.assertTrue(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
 def test_is_pull_request_ready_for_automerge_build_pending(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_PENDING)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.APPROVED)).mergeable(
                     MergeableState.MERGEABLE).merged(False).label(
                         builder.label().name(github_logic.AutomergeLabel.
                                              AFTER_TESTS.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
예제 #9
0
파일: test_logic.py 프로젝트: Asana/SGTM
 def test_false_if_feature_not_enabled(self):
     pull_request = build(
         builder.pull_request()
         .merged(True)
         .label(
             builder.label().name(
                 asana_logic.AutocompleteLabel.COMPLETE_ON_MERGE.value
             )
         )
     )
     self.assertFalse(asana_logic.should_autocomplete_tasks_on_merge(pull_request))
예제 #10
0
파일: test_logic.py 프로젝트: Asana/SGTM
 def test_true_if_should_autocomplete(self):
     pull_request = build(
         builder.pull_request()
         .merged(True)
         .label(
             builder.label().name(
                 asana_logic.AutocompleteLabel.COMPLETE_ON_MERGE.value
             )
         )
     )
     self.assertTrue(asana_logic.should_autocomplete_tasks_on_merge(pull_request))
 def test_is_pull_request_ready_for_automerge_after_tests_mergeable_is_false(
         self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.APPROVED)).mergeable(
                     MergeableState.CONFLICTING).merged(False).label(
                         builder.label().name(github_logic.AutomergeLabel.
                                              AFTER_TESTS.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
 def test_is_pull_request_ready_for_automerge_autofail_if_merged(self):
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)).review(
             builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                 ReviewState.APPROVED)).mergeable(
                     MergeableState.MERGEABLE).merged(True).closed(
                         False).label(builder.label().name(
                             github_logic.AutomergeLabel.
                             AFTER_TESTS_AND_APPROVAL.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
 def test_is_pull_request_ready_for_automerge_after_approval(self):
     pull_request = build(
         builder.pull_request().commit(
             builder.commit().status(Commit.BUILD_PENDING)
         )  # build hasn't finished, but PR is approved
         .review(builder.review().submitted_at(
             "2020-01-13T14:59:58Z").state(ReviewState.APPROVED)).mergeable(
                 MergeableState.MERGEABLE).merged(False).label(
                     builder.label().name(
                         github_logic.AutomergeLabel.AFTER_APPROVAL.value)))
     self.assertTrue(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
예제 #14
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_does_not_add_warning_comment_if_pr_is_approved(
            self, add_pr_comment_mock, edit_pr_title_mock):
        pull_request = build(builder.pull_request().title(
            self.SAMPLE_PR_TITLE).label(builder.label().name(
                github_logic.AutomergeLabel.AFTER_TESTS_AND_APPROVAL.value
            )).review(
                builder.review().submitted_at("2020-01-13T14:59:58Z").state(
                    ReviewState.APPROVED)))

        github_logic.maybe_add_automerge_warning_comment(pull_request)

        add_pr_comment_mock.assert_not_called()
예제 #15
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_does_not_add_warning_if_has_label_and_already_has_warning_in_comments(
            self, add_pr_comment_mock, edit_pr_title_mock):
        pull_request = build(builder.pull_request().comments([
            builder.comment().author(
                builder.user("github_unknown_user_login")).body(
                    github_logic.AUTOMERGE_COMMENT_WARNING)
        ]).label(builder.label().name(
            github_logic.AutomergeLabel.AFTER_TESTS_AND_APPROVAL.value)))

        github_logic.maybe_add_automerge_warning_comment(pull_request)

        edit_pr_title_mock.assert_not_called()
        add_pr_comment_mock.assert_not_called()
 def test_is_pull_request_ready_for_automerge_after_approval_approved_and_requested_changes(
     self, ):
     author_1 = builder.user().login("author_1")
     author_2 = builder.user().login("author_2")
     pull_request = build(builder.pull_request().commit(
         builder.commit().status(Commit.BUILD_SUCCESSFUL)).reviews([
             builder.review().submitted_at("2020-01-11T14:59:58Z").state(
                 ReviewState.CHANGES_REQUESTED).author(author_1),
             builder.review().submitted_at("2020-01-12T14:59:58Z").state(
                 ReviewState.APPROVED).author(author_2),
         ]).mergeable(MergeableState.MERGEABLE).merged(False).label(
             builder.label().name(github_logic.AutomergeLabel.
                                  AFTER_TESTS_AND_APPROVAL.value)))
     self.assertFalse(
         github_logic._is_pull_request_ready_for_automerge(pull_request))
예제 #17
0
파일: test_logic.py 프로젝트: Asana/SGTM
    def test_adds_warnings_if_label_and_no_warning_in_comments(
            self, add_pr_comment_mock, edit_pr_title_mock):
        for label in [
                github_logic.AutomergeLabel.AFTER_TESTS_AND_APPROVAL.value,
                github_logic.AutomergeLabel.AFTER_APPROVAL.value,
        ]:
            pull_request = build(builder.pull_request().title(
                self.SAMPLE_PR_TITLE).label(builder.label().name(label)))

            github_logic.maybe_add_automerge_warning_comment(pull_request)

            add_pr_comment_mock.assert_called_with(
                pull_request.repository_owner_handle(),
                pull_request.repository_name(),
                pull_request.number(),
                github_logic.AUTOMERGE_COMMENT_WARNING,
            )