def test_L_EmptyDiff(self):

        # fail to create review with empty diff
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        branch_data.raw_diff = ""
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the empty diff
        branch_data.raw_diff = "raw diff"
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # empty diff again
        branch_data.raw_diff = ""
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the empty diff
        branch_data.raw_diff = "raw diff2"
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_I_MergeConflicts(self):

        def error_land(self, unused_name, unused_email, unused_message):
            raise abdt_exception.LandingException(
                'landing exception',
                '<review branch name>',
                '<base branch name>')

        # create review ok
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])

        # fail to land
        old_land = branch.land
        branch.land = types.MethodType(error_land, branch)
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_status_bad_land())

        # fix the landing error
        branch.land = old_land
        branch_data.has_new_commits = True

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_C_NoTestPlan(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()

        def error_parse_commit_message(self, unused_message):
            return phlcon_differential.ParseCommitMessageResponse(
                fields=None, errors=["FAKE ERROR"])

        regular_parse = self.conduit.parse_commit_message
        self.conduit.parse_commit_message = types.MethodType(
            error_parse_commit_message, self.conduit)

        self._process_branches([branch])

        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertFalse(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertTrue(branch.is_status_bad())

        self.conduit.parse_commit_message = regular_parse
        self.conduit_data.set_unchanged()
        branch_data.has_new_commits = True

        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])

        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertTrue(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
    def test_L_EmptyDiff(self):

        # fail to create review with empty diff
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        branch_data.raw_diff = ""
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the empty diff
        branch_data.raw_diff = "raw diff"
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # empty diff again
        branch_data.raw_diff = ""
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the empty diff
        branch_data.raw_diff = "raw diff2"
        branch_data.has_new_commits = True
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_J_DiffTooBig(self):
        def error_diff(self):
            raise abdt_exception.LargeDiffException("diff too big", 100, 10)

        # fail to create review
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        old_diff = branch.make_raw_diff
        branch.make_raw_diff = types.MethodType(error_diff, branch)
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the large diff
        branch.make_raw_diff = old_diff
        branch_data.has_new_commits = True

        # update the review ok
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_I_MergeConflicts(self):
        def error_land(self, unused_name, unused_email, unused_message):
            raise abdt_exception.LandingException('landing exception',
                                                  '<review branch name>',
                                                  '<base branch name>')

        # create review ok
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])

        # fail to land
        old_land = branch.land
        branch.land = types.MethodType(error_land, branch)
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_status_bad_land())

        # fix the landing error
        branch.land = old_land
        branch_data.has_new_commits = True

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_J_DiffTooBig(self):

        def error_diff(self):
            raise abdt_exception.LargeDiffException("diff too big", 100, 10)

        # fail to create review
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        old_diff = branch.make_raw_diff
        branch.make_raw_diff = types.MethodType(error_diff, branch)
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad_pre_review())
        self.assertFalse(branch.is_status_bad_land())
        self.assertTrue(branch.is_status_bad())

        # fix the large diff
        branch.make_raw_diff = old_diff
        branch_data.has_new_commits = True

        # update the review ok
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # land ok
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])
        self.assertTrue(branch.is_null())
    def test_C_NoTestPlan(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()

        def error_parse_commit_message(self, unused_message):
            return phlcon_differential.ParseCommitMessageResponse(
                fields=None, errors=["FAKE ERROR"])

        regular_parse = self.conduit.parse_commit_message
        self.conduit.parse_commit_message = types.MethodType(
            error_parse_commit_message, self.conduit)

        self._process_branches([branch])

        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertFalse(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertTrue(branch.is_status_bad())

        self.conduit.parse_commit_message = regular_parse
        self.conduit_data.set_unchanged()
        branch_data.has_new_commits = True

        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])

        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertTrue(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
    def test_D_UnexpectedClose(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])

        revision = self.conduit_data.get_revision(branch_data.revision_id)
        revision.set_closed()
        branch_data.has_new_commits = True

        self._process_branches([branch])
        self.assertTrue(branch.is_status_bad())
    def test_D_UnexpectedClose(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])

        revision = self.conduit_data.get_revision(branch_data.revision_id)
        revision.set_closed()
        branch_data.has_new_commits = True

        self._process_branches([branch])
        self.assertTrue(branch.is_status_bad())
    def test_M_NoLandingAuthor(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # set bad email addresses and accept the review
        branch_data.names_emails = abdt_branchmock.create_bad_names_emails()
        branch_data.has_new_commits = True
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])

        # ensure that the review is landed
        self.assertTrue(branch.is_null())
    def test_M_NoLandingAuthor(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())

        # set bad email addresses and accept the review
        branch_data.names_emails = abdt_branchmock.create_bad_names_emails()
        branch_data.has_new_commits = True
        self.conduit_data.accept_the_only_review()
        self._process_branches([branch])

        # ensure that the review is landed
        self.assertTrue(branch.is_null())
    def test_K_ExceptionDuringProcessing(self):
        class test_K_ExceptionDuringProcessing_Exception(Exception):
            pass

        def error_diff(self):
            raise test_K_ExceptionDuringProcessing_Exception()

        # fail to create review
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        branch.make_raw_diff = types.MethodType(error_diff, branch)

        # make sure it raises our exception
        self.assertRaises(test_K_ExceptionDuringProcessing_Exception,
                          self._process_branches, [branch])
    def test_B_Uncomplicated(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertEqual(len(self.conduit_data.revisions), 1)

        self.conduit_data.accept_the_only_review()
        self.conduit_data.set_unchanged()
        self._process_branches([branch])
        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertTrue(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertTrue(branch.is_new())
    def test_B_Uncomplicated(self):
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        self._process_branches([branch])
        self.assertFalse(branch.is_status_bad())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertEqual(len(self.conduit_data.revisions), 1)

        self.conduit_data.accept_the_only_review()
        self.conduit_data.set_unchanged()
        self._process_branches([branch])
        self.assertEqual(len(self.conduit_data.revisions), 1)
        self.assertTrue(self.conduit_data.revisions[0].is_closed())
        self.assertTrue(self.mock_sender.is_empty())
        self.assertFalse(self.conduit_data.is_unchanged())
        self.assertTrue(branch.is_new())
    def test_K_ExceptionDuringProcessing(self):

        class test_K_ExceptionDuringProcessing_Exception(Exception):
            pass

        def error_diff(self):
            raise test_K_ExceptionDuringProcessing_Exception()

        # fail to create review
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        branch.make_raw_diff = types.MethodType(error_diff, branch)

        # make sure it raises our exception
        self.assertRaises(
            test_K_ExceptionDuringProcessing_Exception,
            self._process_branches,
            [branch])
    def test_K_ExceptionDuringProcessing(self):

        class test_K_ExceptionDuringProcessing_Exception(Exception):
            pass

        def error_diff(self):
            raise test_K_ExceptionDuringProcessing_Exception()

        # fail to create review
        branch, branch_data = abdt_branchmock.create_simple_new_review()
        branch.make_raw_diff = types.MethodType(error_diff, branch)

        # make sure it raises our exception
        self.assertRaises(
            test_K_ExceptionDuringProcessing_Exception,
            self._process_branches,
            [branch])

        # make sure the current branch is set in the report
        self.assertEqual(
            self.reporter_try[abdt_reporeporter.REPO_ATTRIB_STATUS_BRANCH],
            branch.review_branch_name())
 def _setup_for_untracked_branch(self, repo_name='name', branch_url=None):
     branch, data = abdt_branchmock.create_simple_new_review(
         repo_name, branch_url)
     return data.base_branch, data.review_branch, branch
 def test_A_Breathing(self):
     abdt_branchmock.create_simple_new_review()
Exemple #20
0
 def test_A_Breathing(self):
     abdt_branchmock.create_simple_new_review()
Exemple #21
0
 def _setup_for_untracked_branch(self, repo_name='name', branch_url=None):
     branch, data = abdt_branchmock.create_simple_new_review(
         repo_name, branch_url)
     return data.base_branch, data.review_branch, branch