Index: tests/fake_repos.py |
diff --git a/tests/fake_repos.py b/tests/fake_repos.py |
index d6332cb392bc8ee61e308410285883dc79d46c0c..dd8b3f8264b7f051c721933ab8925e588932fc45 100755 |
--- a/tests/fake_repos.py |
+++ b/tests/fake_repos.py |
@@ -195,13 +195,16 @@ def commit_git(repo): |
_FAKE_LOADED = False |
-class FakeRepos(object): |
+class FakeReposBase(object): |
"""Generate both svn and git repositories to test gclient functionality. |
Many DEPS functionalities need to be tested: Var, File, From, deps_os, hooks, |
use_relative_paths. |
- And types of dependencies: Relative urls, Full urls, both svn and git.""" |
+ And types of dependencies: Relative urls, Full urls, both svn and git. |
+ |
+ populateSvn() and populateGit() need to be implemented by the subclass. |
+ """ |
# Should leak the repositories. |
SHOULD_LEAK = False |
@@ -209,6 +212,7 @@ class FakeRepos(object): |
TRIAL_DIR = None |
# Hostname |
HOST = '127.0.0.1' |
+ NB_GIT_REPOS = 1 |
def __init__(self, trial_dir=None, leak=None, host=None): |
global _FAKE_LOADED |
@@ -315,6 +319,51 @@ class FakeRepos(object): |
self.populateSvn() |
return True |
+ def setUpGIT(self): |
+ """Creates git repositories and start the servers.""" |
+ if self.gitdaemon: |
+ return True |
+ self.setUp() |
+ if sys.platform == 'win32': |
+ return False |
+ for repo in ['repo_%d' % r for r in range(1, self.NB_GIT_REPOS + 1)]: |
+ check_call(['git', 'init', '-q', join(self.git_root, repo)]) |
+ self.git_hashes[repo] = [None] |
+ self.populateGit() |
+ # Start the daemon. |
+ cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] |
+ if self.HOST == '127.0.0.1': |
+ cmd.append('--listen=127.0.0.1') |
+ logging.debug(cmd) |
+ self.gitdaemon = Popen(cmd, cwd=self.repos_dir) |
+ return True |
+ |
+ def _commit_svn(self, tree): |
+ self._genTree(self.svn_root, tree) |
+ commit_svn(self.svn_root) |
+ if self.svn_revs and self.svn_revs[-1]: |
+ new_tree = self.svn_revs[-1].copy() |
+ new_tree.update(tree) |
+ else: |
+ new_tree = tree.copy() |
+ self.svn_revs.append(new_tree) |
+ |
+ def _commit_git(self, repo, tree): |
+ repo_root = join(self.git_root, repo) |
+ self._genTree(repo_root, tree) |
+ commit_hash = commit_git(repo_root) |
+ if self.git_hashes[repo][-1]: |
+ new_tree = self.git_hashes[repo][-1][1].copy() |
+ new_tree.update(tree) |
+ else: |
+ new_tree = tree.copy() |
+ self.git_hashes[repo].append((commit_hash, new_tree)) |
+ |
+ |
+class FakeRepos(FakeReposBase): |
+ """Implements populateSvn() and populateGit().""" |
+ NB_GIT_REPOS = 4 |
+ |
def populateSvn(self): |
"""Creates a few revisions of changes including DEPS files.""" |
# Repos |
@@ -420,17 +469,7 @@ hooks = [ |
""" % { 'host': self.HOST } |
self._commit_svn(fs) |
- def setUpGIT(self): |
- """Creates git repositories and start the servers.""" |
- if self.gitdaemon: |
- return True |
- self.setUp() |
- if sys.platform == 'win32': |
- return False |
- for repo in ['repo_%d' % r for r in range(1, 5)]: |
- check_call(['git', 'init', '-q', join(self.git_root, repo)]) |
- self.git_hashes[repo] = [None] |
- |
+ def populateGit(self): |
# Testing: |
# - dependency disapear |
# - dependency renamed |
@@ -530,35 +569,6 @@ hooks = [ |
'origin': 'git/repo_1@2\n', |
}) |
- # Start the daemon. |
- cmd = ['git', 'daemon', '--export-all', '--base-path=' + self.repos_dir] |
- if self.HOST == '127.0.0.1': |
- cmd.append('--listen=127.0.0.1') |
- logging.debug(cmd) |
- self.gitdaemon = Popen(cmd, cwd=self.repos_dir) |
- return True |
- |
- def _commit_svn(self, tree): |
- self._genTree(self.svn_root, tree) |
- commit_svn(self.svn_root) |
- if self.svn_revs and self.svn_revs[-1]: |
- new_tree = self.svn_revs[-1].copy() |
- new_tree.update(tree) |
- else: |
- new_tree = tree.copy() |
- self.svn_revs.append(new_tree) |
- |
- def _commit_git(self, repo, tree): |
- repo_root = join(self.git_root, repo) |
- self._genTree(repo_root, tree) |
- commit_hash = commit_git(repo_root) |
- if self.git_hashes[repo][-1]: |
- new_tree = self.git_hashes[repo][-1][1].copy() |
- new_tree.update(tree) |
- else: |
- new_tree = tree.copy() |
- self.git_hashes[repo].append((commit_hash, new_tree)) |
- |
class FakeReposTestBase(unittest.TestCase): |
"""This is vaguely inspired by twisted.""" |
@@ -568,11 +578,13 @@ class FakeReposTestBase(unittest.TestCase): |
# static FakeRepos instance. Lazy loaded. |
FAKE_REPOS = None |
+ # Override if necessary. |
+ FAKE_REPOS_CLASS = FakeRepos |
def __init__(self, *args, **kwargs): |
unittest.TestCase.__init__(self, *args, **kwargs) |
if not FakeReposTestBase.FAKE_REPOS: |
- FakeReposTestBase.FAKE_REPOS = FakeRepos() |
+ FakeReposTestBase.FAKE_REPOS = self.FAKE_REPOS_CLASS() |
def setUp(self): |
unittest.TestCase.setUp(self) |