diff --git a/rhodecode/tests/vcs/__init__.py b/rhodecode/tests/vcs/__init__.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/vcs/__init__.py @@ -0,0 +1,56 @@ +""" +Unit tests for vcs_ library. + +In order to run tests we need to prepare our environment first. Tests would be +run for each engine listed at ``conf.SCM_TESTS`` - keys are aliases from +``vcs.backends.BACKENDS``. + +For each SCM we run tests for, we need some repository. We would use +repositories location from system environment variables or test suite defaults +- see ``conf`` module for more detail. We simply try to check if repository at +certain location exists, if not we would try to fetch them. At ``test_vcs`` or +``test_common`` we run unit tests common for each repository type and for +example specific mercurial tests are located at ``test_hg`` module. + +Oh, and tests are run with ``unittest.collector`` wrapped by ``collector`` +function at ``tests/__init__.py``. + +.. _vcs: http://bitbucket.org/marcinkuzminski/vcs +.. _unittest: http://pypi.python.org/pypi/unittest + +""" +import os +from rhodecode.lib import vcs +from rhodecode.lib.vcs.utils.compat import unittest +from rhodecode.tests import * +from utils import VCSTestError, SCMFetcher + + +def setup_package(): + """ + Prepares whole package for tests which mainly means it would try to fetch + test repositories or use already existing ones. + """ + fetchers = { + 'hg': { + 'alias': 'hg', + 'test_repo_path': TEST_HG_REPO, + 'remote_repo': HG_REMOTE_REPO, + 'clone_cmd': 'hg clone', + }, + 'git': { + 'alias': 'git', + 'test_repo_path': TEST_GIT_REPO, + 'remote_repo': GIT_REMOTE_REPO, + 'clone_cmd': 'git clone --bare', + }, + } + try: + for scm, fetcher_info in fetchers.items(): + fetcher = SCMFetcher(**fetcher_info) + fetcher.setup() + except VCSTestError, err: + raise RuntimeError(str(err)) + +start_dir = os.path.abspath(os.path.dirname(__file__)) +unittest.defaultTestLoader.discover(start_dir)