""" 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)