def update_revision(self, revisionid, raw_diff, message): """Update an existing Differential revision with a new diff. :revisionid: id of the Differential revision to update :raw_diff: raw output string from e.g. 'git diff master...' :message: string message to annotate the update event with :returns: None """ # do some sanity checks before committing to the expensive operation # of storing a diff in Differential status = self._reviewstate_cache.get_status(revisionid) if status == phlcon_differential.ReviewStates.closed: raise abdt_exception.AbdUserException( "can't update a closed revision") author_user = self._get_author_user(revisionid) with phlsys_conduit.act_as_user_context(self._conduit, author_user): diffid = phlcon_differential.create_raw_diff( self._conduit, raw_diff).id try: phlcon_differential.update_revision( self._conduit, revisionid, diffid, [], message) except phlcon_differential.UpdateClosedRevisionError: raise abdt_exception.AbdUserException( "CONDUIT: can't update a closed revision") self._log( 'conduit-updaterev', 'updated {} as {}'.format(revisionid, author_user))
def update_revision(self, revisionid, raw_diff, message): """Update an existing Differential revision with a new diff. :revisionid: id of the Differential revision to update :raw_diff: raw output string from e.g. 'git diff master...' :message: string message to annotate the update event with :returns: None """ # do some sanity checks before committing to the expensive operation # of storing a diff in Differential state = self._reviewstate_cache.get_state(revisionid) if state.status == phlcon_differential.ReviewStates.closed: raise abdt_exception.AbdUserException( "can't update a closed revision") author_user = self._get_author_user(revisionid) as_user_conduit = self._make_as_user_conduit(author_user) with self._log_context( 'conduit-updaterev', 'update {} as {}'.format(revisionid, author_user)): diffid = phlcon_differential.create_raw_diff( as_user_conduit, raw_diff).id try: phlcon_differential.update_revision(as_user_conduit, revisionid, diffid, [], message) except phlcon_differential.UpdateClosedRevisionError: raise abdt_exception.AbdUserException( "CONDUIT: can't update a closed revision")
def testUpdateStrangeFields(self): revisionid = self._createRevision("testUpdateStrangeFields") message = "test\n\nmeh: blah\nstrange: blah\n123: blah\ntest plan: hmm" diff = """diff --git a/ b/""" diff_response = phlcon_differential.create_raw_diff(self.conduit, diff) parse_response = phlcon_differential.parse_commit_message(self.conduit, message) print str(parse_response.fields) phlcon_differential.update_revision(self.conduit, revisionid, diff_response.id, parse_response.fields, "update")
def testUpdateStrangeFields(self): revisionid = self._createRevision("testUpdateStrangeFields") message = "test\n\nmeh: blah\nstrange: blah\n123: blah\ntest plan: hmm" diff = """diff --git a/ b/""" diff_response = phlcon_differential.create_raw_diff(self.conduit, diff) parse_response = phlcon_differential.parse_commit_message( self.conduit, message) print(str(parse_response.fields)) phlcon_differential.update_revision( self.conduit, revisionid, diff_response.id, parse_response.fields, "update")
def testCreateCloseRawDiffRevision(self): diff = """ diff --git a/readme b/readme index d4711bb..ee5b241 100644 --- a/readme +++ b/readme @@ -7,3 +7,4 @@ and one more!! -- and one last(?) one alaric! local stuff! +manual conduit submission """ message = """ add a line to README Test Plan: I proof-read it and it looked ok """ diff2 = """ diff --git a/readme b/readme index d4711bb..1c634f5 100644 --- a/readme +++ b/readme @@ -7,3 +7,5 @@ and one more!! -- and one last(?) one alaric! local stuff! +manual conduit submission +another line """ diff_response = phlcon_differential.create_raw_diff(self.conduit, diff) get_diff_response = phlcon_differential._get_diff( self.conduit, diff_id=diff_response.id) self.assertEqual(get_diff_response.id, diff_response.id) parse_response = phlcon_differential.parse_commit_message( self.conduit, message) self.assertEqual(len(parse_response.errors), 0) create_response = phlcon_differential.create_revision( self.conduit, diff_response.id, parse_response.fields) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.needs_review) diff2_response = phlcon_differential.create_raw_diff( self.conduit, diff2) update_response = phlcon_differential.update_revision( self.conduit, create_response.revisionid, diff2_response.id, parse_response.fields, "updated with new diff") self.assertEqual( update_response.revisionid, create_response.revisionid) self.assertEqual(update_response.uri, create_response.uri) comment_response = phlcon_differential.create_comment( self.reviewerConduit, create_response.revisionid, action="accept") self.assertEqual( comment_response.revisionid, create_response.revisionid) self.assertEqual(comment_response.uri, create_response.uri) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.accepted) phlcon_differential.close(self.conduit, create_response.revisionid) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.closed)
def testUpdateNoFields(self): revisionid = self._createRevision("testUpdateNoFields") diff = """diff --git a/ b/""" diff_response = phlcon_differential.create_raw_diff(self.conduit, diff) phlcon_differential.update_revision( self.conduit, revisionid, diff_response.id, [], "update")
def testCreateCloseRawDiffRevision(self): diff = """ diff --git a/readme b/readme index d4711bb..ee5b241 100644 --- a/readme +++ b/readme @@ -7,3 +7,4 @@ and one more!! -- and one last(?) one alaric! local stuff! +manual conduit submission """ message = """ add a line to README Test Plan: I proof-read it and it looked ok """ diff2 = """ diff --git a/readme b/readme index d4711bb..1c634f5 100644 --- a/readme +++ b/readme @@ -7,3 +7,5 @@ and one more!! -- and one last(?) one alaric! local stuff! +manual conduit submission +another line """ diff_response = phlcon_differential.create_raw_diff(self.conduit, diff) parse_response = phlcon_differential.parse_commit_message( self.conduit, message) self.assertEqual(len(parse_response.errors), 0) create_response = phlcon_differential.create_revision( self.conduit, diff_response.id, parse_response.fields) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.needs_review) diff2_response = phlcon_differential.create_raw_diff( self.conduit, diff2) update_response = phlcon_differential.update_revision( self.conduit, create_response.revisionid, diff2_response.id, parse_response.fields, "updated with new diff") self.assertEqual( update_response.revisionid, create_response.revisionid) self.assertEqual(update_response.uri, create_response.uri) comment_response = phlcon_differential.create_comment( self.reviewerConduit, create_response.revisionid, action="accept") self.assertEqual( comment_response.revisionid, create_response.revisionid) self.assertEqual(comment_response.uri, create_response.uri) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.accepted) phlcon_differential.close(self.conduit, create_response.revisionid) query_response_list = phlcon_differential.query( self.conduit, [create_response.revisionid]) self.assertEqual(len(query_response_list), 1) self.assertEqual(query_response_list[0].uri, create_response.uri) self.assertEqual(query_response_list[0].id, create_response.revisionid) self.assertEqual( query_response_list[0].status, phlcon_differential.ReviewStates.closed)