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_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_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_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_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()