diff options
author | Marcin Kuzminski <marcin@python-works.com> | 2012-11-18 23:17:02 +0100 |
---|---|---|
committer | Marcin Kuzminski <marcin@python-works.com> | 2012-11-18 23:17:02 +0100 |
commit | 02dc11aa80e980728288544a5720eb2e890fa9b3 (patch) | |
tree | 64714fba1ff40f1c4430932ada38de25d40e5706 /rhodecode/tests/functional | |
parent | 1f04f3150a833df5f4596ece17b644922f072b71 (diff) |
Multiple changes for compare system
- count number of changed lines and files
- add combined compare button into the old per changeset compare
- fixed some logic for remote & bundle compare system
- added few tests for git compare
--HG--
branch : beta
extra : amend_source : af05adad4b8de07680c56bfa040febdac55d9da7
Diffstat (limited to 'rhodecode/tests/functional')
-rw-r--r-- | rhodecode/tests/functional/test_compare.py | 202 |
1 files changed, 181 insertions, 21 deletions
diff --git a/rhodecode/tests/functional/test_compare.py b/rhodecode/tests/functional/test_compare.py index 255516fb..1e025213 100644 --- a/rhodecode/tests/functional/test_compare.py +++ b/rhodecode/tests/functional/test_compare.py @@ -8,10 +8,10 @@ from rhodecode.lib.vcs.backends.base import EmptyChangeset class TestCompareController(TestController): - def test_index_tag(self): + def test_compare_tag_hg(self): self.log_user() - tag1 = '0.1.3' - tag2 = '0.1.2' + 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", @@ -21,13 +21,13 @@ class TestCompareController(TestController): )) response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, tag1, HG_REPO, tag2)) ## outgoing changesets between tags - response.mustcontain('''<a href="/%s/changeset/17544fbfcd33ffb439e2b728b5d526b1ef30bfcf">r120:17544fbfcd33</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/36e0fc9d2808c5022a24f49d6658330383ed8666">r119:36e0fc9d2808</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/bb1a3ab98cc45cb934a77dcabf87a5a598b59e97">r118:bb1a3ab98cc4</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/41fda979f02fda216374bf8edac4e83f69e7581c">r117:41fda979f02f</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/9749bfbfc0d2eba208d7947de266303b67c87cda">r116:9749bfbfc0d2</a>''' % HG_REPO) - response.mustcontain('''<a href="/%s/changeset/70d4cef8a37657ee4cf5aabb3bd9f68879769816">r115:70d4cef8a376</a>''' % HG_REPO) 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)) @@ -42,7 +42,43 @@ class TestCompareController(TestController): 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_index_branch(self): + 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, @@ -54,12 +90,29 @@ class TestCompareController(TestController): response.mustcontain('%s@default -> %s@default' % (HG_REPO, HG_REPO)) # branch are equal - response.mustcontain('<tr><td>No changesets</td></tr>') + 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 = '3d8f361e72ab' - rev2 = 'b986218ba1c9' + rev1 = 'b986218ba1c9' + rev2 = '3d8f361e72ab' + response = self.app.get(url(controller='compare', action='index', repo_name=HG_REPO, org_ref_type="rev", @@ -69,8 +122,7 @@ class TestCompareController(TestController): )) 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)) - + 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)) @@ -93,8 +145,8 @@ class TestCompareController(TestController): Session().commit() - rev1 = '7d4bc8ec6be5' - rev2 = '56349e29c2af' + rev1 = '56349e29c2af' + rev2 = '7d4bc8ec6be5' response = self.app.get(url(controller='compare', action='index', repo_name=HG_REPO, @@ -102,16 +154,63 @@ class TestCompareController(TestController): org_ref=rev1, other_ref_type="rev", other_ref=rev2, - repo=HG_FORK + 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/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_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() + + 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, + bundle=False, + )) + + 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)) @@ -120,6 +219,67 @@ class TestCompareController(TestController): finally: RepoModel().delete(HG_FORK) +# def test_compare_origin_ahead_of_fork(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' +# ) +# +# +# 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, +# bundle=False, +# )) +# +# try: +# response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, rev1, HG_REPO, 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_compare_extra_commits(self): self.log_user() @@ -178,7 +338,7 @@ class TestCompareController(TestController): try: response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) - response.mustcontain("""<div class="message">commit2</div>""") + 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)) @@ -391,7 +551,7 @@ class TestCompareController(TestController): repo=r1_name, bundle=False )) - rev2 = cs0.parents[0].raw_id + response.mustcontain('%s@%s -> %s@%s' % (r2_name, rev1, r1_name, rev2)) response.mustcontain("""file1-line1-from-fork""") response.mustcontain("""file2-line1-from-fork""") |