diff --git a/rhodecode/tests/vcs/test_vcs.py b/rhodecode/tests/vcs/test_vcs.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/vcs/test_vcs.py @@ -0,0 +1,84 @@ +from __future__ import with_statement + +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 + + +class VCSTest(unittest.TestCase): + """ + Tests for main module's methods. + """ + + def test_get_backend(self): + hg = get_backend('hg') + self.assertEqual(hg, MercurialRepository) + + def test_alias_detect_hg(self): + alias = 'hg' + path = TEST_HG_REPO + backend = get_backend(alias) + repo = backend(path) + self.assertEqual('hg',repo.alias) + + def test_alias_detect_git(self): + alias = 'git' + path = TEST_GIT_REPO + backend = get_backend(alias) + repo = backend(path) + self.assertEqual('git',repo.alias) + + def test_wrong_alias(self): + alias = 'wrong_alias' + self.assertRaises(VCSError, get_backend, alias) + + def test_get_repo(self): + alias = 'hg' + path = TEST_HG_REPO + backend = get_backend(alias) + repo = backend(path) + + self.assertEqual(repo.__class__, get_repo(path, alias).__class__) + self.assertEqual(repo.path, get_repo(path, alias).path) + + def test_get_repo_autoalias_hg(self): + alias = 'hg' + path = TEST_HG_REPO + backend = get_backend(alias) + repo = backend(path) + + self.assertEqual(repo.__class__, get_repo(path).__class__) + self.assertEqual(repo.path, get_repo(path).path) + + def test_get_repo_autoalias_git(self): + alias = 'git' + path = TEST_GIT_REPO + backend = get_backend(alias) + repo = backend(path) + + self.assertEqual(repo.__class__, get_repo(path).__class__) + self.assertEqual(repo.path, get_repo(path).path) + + + def test_get_repo_err(self): + blank_repo_path = os.path.join(TEST_TMP_PATH, 'blank-error-repo') + if os.path.isdir(blank_repo_path): + shutil.rmtree(blank_repo_path) + + os.mkdir(blank_repo_path) + self.assertRaises(VCSError, get_repo, blank_repo_path) + self.assertRaises(VCSError, get_repo, blank_repo_path + 'non_existing') + + def test_get_repo_multialias(self): + multialias_repo_path = os.path.join(TEST_TMP_PATH, 'hg-git-repo') + if os.path.isdir(multialias_repo_path): + shutil.rmtree(multialias_repo_path) + + os.mkdir(multialias_repo_path) + + os.mkdir(os.path.join(multialias_repo_path, '.git')) + os.mkdir(os.path.join(multialias_repo_path, '.hg')) + self.assertRaises(VCSError, get_repo, multialias_repo_path)