Mercurial > kallithea
diff rhodecode/tests/functional/test_compare.py @ 2684:2b6939a77052 beta
Bumped mercurial version to 2.3
- fixed issues with compare of two remote repos at particular revisions
- added tests for cases when mercurial update broke code and tests didn't catch this
- removed obsolete EmptyChangeset from the rhodecode code
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 04 Aug 2012 01:20:38 +0200 |
parents | 8eab81115660 |
children | 69420c48a0e6 |
line wrap: on
line diff
--- a/rhodecode/tests/functional/test_compare.py Fri Aug 03 23:07:26 2012 +0200 +++ b/rhodecode/tests/functional/test_compare.py Sat Aug 04 01:20:38 2012 +0200 @@ -1,12 +1,17 @@ from rhodecode.tests import * +from rhodecode.model.repo import RepoModel +from rhodecode.model.meta import Session +from rhodecode.model.db import Repository +from rhodecode.model.scm import ScmModel +from rhodecode.lib.vcs.backends.base import EmptyChangeset class TestCompareController(TestController): def test_index_tag(self): self.log_user() - tag1='0.1.3' - tag2='0.1.2' + tag1 = '0.1.3' + tag2 = '0.1.2' response = self.app.get(url(controller='compare', action='index', repo_name=HG_REPO, org_ref_type="tag", @@ -50,3 +55,135 @@ response.mustcontain('%s@default -> %s@default' % (HG_REPO, HG_REPO)) # branch are equal response.mustcontain('<tr><td>No changesets</td></tr>') + + def test_compare_revisions(self): + self.log_user() + rev1 = '3d8f361e72ab' + rev2 = 'b986218ba1c9' + response = self.app.get(url(controller='compare', action='index', + repo_name=HG_REPO, + org_ref_type="rev", + org_ref=rev1, + other_ref_type="rev", + other_ref=rev2, + )) + response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_REPO, rev2)) + ## outgoing changesets between those revisions + response.mustcontain("""<a href="/%s/changeset/3d8f361e72ab303da48d799ff1ac40d5ac37c67e">r1:%s</a>""" % (HG_REPO, rev1)) + + ## files + response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--c8e92ef85cd1">.hgignore</a>""" % (HG_REPO, rev1, rev2)) + + def test_compare_remote_repos(self): + self.log_user() + + form_data = dict( + repo_name=HG_FORK, + repo_name_full=HG_FORK, + repo_group=None, + repo_type='hg', + description='', + private=False, + copy_permissions=False, + landing_rev='tip', + update_after_clone=False, + fork_parent_id=Repository.get_by_repo_name(HG_REPO), + ) + RepoModel().create_fork(form_data, cur_user=TEST_USER_ADMIN_LOGIN) + + Session().commit() + + rev1 = '7d4bc8ec6be5' + rev2 = '56349e29c2af' + + response = self.app.get(url(controller='compare', action='index', + repo_name=HG_REPO, + org_ref_type="rev", + org_ref=rev1, + other_ref_type="rev", + other_ref=rev2, + repo=HG_FORK + )) + + try: + response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) + ## outgoing changesets between those revisions + + response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev1)) + response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) + response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) + + ## files + response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2)) + response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--41b41c1f2796">vcs/backends/__init__.py</a>""" % (HG_REPO, rev1, rev2)) + response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--2f574d260608">vcs/backends/base.py</a>""" % (HG_REPO, rev1, rev2)) + finally: + RepoModel().delete(HG_FORK) + + def test_compare_extra_commits(self): + self.log_user() + + repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', + description='diff-test', + owner=TEST_USER_ADMIN_LOGIN) + + repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg', + description='diff-test', + owner=TEST_USER_ADMIN_LOGIN) + + Session().commit() + r1_id = repo1.repo_id + r1_name = repo1.repo_name + r2_id = repo2.repo_id + r2_name = repo2.repo_name + + #commit something ! + cs0 = ScmModel().create_node( + repo=repo1.scm_instance, repo_name=r1_name, + cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN, + author=TEST_USER_ADMIN_LOGIN, + message='commit1', + content='line1', + f_path='file1' + ) + + cs0_prim = ScmModel().create_node( + repo=repo2.scm_instance, repo_name=r2_name, + cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN, + author=TEST_USER_ADMIN_LOGIN, + message='commit1', + content='line1', + f_path='file1' + ) + + cs1 = ScmModel().commit_change( + repo=repo2.scm_instance, repo_name=r2_name, + cs=cs0_prim, user=TEST_USER_ADMIN_LOGIN, author=TEST_USER_ADMIN_LOGIN, + message='commit2', + content='line1\nline2', + f_path='file1' + ) + + rev1 = 'default' + rev2 = 'default' + response = self.app.get(url(controller='compare', action='index', + repo_name=r2_name, + org_ref_type="branch", + org_ref=rev1, + other_ref_type="branch", + other_ref=rev2, + repo=r1_name + )) + + try: + response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) + + response.mustcontain("""<div class="message">commit2</div>""") + response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (r2_name, cs1.raw_id, cs1.short_id)) + ## files + response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s#C--826e8142e6ba">file1</a>""" % (r2_name, rev1, rev2)) + + + finally: + RepoModel().delete(r1_id) + RepoModel().delete(r2_id)