review/tests/test_signoff.py @ 22de90ef33ed
Add identifiers to ReviewChangeset's and ReviewSignoff's. The identifier of a rcset/rsignoff is the filename it was saved as, which is the hash of its contents. This will be useful when we want to add replies to comments/signoffs. CLI support for this feature has also been added (using --verbose and --debug flags with 'hg review [-r REV]'), as well as some simple unit tests.
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Sat, 27 Mar 2010 11:10:12 -0400 |
| parents | a5bfe965d4bc |
| children | a909c2ba47f0 |
from nose import * from util import * from .. import messages import os from mercurial import util as hgutil from mercurial.node import hex s1, s2 = (messages.REVIEW_LOG_SIGNOFF_AUTHOR % ('|', 'neutral')).split('|') sy1, sy2 = (messages.REVIEW_LOG_SIGNOFF_AUTHOR % ('|', 'yes')).split('|') sn1, sn2 = (messages.REVIEW_LOG_SIGNOFF_AUTHOR % ('|', 'no')).split('|') @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_no_signoffs(): output = review() assert messages.REVIEW_LOG_SIGNOFFS % (0, 0, 0, 0) in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_blank_signoff(): try: review(signoff=True) except hgutil.Abort, e: error = str(e) assert messages.SIGNOFF_REQUIRES_MESSAGE in error else: assert False, 'The correct error message was not printed.' @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_signoff_on_parent_rev(): review(signoff=True, message='Test signoff one.') output = review() assert messages.REVIEW_LOG_SIGNOFFS % (1, 0, 0, 1) in output assert s1 in output assert s1 in output assert messages.REVIEW_LOG_SIGNOFF_LINE % 'Test signoff one.' in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_signoff_on_specific_rev(): review(signoff=True, message='Test signoff one.', rev='0') output = review(rev='0') assert messages.REVIEW_LOG_SIGNOFFS % (1, 0, 0, 1) in output output = review() assert messages.REVIEW_LOG_SIGNOFFS % (0, 0, 0, 0) in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_multiple_signoffs(): review(signoff=True, message='Test signoff one.') try: review(signoff=True, message='Test signoff two.') except hgutil.Abort, e: error = str(e) assert messages.SIGNOFF_EXISTS in error else: assert False, 'The correct error message was not printed.' review(signoff=True, message='Test signoff two.', force=True) output = review() assert messages.REVIEW_LOG_SIGNOFFS % (1, 0, 0, 1) in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_signoff_yes(): review(signoff=True, yes=True, message='Test signoff one.') output = review() assert messages.REVIEW_LOG_SIGNOFFS % (1, 1, 0, 0) in output assert sy1 in output assert sy1 in output assert messages.REVIEW_LOG_SIGNOFF_LINE % 'Test signoff one.' in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_signoff_no(): review(signoff=True, no=True, message='Test signoff one.') output = review() assert messages.REVIEW_LOG_SIGNOFFS % (1, 0, 1, 0) in output assert sn1 in output assert sn1 in output assert messages.REVIEW_LOG_SIGNOFF_LINE % 'Test signoff one.' in output @with_setup(setup_reviewed_sandbox, teardown_sandbox) def test_signoff_identifiers(): review(signoff=True, message='Test signoff one.', rev='0') rd = api.ReviewDatastore(get_ui(), get_sandbox_repo()) dsr = get_datastore_repo() signoff = rd['0'].signoffs[0] identifier = signoff.identifier short_identifier = identifier[:12] signoff_filename = api._split_path_dammit(dsr['tip'].files()[0])[-1] signoff_cset = hex(dsr['tip'].node()) assert identifier == signoff_filename assert identifier != signoff_cset verbose_identifier = messages.REVIEW_LOG_IDENTIFIER % identifier[:12] debug_identifier = messages.REVIEW_LOG_IDENTIFIER % identifier normal_output = review(rev='0') assert verbose_identifier not in normal_output assert debug_identifier not in normal_output verbose_output = review(rev='0', verbose=True) assert verbose_identifier in verbose_output assert debug_identifier not in verbose_output debug_output = review(rev='0', debug=True) assert verbose_identifier not in debug_output assert debug_identifier in debug_output