changeset 7264:760e65b33a2b

tests: use testfork fixture for test_vcs_operations tests This way only one fork needs to be created.
author domruf <dominikruf@gmail.com>
date Tue, 13 Mar 2018 23:52:10 +0100
parents 6e65c2153baa
children 205c0ed5b628
files kallithea/tests/other/test_vcs_operations.py
diffstat 1 files changed, 26 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/other/test_vcs_operations.py	Sun May 06 14:34:33 2018 +0200
+++ b/kallithea/tests/other/test_vcs_operations.py	Tue Mar 13 23:52:10 2018 +0100
@@ -252,34 +252,30 @@
         stdout, stderr = Command(TESTS_TMP_PATH).execute('git clone', clone_url, _get_tmp_dir(), ignoreReturnCode=True)
         assert 'not found' in stderr
 
-    def test_push_new_file_hg(self, webserver):
+    def test_push_new_file_hg(self, webserver, testfork):
         dest_dir = _get_tmp_dir()
         clone_url = webserver.repo_url(HG_REPO)
         stdout, stderr = Command(TESTS_TMP_PATH).execute('hg clone', clone_url, dest_dir)
 
-        fork_name = u'%s_fork%s' % (HG_REPO, _RandomNameSequence().next())
-        fixture.create_fork(HG_REPO, fork_name)
-        clone_url = webserver.repo_url(fork_name)
+        clone_url = webserver.repo_url(testfork['hg'])
         stdout, stderr = _add_files_and_push(webserver, 'hg', dest_dir, clone_url=clone_url)
 
         assert 'pushing to' in stdout
         assert 'Repository size' in stdout
         assert 'Last revision is now' in stdout
 
-    def test_push_new_file_git(self, webserver):
+    def test_push_new_file_git(self, webserver, testfork):
         dest_dir = _get_tmp_dir()
         clone_url = webserver.repo_url(GIT_REPO)
         stdout, stderr = Command(TESTS_TMP_PATH).execute('git clone', clone_url, dest_dir)
 
         # commit some stuff into this repo
-        fork_name = u'%s_fork%s' % (GIT_REPO, _RandomNameSequence().next())
-        fixture.create_fork(GIT_REPO, fork_name)
-        clone_url = webserver.repo_url(fork_name)
+        clone_url = webserver.repo_url(testfork['git'])
         stdout, stderr = _add_files_and_push(webserver, 'git', dest_dir, clone_url=clone_url)
         print [(x.repo_full_path,x.repo_path) for x in Repository.query()] # TODO: what is this for
         _check_proper_git_push(stdout, stderr)
 
-    def test_push_invalidates_cache_hg(self, webserver):
+    def test_push_invalidates_cache_hg(self, webserver, testfork):
         key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
                                                == HG_REPO).scalar()
         if not key:
@@ -290,19 +286,16 @@
         Session().commit()
 
         dest_dir = _get_tmp_dir()
-        clone_url = webserver.repo_url(HG_REPO)
+        clone_url = webserver.repo_url(testfork['hg'])
         stdout, stderr = Command(TESTS_TMP_PATH).execute('hg clone', clone_url, dest_dir)
 
-        fork_name = u'%s_fork%s' % (HG_REPO, _RandomNameSequence().next())
-        fixture.create_fork(HG_REPO, fork_name)
-        clone_url = webserver.repo_url(fork_name)
         stdout, stderr = _add_files_and_push(webserver, 'hg', dest_dir, files_no=1, clone_url=clone_url)
 
         key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
-                                               == fork_name).all()
+                                               == testfork['hg']).all()
         assert key == []
 
-    def test_push_invalidates_cache_git(self, webserver):
+    def test_push_invalidates_cache_git(self, webserver, testfork):
         key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
                                                == GIT_REPO).scalar()
         if not key:
@@ -313,18 +306,15 @@
         Session().commit()
 
         dest_dir = _get_tmp_dir()
-        clone_url = webserver.repo_url(GIT_REPO)
+        clone_url = webserver.repo_url(testfork['git'])
         stdout, stderr = Command(TESTS_TMP_PATH).execute('git clone', clone_url, dest_dir)
 
         # commit some stuff into this repo
-        fork_name = u'%s_fork%s' % (GIT_REPO, _RandomNameSequence().next())
-        fixture.create_fork(GIT_REPO, fork_name)
-        clone_url = webserver.repo_url(fork_name)
         stdout, stderr = _add_files_and_push(webserver, 'git', dest_dir, files_no=1, clone_url=clone_url)
         _check_proper_git_push(stdout, stderr)
 
         key = CacheInvalidation.query().filter(CacheInvalidation.cache_key
-                                               == fork_name).all()
+                                               == testfork['git']).all()
         assert key == []
 
     def test_push_wrong_credentials_hg(self, webserver):
@@ -494,56 +484,52 @@
         #msg = "405 Method Not Allowed"
         #assert msg in stderr
 
-    def test_push_unlocks_repository_hg(self, webserver):
+    def test_push_unlocks_repository_hg(self, webserver, testfork):
         # enable locking
-        fork_name = u'%s_fork%s' % (HG_REPO, _RandomNameSequence().next())
-        fixture.create_fork(HG_REPO, fork_name)
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['hg'])
         r.enable_locking = True
         Session().commit()
         # clone some temp
         dest_dir = _get_tmp_dir()
-        clone_url = webserver.repo_url(fork_name)
+        clone_url = webserver.repo_url(testfork['hg'])
         stdout, stderr = Command(TESTS_TMP_PATH).execute('hg clone', clone_url, dest_dir)
 
         # check for lock repo after clone
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['hg'])
         uid = User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
         assert r.locked[0] == uid
 
         # push is ok and repo is now unlocked
         stdout, stderr = _add_files_and_push(webserver, 'hg', dest_dir, clone_url=clone_url)
-        assert str('remote: Released lock on repo `%s`' % fork_name) in stdout
+        assert str('remote: Released lock on repo `%s`' % testfork['hg']) in stdout
         # we need to cleanup the Session Here !
         Session.remove()
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['hg'])
         assert r.locked == [None, None]
 
     # TODO: fix me ! somehow during tests hooks don't get called on Git
-    def test_push_unlocks_repository_git(self, webserver):
+    def test_push_unlocks_repository_git(self, webserver, testfork):
         # enable locking
-        fork_name = u'%s_fork%s' % (GIT_REPO, _RandomNameSequence().next())
-        fixture.create_fork(GIT_REPO, fork_name)
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['git'])
         r.enable_locking = True
         Session().commit()
         # clone some temp
         dest_dir = _get_tmp_dir()
-        clone_url = webserver.repo_url(fork_name)
+        clone_url = webserver.repo_url(testfork['git'])
         stdout, stderr = Command(TESTS_TMP_PATH).execute('git clone', clone_url, dest_dir)
 
         # check for lock repo after clone
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['git'])
         assert r.locked[0] == User.get_by_username(TEST_USER_ADMIN_LOGIN).user_id
 
         # push is ok and repo is now unlocked
         stdout, stderr = _add_files_and_push(webserver, 'git', dest_dir, clone_url=clone_url)
         _check_proper_git_push(stdout, stderr)
 
-        assert ('remote: Released lock on repo `%s`' % fork_name) in stderr
+        assert ('remote: Released lock on repo `%s`' % testfork['git']) in stderr
         # we need to cleanup the Session Here !
         Session.remove()
-        r = Repository.get_by_repo_name(fork_name)
+        r = Repository.get_by_repo_name(testfork['git'])
         assert r.locked == [None, None]
 
     def test_ip_restriction_hg(self, webserver):
@@ -667,14 +653,11 @@
         assert stdout == ''
         assert stderr == ''
 
-    def test_add_submodule(self, webserver):
+    def test_add_submodule(self, webserver, testfork):
         dest_dir = _get_tmp_dir()
         clone_url = webserver.repo_url(GIT_REPO)
 
-        # GIT_REPO should be untouched for other tests so create a fork
-        fork_name = '%s_fork%s' % (GIT_REPO, _RandomNameSequence().next())
-        fixture.create_fork(GIT_REPO, fork_name)
-        fork_url = webserver.repo_url(fork_name)
+        fork_url = webserver.repo_url(testfork['git'])
 
         # add submodule
         stdout, stderr = Command(TESTS_TMP_PATH).execute('git clone', fork_url, dest_dir)
@@ -685,14 +668,14 @@
         # check for testsubmodule link in files page
         self.log_user()
         response = self.app.get(url(controller='files', action='index',
-                                    repo_name=fork_name,
+                                    repo_name=testfork['git'],
                                     revision='tip',
                                     f_path='/'))
         response.mustcontain('<a class="submodule-dir" href="%s" target="_blank"><i class="icon-file-submodule"></i><span>testsubmodule @ ' % clone_url)
 
         # check that following a submodule link actually works - and redirects
         response = self.app.get(url(controller='files', action='index',
-                                    repo_name=fork_name,
+                                    repo_name=testfork['git'],
                                     revision='tip',
                                     f_path='/testsubmodule'),
                                 status=302)