| Index: tests/fake_repos.py
|
| diff --git a/tests/fake_repos.py b/tests/fake_repos.py
|
| index 5f1125603e13f8e944ab7337dcf95a33d0c2bd50..b9ef00b67dd4fd7b6225dd08227f949e4f5a4e78 100755
|
| --- a/tests/fake_repos.py
|
| +++ b/tests/fake_repos.py
|
| @@ -239,7 +239,6 @@ class FakeReposBase(object):
|
| # Override if unhappy.
|
| TRIAL_DIR = None
|
| # Hostname
|
| - HOST = '127.0.0.1'
|
| NB_GIT_REPOS = 1
|
| USERS = [
|
| ('user1@example.com', 'foo'),
|
| @@ -256,8 +255,7 @@ class FakeReposBase(object):
|
| logging.basicConfig(level=logging.DEBUG)
|
| elif leak is not None:
|
| self.SHOULD_LEAK = leak
|
| - if host:
|
| - self.HOST = host
|
| + self.host = host or '127.0.0.1'
|
| if trial_dir:
|
| self.TRIAL_DIR = trial_dir
|
|
|
| @@ -279,6 +277,8 @@ class FakeReposBase(object):
|
| self.svn_repo = None
|
| self.git_dirty = False
|
| self.svn_dirty = False
|
| + self.svn_base = 'svn://%s/svn/' % self.host
|
| + self.git_base = 'git://%s/git/' % self.host
|
| self.svn_port = 3690
|
| self.git_port = 9418
|
|
|
| @@ -306,15 +306,16 @@ class FakeReposBase(object):
|
| atexit.register(self.tear_down)
|
|
|
| def cleanup_dirt(self):
|
| - """For each dirty repository, regenerate it."""
|
| + """For each dirty repository, destroy it."""
|
| if self.svn_dirty:
|
| if not self.tear_down_svn():
|
| - logging.warning('Using both leaking checkout and svn dirty checkout')
|
| + logging.error('Using both leaking checkout and svn dirty checkout')
|
| if self.git_dirty:
|
| if not self.tear_down_git():
|
| - logging.warning('Using both leaking checkout and git dirty checkout')
|
| + logging.error('Using both leaking checkout and git dirty checkout')
|
|
|
| def tear_down(self):
|
| + """Kills the servers and delete the directories."""
|
| self.tear_down_svn()
|
| self.tear_down_git()
|
| if not self.SHOULD_LEAK:
|
| @@ -344,6 +345,7 @@ class FakeReposBase(object):
|
| if self.git_pid_file:
|
| pid = int(self.git_pid_file.read())
|
| self.git_pid_file.close()
|
| + logging.debug('Killing git daemon pid %s' % pid)
|
| kill_pid(pid)
|
| self.git_pid_file = None
|
| self.wait_for_port_to_free(self.git_port)
|
| @@ -391,8 +393,8 @@ class FakeReposBase(object):
|
|
|
| # Start the daemon.
|
| cmd = ['svnserve', '-d', '--foreground', '-r', self.repos_dir]
|
| - if self.HOST == '127.0.0.1':
|
| - cmd.append('--listen-host=127.0.0.1')
|
| + if self.host == '127.0.0.1':
|
| + cmd.append('--listen-host=' + self.host)
|
| self.check_port_is_free(self.svn_port)
|
| self.svnserve = Popen(cmd, cwd=self.svn_repo)
|
| self.wait_for_port_to_bind(self.svn_port, self.svnserve)
|
| @@ -420,8 +422,8 @@ class FakeReposBase(object):
|
| '--reuseaddr',
|
| '--base-path=' + self.repos_dir,
|
| '--pid-file=' + self.git_pid_file.name]
|
| - if self.HOST == '127.0.0.1':
|
| - cmd.append('--listen=127.0.0.1')
|
| + if self.host == '127.0.0.1':
|
| + cmd.append('--listen=' + self.host)
|
| self.check_port_is_free(self.git_port)
|
| self.gitdaemon = Popen(cmd, cwd=self.repos_dir)
|
| self.wait_for_port_to_bind(self.git_port, self.gitdaemon)
|
| @@ -452,7 +454,7 @@ class FakeReposBase(object):
|
| def check_port_is_free(self, port):
|
| sock = socket.socket()
|
| try:
|
| - sock.connect((self.HOST, port))
|
| + sock.connect((self.host, port))
|
| # It worked, throw.
|
| assert False, '%d shouldn\'t be bound' % port
|
| except EnvironmentError:
|
| @@ -467,7 +469,7 @@ class FakeReposBase(object):
|
| maxdelay = datetime.timedelta(seconds=30)
|
| while (datetime.datetime.utcnow() - start) < maxdelay:
|
| try:
|
| - sock.connect((self.HOST, port))
|
| + sock.connect((self.host, port))
|
| logging.debug('%d is now bound' % port)
|
| return
|
| except EnvironmentError:
|
| @@ -486,7 +488,7 @@ class FakeReposBase(object):
|
| while (datetime.datetime.utcnow() - start) < maxdelay:
|
| try:
|
| sock = socket.socket()
|
| - sock.connect((self.HOST, port))
|
| + sock.connect((self.host, port))
|
| logging.debug('%d was bound, waiting to free' % port)
|
| except EnvironmentError:
|
| logging.debug('%d now free' % port)
|
| @@ -509,7 +511,7 @@ class FakeRepos(FakeReposBase):
|
| def populateSvn(self):
|
| """Creates a few revisions of changes including DEPS files."""
|
| # Repos
|
| - check_call(['svn', 'checkout', 'svn://127.0.0.1/svn', self.svn_checkout,
|
| + check_call(['svn', 'checkout', self.svn_base, self.svn_checkout,
|
| '-q', '--non-interactive', '--no-auth-cache',
|
| '--username', self.USERS[0][0], '--password', self.USERS[0][1]])
|
| assert os.path.isdir(join(self.svn_checkout, '.svn'))
|
| @@ -547,23 +549,23 @@ vars = {
|
| 'DummyVariable': 'third_party',
|
| }
|
| deps = {
|
| - 'src/other': 'svn://%(host)s/svn/trunk/other@1',
|
| + 'src/other': '%(svn_base)strunk/other@1',
|
| 'src/third_party/fpp': '/trunk/' + Var('DummyVariable') + '/foo',
|
| }
|
| deps_os = {
|
| 'mac': {
|
| 'src/third_party/prout': '/trunk/third_party/prout',
|
| },
|
| -}""" % { 'host': self.HOST })
|
| +}""" % { 'svn_base': self.svn_base })
|
| self._commit_svn(fs)
|
|
|
| fs = file_system(2, """
|
| deps = {
|
| - 'src/other': 'svn://%(host)s/svn/trunk/other',
|
| + 'src/other': '%(svn_base)strunk/other',
|
| # Load another DEPS and load a dependency from it. That's an example of
|
| # WebKit's chromium checkout flow. Verify it works out of order.
|
| 'src/third_party/foo': From('src/file/other', 'foo/bar'),
|
| - 'src/file/other': File('svn://%(host)s/svn/trunk/other/DEPS'),
|
| + 'src/file/other': File('%(svn_base)strunk/other/DEPS'),
|
| }
|
| # I think this is wrong to have the hooks run from the base of the gclient
|
| # checkout. It's maybe a bit too late to change that behavior.
|
| @@ -580,7 +582,7 @@ hooks = [
|
| 'open(\\'src/svn_hooked2\\', \\'w\\').write(\\'svn_hooked2\\')'],
|
| },
|
| ]
|
| -""" % { 'host': self.HOST })
|
| +""" % { 'svn_base': self.svn_base })
|
| fs['trunk/other/DEPS'] = """
|
| deps = {
|
| 'foo/bar': '/trunk/third_party/foo@1',
|
| @@ -599,7 +601,7 @@ solutions = [
|
| """
|
| fs['trunk/webkit/DEPS'] = """
|
| deps = {
|
| - 'foo/bar': 'svn://%(host)s/svn/trunk/third_party/foo@1'
|
| + 'foo/bar': '%(svn_base)strunk/third_party/foo@1'
|
| }
|
|
|
| hooks = [
|
| @@ -608,7 +610,7 @@ hooks = [
|
| 'action': ['echo', 'foo'],
|
| },
|
| ]
|
| -""" % { 'host': self.HOST }
|
| +""" % { 'svn_base': self.svn_base }
|
| self._commit_svn(fs)
|
|
|
| def populateGit(self):
|
| @@ -640,7 +642,7 @@ vars = {
|
| 'DummyVariable': 'repo',
|
| }
|
| deps = {
|
| - 'src/repo2': 'git://%(host)s/git/repo_2',
|
| + 'src/repo2': '%(git_base)srepo_2',
|
| 'src/repo2/repo3': '/' + Var('DummyVariable') + '_3@%(hash3)s',
|
| }
|
| deps_os = {
|
| @@ -648,7 +650,7 @@ deps_os = {
|
| 'src/repo4': '/repo_4',
|
| },
|
| }""" % {
|
| - 'host': self.HOST,
|
| + 'git_base': self.git_base,
|
| # See self.__init__() for the format. Grab's the hash of the first
|
| # commit in repo_2. Only keep the first 7 character because of:
|
| # TODO(maruel): http://crosbug.com/3591 We need to strip the hash..
|
| @@ -682,7 +684,7 @@ deps = {
|
| self._commit_git('repo_1', {
|
| 'DEPS': """
|
| deps = {
|
| - 'src/repo2': 'git://%(host)s/git/repo_2@%(hash)s',
|
| + 'src/repo2': '%(git_base)srepo_2@%(hash)s',
|
| #'src/repo2/repo_renamed': '/repo_3',
|
| 'src/repo2/repo_renamed': From('src/repo2', 'foo/bar'),
|
| }
|
| @@ -702,7 +704,7 @@ hooks = [
|
| },
|
| ]
|
| """ % {
|
| - 'host': self.HOST,
|
| + 'git_base': self.git_base,
|
| # See self.__init__() for the format. Grab's the hash of the first
|
| # commit in repo_2. Only keep the first 7 character because of:
|
| # TODO(maruel): http://crosbug.com/3591 We need to strip the hash.. duh.
|
| @@ -726,6 +728,7 @@ class FakeReposTestBase(unittest.TestCase):
|
| def __init__(self, *args, **kwargs):
|
| unittest.TestCase.__init__(self, *args, **kwargs)
|
| if not FakeReposTestBase.FAKE_REPOS:
|
| + # Lazy create the global instance.
|
| FakeReposTestBase.FAKE_REPOS = self.FAKE_REPOS_CLASS()
|
|
|
| def setUp(self):
|
| @@ -738,13 +741,21 @@ class FakeReposTestBase(unittest.TestCase):
|
| self.root_dir = join(self.CLASS_ROOT_DIR, self.id())
|
| rmtree(self.root_dir)
|
| os.makedirs(self.root_dir)
|
| - self.svn_base = 'svn://%s/svn/' % self.FAKE_REPOS.HOST
|
| - self.git_base = 'git://%s/git/' % self.FAKE_REPOS.HOST
|
|
|
| def tearDown(self):
|
| if not self.FAKE_REPOS.SHOULD_LEAK:
|
| rmtree(self.root_dir)
|
|
|
| + @property
|
| + def svn_base(self):
|
| + """Shortcut."""
|
| + return self.FAKE_REPOS.svn_base
|
| +
|
| + @property
|
| + def git_base(self):
|
| + """Shortcut."""
|
| + return self.FAKE_REPOS.git_base
|
| +
|
| def checkString(self, expected, result, msg=None):
|
| """Prints the diffs to ease debugging."""
|
| if expected != result:
|
|
|