Mercurial > kallithea
diff rhodecode/tests/functional/test_compare.py @ 3023:c2a206162062 beta
Basic implementation of cherry picking changesets
for pull request, ref #575
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 24 Nov 2012 00:29:38 +0100 |
parents | 16af24982e30 |
children | ff9e0cbfcd7f |
line wrap: on
line diff
--- a/rhodecode/tests/functional/test_compare.py Fri Nov 23 23:01:27 2012 +0100 +++ b/rhodecode/tests/functional/test_compare.py Sat Nov 24 00:29:38 2012 +0100 @@ -6,251 +6,175 @@ from rhodecode.lib.vcs.backends.base import EmptyChangeset +def _fork_repo(fork_name, vcs_type, parent=None): + if vcs_type =='hg': + _REPO = HG_REPO + elif vcs_type == 'git': + _REPO = GIT_REPO + + if parent: + _REPO = parent + + form_data = dict( + repo_name=fork_name, + repo_name_full=fork_name, + repo_group=None, + repo_type=vcs_type, + description='', + private=False, + copy_permissions=False, + landing_rev='tip', + update_after_clone=False, + fork_parent_id=Repository.get_by_repo_name(_REPO), + ) + repo = RepoModel().create_fork(form_data, cur_user=TEST_USER_ADMIN_LOGIN) + + Session().commit() + return Repository.get_by_repo_name(fork_name) + + +def _commit_change(repo, filename, content, message, vcs_type, parent=None, newfile=False): + repo = Repository.get_by_repo_name(repo) + _cs = parent + if not parent: + _cs = EmptyChangeset(alias=vcs_type) + + if newfile: + cs = ScmModel().create_node( + repo=repo.scm_instance, repo_name=repo.repo_name, + cs=_cs, user=TEST_USER_ADMIN_LOGIN, + author=TEST_USER_ADMIN_LOGIN, + message=message, + content=content, + f_path=filename + ) + else: + cs = ScmModel().commit_change( + repo=repo.scm_instance, repo_name=repo.repo_name, + cs=parent, user=TEST_USER_ADMIN_LOGIN, + author=TEST_USER_ADMIN_LOGIN, + message=message, + content=content, + f_path=filename + ) + return cs + + class TestCompareController(TestController): - def test_compare_tag_hg(self): - self.log_user() - tag1 = '0.1.2' - tag2 = '0.1.3' - response = self.app.get(url(controller='compare', action='index', - repo_name=HG_REPO, - org_ref_type="tag", - org_ref=tag1, - other_ref_type="tag", - other_ref=tag2, - )) - response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, tag1, HG_REPO, tag2)) - ## outgoing changesets between tags - response.mustcontain('''<a href="/%s/changeset/c5ddebc06eaaba3010c2d66ea6ec9d074eb0f678">r112:c5ddebc06eaa</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/70d4cef8a37657ee4cf5aabb3bd9f68879769816">r115:70d4cef8a376</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/9749bfbfc0d2eba208d7947de266303b67c87cda">r116:9749bfbfc0d2</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/41fda979f02fda216374bf8edac4e83f69e7581c">r117:41fda979f02f</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/bb1a3ab98cc45cb934a77dcabf87a5a598b59e97">r118:bb1a3ab98cc4</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/36e0fc9d2808c5022a24f49d6658330383ed8666">r119:36e0fc9d2808</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">r120:17544fbfcd33</a>''' % HG_REPO) - - ## files diff - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--1c5cf9e91c12">docs/api/utils/index.rst</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--e3305437df55">test_and_report.sh</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--c8e92ef85cd1">.hgignore</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--6e08b694d687">.hgtags</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--2c14b00f3393">docs/api/index.rst</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--430ccbc82bdf">vcs/__init__.py</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--9c390eb52cd6">vcs/backends/hg.py</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--ebb592c595c0">vcs/utils/__init__.py</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--7abc741b5052">vcs/utils/annotate.py</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--2ef0ef106c56">vcs/utils/diffs.py</a></div>''' % (HG_REPO, tag1, tag2)) - response.mustcontain('''<div class="node"><a href="/%s/compare/tag@%s...tag@%s#C--3150cb87d4b7">vcs/utils/lazy.py</a></div>''' % (HG_REPO, tag1, tag2)) - - def test_compare_tag_git(self): - self.log_user() - tag1 = 'v0.1.2' - tag2 = 'v0.1.3' - response = self.app.get(url(controller='compare', action='index', - repo_name=GIT_REPO, - org_ref_type="tag", - org_ref=tag1, - other_ref_type="tag", - other_ref=tag2, - bundle=False - )) - response.mustcontain('%s@%s -> %s@%s' % (GIT_REPO, tag1, GIT_REPO, tag2)) - - ## outgoing changesets between tags - response.mustcontain('''<a href="/%s/changeset/794bbdd31545c199f74912709ea350dedcd189a2">r113:794bbdd31545</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/e36d8c5025329bdd4212bd53d4ed8a70ff44985f">r115:e36d8c502532</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/5c9ff4f6d7508db0e72b1d2991c357d0d8e07af2">r116:5c9ff4f6d750</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/b7187fa2b8c1d773ec35e9dee12f01f74808c879">r117:b7187fa2b8c1</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/5f3b74262014a8de2dc7dade1152de9fd0c8efef">r118:5f3b74262014</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/17438a11f72b93f56d0e08e7d1fa79a378578a82">r119:17438a11f72b</a>''' % GIT_REPO) - response.mustcontain('''<a href="/%s/changeset/5a3a8fb005554692b16e21dee62bf02667d8dc3e">r120:5a3a8fb00555</a>''' % GIT_REPO) - - #files - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--1c5cf9e91c12">docs/api/utils/index.rst</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--e3305437df55">test_and_report.sh</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--c8e92ef85cd1">.hgignore</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--6e08b694d687">.hgtags</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--2c14b00f3393">docs/api/index.rst</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--430ccbc82bdf">vcs/__init__.py</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--ebb592c595c0">vcs/utils/__init__.py</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--7abc741b5052">vcs/utils/annotate.py</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--2ef0ef106c56">vcs/utils/diffs.py</a>''' % (GIT_REPO, tag1, tag2)) - response.mustcontain('''<a href="/%s/compare/tag@%s...tag@%s#C--3150cb87d4b7">vcs/utils/lazy.py</a>''' % (GIT_REPO, tag1, tag2)) - - def test_index_branch_hg(self): - self.log_user() - response = self.app.get(url(controller='compare', action='index', - repo_name=HG_REPO, - org_ref_type="branch", - org_ref='default', - other_ref_type="branch", - other_ref='default', - )) - - response.mustcontain('%s@default -> %s@default' % (HG_REPO, HG_REPO)) - # branch are equal - response.mustcontain('<span class="empty_data">No files</span>') - response.mustcontain('<span class="empty_data">No changesets</span>') - - def test_index_branch_git(self): - self.log_user() - response = self.app.get(url(controller='compare', action='index', - repo_name=GIT_REPO, - org_ref_type="branch", - org_ref='master', - other_ref_type="branch", - other_ref='master', - )) - - response.mustcontain('%s@master -> %s@master' % (GIT_REPO, GIT_REPO)) - # branch are equal - response.mustcontain('<span class="empty_data">No files</span>') - response.mustcontain('<span class="empty_data">No changesets</span>') - - def test_compare_revisions(self): - self.log_user() - rev1 = 'b986218ba1c9' - rev2 = '3d8f361e72ab' - - 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, rev2)) - ## 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): + def test_compare_forks_on_branch_extra_commits_hg(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) + repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', + description='diff-test', + owner=TEST_USER_ADMIN_LOGIN) + r1_id = repo1.repo_id + Session().commit() + #commit something ! + cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n', + message='commit1', vcs_type='hg', parent=None, newfile=True) + + #fork this repo + repo2 = _fork_repo('one-fork', 'hg', parent='one') + Session().commit() + r2_id = repo2.repo_id - Session().commit() + #add two extra commit into fork + cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n', + message='commit2', vcs_type='hg', parent=cs0) - rev1 = '56349e29c2af' - rev2 = '7d4bc8ec6be5' + cs2 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', + message='commit3', vcs_type='hg', parent=cs1) + rev1 = 'default' + rev2 = 'default' response = self.app.get(url(controller='compare', action='index', - repo_name=HG_REPO, - org_ref_type="rev", + repo_name=repo2.repo_name, + org_ref_type="branch", org_ref=rev1, - other_ref_type="rev", + other_ref_type="branch", other_ref=rev2, - repo=HG_FORK, + repo=repo1.repo_name )) try: - response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) - ## outgoing changesets between those revisions + response.mustcontain('%s@%s -> %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2)) + response.mustcontain("""Showing 2 commits""") + response.mustcontain("""1 file changed with 2 insertions and 0 deletions""") - response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) - response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) - response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) + response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""") + response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""") + response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id)) + response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id)) ## 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)) + response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2)) + finally: - RepoModel().delete(HG_FORK) + RepoModel().delete(r1_id) + RepoModel().delete(r2_id) - def test_compare_remote_repos_remote_flag_off(self): + def test_compare_forks_on_branch_extra_commits_origin_has_incomming_hg(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) + repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', + description='diff-test', + owner=TEST_USER_ADMIN_LOGIN) + r1_id = repo1.repo_id + Session().commit() + #commit something ! + cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n', + message='commit1', vcs_type='hg', parent=None, newfile=True) + #fork this repo + repo2 = _fork_repo('one-fork', 'hg', parent='one') Session().commit() - rev1 = '56349e29c2af' - rev2 = '7d4bc8ec6be5' + #now commit something to origin repo + cs1_prim = _commit_change(repo1.repo_name, filename='file2', content='line1file2\n', + message='commit2', vcs_type='hg', parent=cs0, newfile=True) + + r2_id = repo2.repo_id + #add two extra commit into fork + cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n', + message='commit2', vcs_type='hg', parent=cs0) + + cs2 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\nline3\n', + message='commit3', vcs_type='hg', parent=cs1) + + rev1 = 'default' + rev2 = 'default' response = self.app.get(url(controller='compare', action='index', - repo_name=HG_REPO, - org_ref_type="rev", + repo_name=repo2.repo_name, + org_ref_type="branch", org_ref=rev1, - other_ref_type="rev", + other_ref_type="branch", other_ref=rev2, - repo=HG_FORK, - bundle=False, + repo=repo1.repo_name )) try: - response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) - ## outgoing changesets between those revisions + response.mustcontain('%s@%s -> %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2)) + response.mustcontain("""Showing 2 commits""") + response.mustcontain("""1 file changed with 2 insertions and 0 deletions""") - response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) - response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) - response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) + response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""") + response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""") + response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id)) + response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id)) ## 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)) + response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2)) + finally: - RepoModel().delete(HG_FORK) + RepoModel().delete(r1_id) + RepoModel().delete(r2_id) -# def test_compare_origin_ahead_of_fork(self): + +# def test_compare_remote_repos_remote_flag_off(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() -# -# repo1 = Repository.get_by_repo_name(HG_REPO) -# r1_name = HG_REPO -# -# #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='extra commit1', -# content='line1', -# f_path='file1' -# ) -# +# _fork_repo(HG_FORK, 'hg') # # rev1 = '56349e29c2af' # rev2 = '7d4bc8ec6be5' @@ -266,7 +190,7 @@ # )) # # try: -# response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_REPO, rev2)) +# response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_FORK, rev2)) # ## outgoing changesets between those revisions # # response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) @@ -280,284 +204,143 @@ # 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 tooltip" title="commit2" style="white-space:normal">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) - - def test_org_repo_new_commits_after_forking(self): - self.log_user() - - repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - - Session().commit() - r1_id = repo1.repo_id - r1_name = repo1.repo_name - - #commit something initially ! - 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' - ) - Session().commit() - self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id]) - #fork the repo1 - repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg', - description='compare-test', - clone_uri=repo1.repo_full_path, - owner=TEST_USER_ADMIN_LOGIN, fork_of='one') - Session().commit() - self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id]) - r2_id = repo2.repo_id - r2_name = repo2.repo_name - - #make 3 new commits in fork - cs1 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=repo2.scm_instance[-1], user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit1-fork', - content='file1-line1-from-fork', - f_path='file1-fork' - ) - cs2 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=cs1, user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit2-fork', - content='file2-line1-from-fork', - f_path='file2-fork' - ) - cs3 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=cs2, user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit3-fork', - content='file3-line1-from-fork', - f_path='file3-fork' - ) - - #compare ! - 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, - bundle=True, - )) - try: - response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) - response.mustcontain("""file1-line1-from-fork""") - response.mustcontain("""file2-line1-from-fork""") - response.mustcontain("""file3-line1-from-fork""") - - #add new commit into parent ! - 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='commit2', - content='line1-from-new-parent', - f_path='file2' - ) - #compare ! - 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, - bundle=True, - )) - - response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) - response.mustcontain("""<a href="#">file2</a>""") # new commit from parent - response.mustcontain("""line1-from-new-parent""") - response.mustcontain("""file1-line1-from-fork""") - response.mustcontain("""file2-line1-from-fork""") - response.mustcontain("""file3-line1-from-fork""") - finally: - RepoModel().delete(r2_id) - RepoModel().delete(r1_id) - - def test_org_repo_new_commits_after_forking_simple_diff(self): - self.log_user() - - repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', - description='diff-test', - owner=TEST_USER_ADMIN_LOGIN) - - Session().commit() - r1_id = repo1.repo_id - r1_name = repo1.repo_name - - #commit something initially ! - 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' - ) - Session().commit() - self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id]) - #fork the repo1 - repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg', - description='compare-test', - clone_uri=repo1.repo_full_path, - owner=TEST_USER_ADMIN_LOGIN, fork_of='one') - Session().commit() - self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id]) - r2_id = repo2.repo_id - r2_name = repo2.repo_name - - #make 3 new commits in fork - cs1 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=repo2.scm_instance[-1], user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit1-fork', - content='file1-line1-from-fork', - f_path='file1-fork' - ) - cs2 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=cs1, user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit2-fork', - content='file2-line1-from-fork', - f_path='file2-fork' - ) - cs3 = ScmModel().create_node( - repo=repo2.scm_instance, repo_name=r2_name, - cs=cs2, user=TEST_USER_ADMIN_LOGIN, - author=TEST_USER_ADMIN_LOGIN, - message='commit3-fork', - content='file3-line1-from-fork', - f_path='file3-fork' - ) - - #compare ! - 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, - bundle=False, - )) - - try: - #response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) - - #add new commit into parent ! - 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='commit2', - content='line1', - f_path='file2' - ) - #compare ! - 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, - bundle=False - )) - - response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) - response.mustcontain("""file1-line1-from-fork""") - response.mustcontain("""file2-line1-from-fork""") - response.mustcontain("""file3-line1-from-fork""") - self.assertFalse("""<a href="#">file2</a>""" in response.body) # new commit from parent - self.assertFalse("""line1-from-new-parent""" in response.body) - finally: - RepoModel().delete(r2_id) - RepoModel().delete(r1_id) +# +# def test_compare_remote_branches_hg(self): +# self.log_user() +# +# _fork_repo(HG_FORK, 'hg') +# +# rev1 = '56349e29c2af' +# rev2 = '7d4bc8ec6be5' +# +# 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/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO)) +# response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO)) +# response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2)) +# +# ## 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_org_repo_new_commits_after_forking_simple_diff(self): +# self.log_user() +# +# repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg', +# description='diff-test', +# owner=TEST_USER_ADMIN_LOGIN) +# +# Session().commit() +# r1_id = repo1.repo_id +# r1_name = repo1.repo_name +# +# #commit something initially ! +# 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' +# ) +# Session().commit() +# self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id]) +# #fork the repo1 +# repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg', +# description='compare-test', +# clone_uri=repo1.repo_full_path, +# owner=TEST_USER_ADMIN_LOGIN, fork_of='one') +# Session().commit() +# self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id]) +# r2_id = repo2.repo_id +# r2_name = repo2.repo_name +# +# #make 3 new commits in fork +# cs1 = ScmModel().create_node( +# repo=repo2.scm_instance, repo_name=r2_name, +# cs=repo2.scm_instance[-1], user=TEST_USER_ADMIN_LOGIN, +# author=TEST_USER_ADMIN_LOGIN, +# message='commit1-fork', +# content='file1-line1-from-fork', +# f_path='file1-fork' +# ) +# cs2 = ScmModel().create_node( +# repo=repo2.scm_instance, repo_name=r2_name, +# cs=cs1, user=TEST_USER_ADMIN_LOGIN, +# author=TEST_USER_ADMIN_LOGIN, +# message='commit2-fork', +# content='file2-line1-from-fork', +# f_path='file2-fork' +# ) +# cs3 = ScmModel().create_node( +# repo=repo2.scm_instance, repo_name=r2_name, +# cs=cs2, user=TEST_USER_ADMIN_LOGIN, +# author=TEST_USER_ADMIN_LOGIN, +# message='commit3-fork', +# content='file3-line1-from-fork', +# f_path='file3-fork' +# ) +# +# #compare ! +# 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, +# bundle=False, +# )) +# +# try: +# #response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) +# +# #add new commit into parent ! +# 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='commit2', +# content='line1', +# f_path='file2' +# ) +# #compare ! +# 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, +# bundle=False +# )) +# +# response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) +# response.mustcontain("""file1-line1-from-fork""") +# response.mustcontain("""file2-line1-from-fork""") +# response.mustcontain("""file3-line1-from-fork""") +# self.assertFalse("""<a href="#">file2</a>""" in response.body) # new commit from parent +# self.assertFalse("""line1-from-new-parent""" in response.body) +# finally: +# RepoModel().delete(r2_id) +# RepoModel().delete(r1_id)