Partially implemented
#16. filecontent/commit message/author/node name are safe_unicode now.
@@ -100,7 +108,41 @@ removed extra unicode conversion in diff
extra_environ={'HTTP_X_PARTIAL_XHR': '1'},)
#test or history
response.mustcontain("""
""")
@@ -167,8 +216,42 @@ removed extra unicode conversion in diff
annotate=True),
extra_environ={'HTTP_X_PARTIAL_XHR': '1'})
- response.mustcontain("""
""")
def test_file_annotation_git(self):
diff --git a/rhodecode/tests/functional/test_home.py b/rhodecode/tests/functional/test_home.py
--- a/rhodecode/tests/functional/test_home.py
+++ b/rhodecode/tests/functional/test_home.py
@@ -29,11 +29,11 @@ class TestHomeController(TestController)
r"""alt=\"Public repository\" src=\"/images/icons/lock_"""
r"""open.png\"/>""")
- response.mustcontain(
-r"""
r173:27cd5cce30c9"""
-)
+ response.mustcontain("""fixes issue with having custom format for git-log""")
+ response.mustcontain("""/%s/changeset/5f2c6ee195929b0be80749243c18121c9864a3b3""" % GIT_REPO)
+
+ response.mustcontain("""disable security checks on hg clone for travis""")
+ response.mustcontain("""/%s/changeset/96507bd11ecc815ebc6270fdf6db110928c09c1e""" % HG_REPO)
def test_repo_summary_with_anonymous_access_disabled(self):
anon = User.get_default_user()
diff --git a/rhodecode/tests/functional/test_journal.py b/rhodecode/tests/functional/test_journal.py
--- a/rhodecode/tests/functional/test_journal.py
+++ b/rhodecode/tests/functional/test_journal.py
@@ -14,10 +14,10 @@ class TestJournalController(TestControll
def test_stop_following_repository(self):
session = self.log_user()
-# usr = self.Session.query(User).filter(User.username == 'test_admin').one()
-# repo = self.Session.query(Repository).filter(Repository.repo_name == HG_REPO).one()
+# usr = Session().query(User).filter(User.username == 'test_admin').one()
+# repo = Session().query(Repository).filter(Repository.repo_name == HG_REPO).one()
#
-# followings = self.Session.query(UserFollowing)\
+# followings = Session().query(UserFollowing)\
# .filter(UserFollowing.user == usr)\
# .filter(UserFollowing.follows_repository == repo).all()
#
diff --git a/rhodecode/tests/functional/test_login.py b/rhodecode/tests/functional/test_login.py
--- a/rhodecode/tests/functional/test_login.py
+++ b/rhodecode/tests/functional/test_login.py
@@ -5,15 +5,16 @@ from rhodecode.lib.utils2 import generat
from rhodecode.lib.auth import check_password
from rhodecode.lib import helpers as h
from rhodecode.model import validators
+from rhodecode.model.meta import Session
class TestLoginController(TestController):
def tearDown(self):
for n in Notification.query().all():
- self.Session().delete(n)
+ Session().delete(n)
- self.Session().commit()
+ Session().commit()
self.assertEqual(Notification.query().all(), [])
def test_index(self):
@@ -216,7 +217,7 @@ class TestLoginController(TestController
self.assertEqual(response.status, '302 Found')
self.checkSessionFlash(response, 'You have successfully registered into RhodeCode')
- ret = self.Session().query(User).filter(User.username == 'test_regular4').one()
+ ret = Session().query(User).filter(User.username == 'test_regular4').one()
self.assertEqual(ret.username, username)
self.assertEqual(check_password(password, ret.password), True)
self.assertEqual(ret.email, email)
@@ -254,8 +255,8 @@ class TestLoginController(TestController
new.name = name
new.lastname = lastname
new.api_key = generate_api_key(username)
- self.Session().add(new)
- self.Session().commit()
+ Session().add(new)
+ Session().commit()
response = self.app.post(url(controller='login',
action='password_reset'),
diff --git a/rhodecode/tests/functional/test_search.py b/rhodecode/tests/functional/test_search.py
--- a/rhodecode/tests/functional/test_search.py
+++ b/rhodecode/tests/functional/test_search.py
@@ -25,14 +25,14 @@ class TestSearchController(TestControlle
self.log_user()
response = self.app.get(url(controller='search', action='index'),
{'q': 'def repo'})
- response.mustcontain('39 results')
+ response.mustcontain('58 results')
def test_repo_search(self):
self.log_user()
response = self.app.get(url(controller='search', action='index'),
{'q': 'repository:%s def test' % HG_REPO})
- response.mustcontain('4 results')
+ response.mustcontain('18 results')
def test_search_last(self):
self.log_user()
@@ -67,7 +67,7 @@ class TestSearchController(TestControlle
{'q': 'changed:tests/utils.py',
'type': 'commit'})
- response.mustcontain('20 results')
+ response.mustcontain('29 results')
def test_search_commit_changed_files_get_commit(self):
self.log_user()
@@ -75,7 +75,7 @@ class TestSearchController(TestControlle
{'q': 'changed:vcs/utils/lazy.py',
'type': 'commit'})
- response.mustcontain('7 results')
+ response.mustcontain('11 results')
response.mustcontain('36e0fc9d2808c5022a24f49d6658330383ed8666')
response.mustcontain('af182745859d779f17336241a0815d15166ae1ee')
response.mustcontain('17438a11f72b93f56d0e08e7d1fa79a378578a82')
diff --git a/rhodecode/tests/functional/test_summary.py b/rhodecode/tests/functional/test_summary.py
--- a/rhodecode/tests/functional/test_summary.py
+++ b/rhodecode/tests/functional/test_summary.py
@@ -36,13 +36,16 @@ class TestSummaryController(TestControll
response = self.app.get(url(controller='summary', action='index',
repo_name=HG_REPO))
response.mustcontain(
- """var data = [["py", {"count": 42, "desc": ["Python"]}], """
- """["rst", {"count": 11, "desc": ["Rst"]}], """
+ """var data = [["py", {"count": 68, "desc": ["Python"]}], """
+ """["rst", {"count": 16, "desc": ["Rst"]}], """
+ """["css", {"count": 2, "desc": ["Css"]}], """
"""["sh", {"count": 2, "desc": ["Bash"]}], """
- """["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}],"""
- """ ["cfg", {"count": 1, "desc": ["Ini"]}], """
- """["css", {"count": 1, "desc": ["Css"]}], """
- """["bat", {"count": 1, "desc": ["Batch"]}]];"""
+ """["yml", {"count": 1, "desc": ["Yaml"]}], """
+ """["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], """
+ """["js", {"count": 1, "desc": ["Javascript"]}], """
+ """["cfg", {"count": 1, "desc": ["Ini"]}], """
+ """["ini", {"count": 1, "desc": ["Ini"]}], """
+ """["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}]];"""
)
# clone url...
@@ -118,5 +121,5 @@ class TestSummaryController(TestControll
def _enable_stats(self):
r = Repository.get_by_repo_name(HG_REPO)
r.enable_statistics = True
- self.Session.add(r)
- self.Session.commit()
+ Session().add(r)
+ Session().commit()
diff --git a/rhodecode/tests/functional/test_tags.py b/rhodecode/tests/functional/test_tags.py
--- a/rhodecode/tests/functional/test_tags.py
+++ b/rhodecode/tests/functional/test_tags.py
@@ -1,12 +1,40 @@
from rhodecode.tests import *
+
class TestTagsController(TestController):
- def test_index(self):
+ def test_index_hg(self):
self.log_user()
response = self.app.get(url(controller='tags', action='index', repo_name=HG_REPO))
- response.mustcontain("""
tip""" % HG_REPO)
- response.mustcontain("""
0.1.4""" % HG_REPO)
- response.mustcontain("""
0.1.3""" % HG_REPO)
- response.mustcontain("""
0.1.2""" % HG_REPO)
- response.mustcontain("""
0.1.1""" % HG_REPO)
+ response.mustcontain("""
tip""" % HG_REPO)
+ response.mustcontain("""
v0.2.0""" % HG_REPO)
+ response.mustcontain("""
v0.1.11""" % HG_REPO)
+ response.mustcontain("""
v0.1.10""" % HG_REPO)
+ response.mustcontain("""
v0.1.9""" % HG_REPO)
+ response.mustcontain("""
v0.1.8""" % HG_REPO)
+ response.mustcontain("""
v0.1.7""" % HG_REPO)
+ response.mustcontain("""
v0.1.6""" % HG_REPO)
+ response.mustcontain("""
v0.1.5""" % HG_REPO)
+ response.mustcontain("""
v0.1.4""" % HG_REPO)
+ response.mustcontain("""
v0.1.3""" % HG_REPO)
+ response.mustcontain("""
v0.1.2""" % HG_REPO)
+ response.mustcontain("""
v0.1.1""" % HG_REPO)
+
+ def test_index_git(self):
+ self.log_user()
+ response = self.app.get(url(controller='tags', action='index', repo_name=GIT_REPO))
+
+ response.mustcontain("""
v0.2.2""" % GIT_REPO)
+ response.mustcontain("""
v0.2.1""" % GIT_REPO)
+ response.mustcontain("""
v0.2.0""" % GIT_REPO)
+ response.mustcontain("""
v0.1.11""" % GIT_REPO)
+ response.mustcontain("""
v0.1.10""" % GIT_REPO)
+ response.mustcontain("""
v0.1.9""" % GIT_REPO)
+ response.mustcontain("""
v0.1.8""" % GIT_REPO)
+ response.mustcontain("""
v0.1.7""" % GIT_REPO)
+ response.mustcontain("""
v0.1.6""" % GIT_REPO)
+ response.mustcontain("""
v0.1.5""" % GIT_REPO)
+ response.mustcontain("""
v0.1.4""" % GIT_REPO)
+ response.mustcontain("""
v0.1.3""" % GIT_REPO)
+ response.mustcontain("""
v0.1.2""" % GIT_REPO)
+ response.mustcontain("""
v0.1.1""" % GIT_REPO)
diff --git a/rhodecode/tests/vcs/__init__.py b/rhodecode/tests/vcs/__init__.py
--- a/rhodecode/tests/vcs/__init__.py
+++ b/rhodecode/tests/vcs/__init__.py
@@ -19,10 +19,10 @@ function at ``tests/__init__.py``.
.. _unittest: http://pypi.python.org/pypi/unittest
"""
-import os
-from rhodecode.lib import vcs
from rhodecode.lib.vcs.utils.compat import unittest
-from utils import VCSTestError, SCMFetcher
+from rhodecode.tests.vcs.conf import *
+from rhodecode.tests.vcs.utils import VCSTestError, SCMFetcher
+
from rhodecode.tests import *
@@ -36,7 +36,7 @@ def setup_package():
'alias': 'hg',
'test_repo_path': TEST_HG_REPO,
'remote_repo': HG_REMOTE_REPO,
- 'clone_cmd': 'hg clone',
+ 'clone_cmd': 'hg clone --insecure',
},
'git': {
'alias': 'git',
@@ -52,5 +52,16 @@ def setup_package():
except VCSTestError, err:
raise RuntimeError(str(err))
-#start_dir = os.path.abspath(os.path.dirname(__file__))
-#unittest.defaultTestLoader.discover(start_dir)
+
+def collector():
+ setup_package()
+ start_dir = os.path.abspath(os.path.dirname(__file__))
+ return unittest.defaultTestLoader.discover(start_dir)
+
+
+def main():
+ collector()
+ unittest.main()
+
+#if __name__ == '__main__':
+# main()
diff --git a/rhodecode/tests/vcs/base.py b/rhodecode/tests/vcs/base.py
--- a/rhodecode/tests/vcs/base.py
+++ b/rhodecode/tests/vcs/base.py
@@ -3,14 +3,13 @@ Module providing backend independent mix
InMemoryChangeset class is working properly at backend class.
"""
import os
-from rhodecode.lib import vcs
import time
import shutil
import datetime
-from rhodecode.lib.vcs.utils.compat import unittest
+from rhodecode.tests.vcs.conf import SCM_TESTS, get_new_dir
-from conf import SCM_TESTS, get_new_dir
-
+from rhodecode.lib import vcs
+from rhodecode.lib.vcs.utils.compat import unittest
from rhodecode.lib.vcs.nodes import FileNode
@@ -68,6 +67,7 @@ class BackendTestMixin(object):
cls.repo_path = get_new_dir(str(time.time()))
cls.repo = Backend(cls.repo_path, create=True)
cls.imc = cls.repo.in_memory_changeset
+ cls.default_branch = cls.repo.DEFAULT_BRANCH_NAME
for commit in cls._get_commits():
for node in commit.get('added', []):
diff --git a/rhodecode/tests/vcs/conf.py b/rhodecode/tests/vcs/conf.py
--- a/rhodecode/tests/vcs/conf.py
+++ b/rhodecode/tests/vcs/conf.py
@@ -1,64 +1,65 @@
"""
Unit tests configuration module for vcs.
"""
-
import os
import time
import hashlib
import tempfile
import datetime
import shutil
-from rhodecode.tests import *
from utils import get_normalized_path
from os.path import join as jn
-TEST_TMP_PATH = TESTS_TMP_PATH
-#__all__ = (
-# 'TEST_HG_REPO', 'TEST_GIT_REPO', 'HG_REMOTE_REPO', 'GIT_REMOTE_REPO',
-# 'SCM_TESTS',
-#)
-#
-#SCM_TESTS = ['hg', 'git']
-#uniq_suffix = str(int(time.mktime(datetime.datetime.now().timetuple())))
-#
+__all__ = (
+ 'TEST_HG_REPO', 'TEST_GIT_REPO', 'HG_REMOTE_REPO', 'GIT_REMOTE_REPO',
+ 'SCM_TESTS',
+)
+
+SCM_TESTS = ['hg', 'git']
+uniq_suffix = str(int(time.mktime(datetime.datetime.now().timetuple())))
+
THIS = os.path.abspath(os.path.dirname(__file__))
-#
-#GIT_REMOTE_REPO = 'git://github.com/codeinn/vcs.git'
-#
-#TEST_TMP_PATH = os.environ.get('VCS_TEST_ROOT', '/tmp')
-#TEST_GIT_REPO = os.environ.get('VCS_TEST_GIT_REPO',
-# jn(TEST_TMP_PATH, 'vcs-git'))
-#TEST_GIT_REPO_CLONE = os.environ.get('VCS_TEST_GIT_REPO_CLONE',
-# jn(TEST_TMP_PATH, 'vcsgitclone%s' % uniq_suffix))
-#TEST_GIT_REPO_PULL = os.environ.get('VCS_TEST_GIT_REPO_PULL',
-# jn(TEST_TMP_PATH, 'vcsgitpull%s' % uniq_suffix))
-#
-#HG_REMOTE_REPO = 'http://bitbucket.org/marcinkuzminski/vcs'
-#TEST_HG_REPO = os.environ.get('VCS_TEST_HG_REPO',
-# jn(TEST_TMP_PATH, 'vcs-hg'))
-#TEST_HG_REPO_CLONE = os.environ.get('VCS_TEST_HG_REPO_CLONE',
-# jn(TEST_TMP_PATH, 'vcshgclone%s' % uniq_suffix))
-#TEST_HG_REPO_PULL = os.environ.get('VCS_TEST_HG_REPO_PULL',
-# jn(TEST_TMP_PATH, 'vcshgpull%s' % uniq_suffix))
-#
-#TEST_DIR = os.environ.get('VCS_TEST_ROOT', tempfile.gettempdir())
-#TEST_REPO_PREFIX = 'vcs-test'
-#
-#
-#def get_new_dir(title):
-# """
-# Returns always new directory path.
-# """
-# name = TEST_REPO_PREFIX
-# if title:
-# name = '-'.join((name, title))
-# hex = hashlib.sha1(str(time.time())).hexdigest()
-# name = '-'.join((name, hex))
-# path = os.path.join(TEST_DIR, name)
-# return get_normalized_path(path)
+
+GIT_REMOTE_REPO = 'git://github.com/codeinn/vcs.git'
+
+TEST_TMP_PATH = os.environ.get('VCS_TEST_ROOT', '/tmp')
+TEST_GIT_REPO = os.environ.get('VCS_TEST_GIT_REPO',
+ jn(TEST_TMP_PATH, 'vcs-git'))
+TEST_GIT_REPO_CLONE = os.environ.get('VCS_TEST_GIT_REPO_CLONE',
+ jn(TEST_TMP_PATH, 'vcsgitclone%s' % uniq_suffix))
+TEST_GIT_REPO_PULL = os.environ.get('VCS_TEST_GIT_REPO_PULL',
+ jn(TEST_TMP_PATH, 'vcsgitpull%s' % uniq_suffix))
+
+HG_REMOTE_REPO = 'http://bitbucket.org/marcinkuzminski/vcs'
+TEST_HG_REPO = os.environ.get('VCS_TEST_HG_REPO',
+ jn(TEST_TMP_PATH, 'vcs-hg'))
+TEST_HG_REPO_CLONE = os.environ.get('VCS_TEST_HG_REPO_CLONE',
+ jn(TEST_TMP_PATH, 'vcshgclone%s' % uniq_suffix))
+TEST_HG_REPO_PULL = os.environ.get('VCS_TEST_HG_REPO_PULL',
+ jn(TEST_TMP_PATH, 'vcshgpull%s' % uniq_suffix))
+
+TEST_DIR = os.environ.get('VCS_TEST_ROOT', tempfile.gettempdir())
+TEST_REPO_PREFIX = 'vcs-test'
+
+
+def get_new_dir(title):
+ """
+ Returns always new directory path.
+ """
+ name = TEST_REPO_PREFIX
+ if title:
+ name = '-'.join((name, title))
+ hex = hashlib.sha1(str(time.time())).hexdigest()
+ name = '-'.join((name, hex))
+ path = os.path.join(TEST_DIR, name)
+ return get_normalized_path(path)
+
PACKAGE_DIR = os.path.abspath(os.path.join(
os.path.dirname(__file__), '..'))
-_dest = jn(TESTS_TMP_PATH,'aconfig')
+_dest = jn(TEST_TMP_PATH, 'aconfig')
shutil.copy(jn(THIS, 'aconfig'), _dest)
TEST_USER_CONFIG_FILE = _dest
+
+#overide default configurations with rhodecode ones
+from rhodecode.tests import *
diff --git a/rhodecode/tests/vcs/test_archives.py b/rhodecode/tests/vcs/test_archives.py
--- a/rhodecode/tests/vcs/test_archives.py
+++ b/rhodecode/tests/vcs/test_archives.py
@@ -6,8 +6,8 @@ import zipfile
import datetime
import tempfile
import StringIO
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
from rhodecode.lib.vcs.exceptions import VCSError
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
diff --git a/rhodecode/tests/vcs/test_branches.py b/rhodecode/tests/vcs/test_branches.py
--- a/rhodecode/tests/vcs/test_branches.py
+++ b/rhodecode/tests/vcs/test_branches.py
@@ -1,13 +1,12 @@
from __future__ import with_statement
+import datetime
from rhodecode.lib import vcs
-import datetime
from rhodecode.lib.vcs.utils.compat import unittest
+from rhodecode.lib.vcs.nodes import FileNode
-from base import BackendTestMixin
-from conf import SCM_TESTS
-
-from rhodecode.lib.vcs.nodes import FileNode
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
class BranchesTestCaseMixin(BackendTestMixin):
diff --git a/rhodecode/tests/vcs/test_changesets.py b/rhodecode/tests/vcs/test_changesets.py
--- a/rhodecode/tests/vcs/test_changesets.py
+++ b/rhodecode/tests/vcs/test_changesets.py
@@ -1,15 +1,19 @@
from __future__ import with_statement
+import datetime
from rhodecode.lib import vcs
-import datetime
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
+
from rhodecode.lib.vcs.backends.base import BaseChangeset
-from rhodecode.lib.vcs.nodes import FileNode, AddedFileNodesGenerator,\
+from rhodecode.lib.vcs.nodes import (
+ FileNode, AddedFileNodesGenerator,
ChangedFileNodesGenerator, RemovedFileNodesGenerator
-from rhodecode.lib.vcs.exceptions import BranchDoesNotExistError
-from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
-from rhodecode.lib.vcs.exceptions import RepositoryError
+)
+from rhodecode.lib.vcs.exceptions import (
+ BranchDoesNotExistError, ChangesetDoesNotExistError,
+ RepositoryError
+)
from rhodecode.lib.vcs.utils.compat import unittest
diff --git a/rhodecode/tests/vcs/test_filenodes_unicode_path.py b/rhodecode/tests/vcs/test_filenodes_unicode_path.py
--- a/rhodecode/tests/vcs/test_filenodes_unicode_path.py
+++ b/rhodecode/tests/vcs/test_filenodes_unicode_path.py
@@ -5,8 +5,8 @@ from __future__ import with_statement
import datetime
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
-from test_inmemchangesets import BackendBaseTestCase
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.test_inmemchangesets import BackendBaseTestCase
+from rhodecode.tests.vcs.conf import SCM_TESTS
class FileNodeUnicodePathTestsMixin(object):
diff --git a/rhodecode/tests/vcs/test_getitem.py b/rhodecode/tests/vcs/test_getitem.py
--- a/rhodecode/tests/vcs/test_getitem.py
+++ b/rhodecode/tests/vcs/test_getitem.py
@@ -1,8 +1,8 @@
from __future__ import with_statement
import datetime
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
diff --git a/rhodecode/tests/vcs/test_getslice.py b/rhodecode/tests/vcs/test_getslice.py
--- a/rhodecode/tests/vcs/test_getslice.py
+++ b/rhodecode/tests/vcs/test_getslice.py
@@ -1,8 +1,8 @@
from __future__ import with_statement
import datetime
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
diff --git a/rhodecode/tests/vcs/test_git.py b/rhodecode/tests/vcs/test_git.py
--- a/rhodecode/tests/vcs/test_git.py
+++ b/rhodecode/tests/vcs/test_git.py
@@ -8,7 +8,7 @@ from rhodecode.lib.vcs.exceptions import
from rhodecode.lib.vcs.nodes import NodeKind, FileNode, DirNode, NodeState
from rhodecode.lib.vcs.utils.compat import unittest
from rhodecode.tests.vcs.base import BackendTestMixin
-from conf import TEST_GIT_REPO, TEST_GIT_REPO_CLONE, get_new_dir
+from rhodecode.tests.vcs.conf import TEST_GIT_REPO, TEST_GIT_REPO_CLONE, get_new_dir
class GitRepositoryTest(unittest.TestCase):
diff --git a/rhodecode/tests/vcs/test_hg.py b/rhodecode/tests/vcs/test_hg.py
--- a/rhodecode/tests/vcs/test_hg.py
+++ b/rhodecode/tests/vcs/test_hg.py
@@ -4,7 +4,7 @@ import os
from rhodecode.lib.vcs.backends.hg import MercurialRepository, MercurialChangeset
from rhodecode.lib.vcs.exceptions import RepositoryError, VCSError, NodeDoesNotExistError
from rhodecode.lib.vcs.nodes import NodeKind, NodeState
-from conf import PACKAGE_DIR, TEST_HG_REPO, TEST_HG_REPO_CLONE, \
+from rhodecode.tests.vcs.conf import PACKAGE_DIR, TEST_HG_REPO, TEST_HG_REPO_CLONE, \
TEST_HG_REPO_PULL
from rhodecode.lib.vcs.utils.compat import unittest
@@ -156,9 +156,10 @@ class MercurialRepositoryTest(unittest.T
#active branches
self.assertTrue('default' in self.repo.branches)
- self.assertTrue('git' in self.repo.branches)
+ self.assertTrue('stable' in self.repo.branches)
# closed
+ self.assertTrue('git' in self.repo._get_branches(closed=True))
self.assertTrue('web' in self.repo._get_branches(closed=True))
for name, id in self.repo.branches.items():
diff --git a/rhodecode/tests/vcs/test_inmemchangesets.py b/rhodecode/tests/vcs/test_inmemchangesets.py
--- a/rhodecode/tests/vcs/test_inmemchangesets.py
+++ b/rhodecode/tests/vcs/test_inmemchangesets.py
@@ -3,10 +3,11 @@ Tests so called "in memory changesets" c
"""
from __future__ import with_statement
-from rhodecode.lib import vcs
import time
import datetime
-from conf import SCM_TESTS, get_new_dir
+
+from rhodecode.lib import vcs
+from rhodecode.tests.vcs.conf import SCM_TESTS, get_new_dir
from rhodecode.lib.vcs.exceptions import EmptyRepositoryError
from rhodecode.lib.vcs.exceptions import NodeAlreadyAddedError
from rhodecode.lib.vcs.exceptions import NodeAlreadyExistsError
diff --git a/rhodecode/tests/vcs/test_repository.py b/rhodecode/tests/vcs/test_repository.py
--- a/rhodecode/tests/vcs/test_repository.py
+++ b/rhodecode/tests/vcs/test_repository.py
@@ -1,8 +1,8 @@
from __future__ import with_statement
import datetime
-from base import BackendTestMixin
-from conf import SCM_TESTS
-from conf import TEST_USER_CONFIG_FILE
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
+from rhodecode.tests.vcs.conf import TEST_USER_CONFIG_FILE
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
from rhodecode.lib.vcs.exceptions import ChangesetDoesNotExistError
diff --git a/rhodecode/tests/vcs/test_tags.py b/rhodecode/tests/vcs/test_tags.py
--- a/rhodecode/tests/vcs/test_tags.py
+++ b/rhodecode/tests/vcs/test_tags.py
@@ -1,7 +1,7 @@
from __future__ import with_statement
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
from rhodecode.lib.vcs.exceptions import TagAlreadyExistError
from rhodecode.lib.vcs.exceptions import TagDoesNotExistError
from rhodecode.lib.vcs.utils.compat import unittest
diff --git a/rhodecode/tests/vcs/test_utils.py b/rhodecode/tests/vcs/test_utils.py
--- a/rhodecode/tests/vcs/test_utils.py
+++ b/rhodecode/tests/vcs/test_utils.py
@@ -18,7 +18,7 @@ from rhodecode.lib.vcs.utils import auth
from rhodecode.lib.vcs.utils.paths import get_user_home
from rhodecode.lib.vcs.exceptions import VCSError
-from conf import TEST_HG_REPO, TEST_GIT_REPO, TEST_TMP_PATH
+from rhodecode.tests.vcs.conf import TEST_HG_REPO, TEST_GIT_REPO, TEST_TMP_PATH
class PathsTest(unittest.TestCase):
diff --git a/rhodecode/tests/vcs/test_vcs.py b/rhodecode/tests/vcs/test_vcs.py
--- a/rhodecode/tests/vcs/test_vcs.py
+++ b/rhodecode/tests/vcs/test_vcs.py
@@ -1,11 +1,13 @@
from __future__ import with_statement
+import os
+import shutil
+
from rhodecode.lib.vcs import VCSError, get_repo, get_backend
from rhodecode.lib.vcs.backends.hg import MercurialRepository
from rhodecode.lib.vcs.utils.compat import unittest
-from conf import TEST_HG_REPO, TEST_GIT_REPO, TEST_TMP_PATH
-import os
-import shutil
+from rhodecode.tests.vcs.conf import TEST_HG_REPO, TEST_GIT_REPO, TEST_TMP_PATH
+
class VCSTest(unittest.TestCase):
diff --git a/rhodecode/tests/vcs/test_workdirs.py b/rhodecode/tests/vcs/test_workdirs.py
--- a/rhodecode/tests/vcs/test_workdirs.py
+++ b/rhodecode/tests/vcs/test_workdirs.py
@@ -3,8 +3,8 @@ from __future__ import with_statement
import datetime
from rhodecode.lib.vcs.nodes import FileNode
from rhodecode.lib.vcs.utils.compat import unittest
-from base import BackendTestMixin
-from conf import SCM_TESTS
+from rhodecode.tests.vcs.base import BackendTestMixin
+from rhodecode.tests.vcs.conf import SCM_TESTS
class WorkdirTestCaseMixin(BackendTestMixin):
diff --git a/rhodecode/tests/vcs_test_hg.tar.gz b/rhodecode/tests/vcs_test_hg.tar.gz
index 39e442c44e5a93d5536188a5632fb6559d82889e..11d348dccf6c1b38f7ef6cb24f8671f7ccc4712e
GIT binary patch
literal 1344266
zc$@$fK
U0q#WUFGfk;j2HpySqmR
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 smzec=8D1XbCcd&;d8&LluqF`M@u1Zia$8--B
zjR{4^WBCOYOXbP^Q_`Q2v`E=P|0*H>l3KL-Btby=Ptuat)}81)_>amY@+Js>uX5Si6-y;7fE5g?4Y)Ak}`Uz-3)6`mOos
zD4^oHD4zjx1w-?btV>s9qA#oP)DIiuNs{@cz?+l+q+qe6$})$I29_F0+uvh%QBLl=
zm9}9i>2pV!6nhRjD|RN)C5Ge-E=Yw=k~VTA%|G$?r+jfLLcJ00
z?t~$(XkRS6hA9*0Fe-tRLTx^#z^plZgHb)Eo3JE+I};!McTU8;RYzkXpkZZnNSOFR
z6k1(?h!3TU11QKByEsRVX1+t!BL2p^0rgdMw!N`O11WtefhaDrH=JQXGGk(2ftdE3F=w%uIbtGlxb#sp
zgCW=EmzrLd)ism_on=s1!b~|);4tnyJ0@f<326_zkDMZ&rsNrMf>$cKJg|947d%I%
z(MQsG!B@d Bi$0=q
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
|