| Index: testing_support/local_rietveld.py
|
| diff --git a/testing_support/local_rietveld.py b/testing_support/local_rietveld.py
|
| index 20aaa611e55e52457e40732154f1c58a65330d30..f88c1f5b9098264e8ccc9131d91b0a812abe39d6 100755
|
| --- a/testing_support/local_rietveld.py
|
| +++ b/testing_support/local_rietveld.py
|
| @@ -10,11 +10,13 @@ It makes sure Google AppEngine SDK is found, download Rietveld and Django code
|
| if necessary and starts the server on a free inbound TCP port.
|
| """
|
|
|
| +import logging
|
| import optparse
|
| import os
|
| import shutil
|
| import socket
|
| import sys
|
| +import tempfile
|
| import time
|
|
|
| try:
|
| @@ -61,6 +63,7 @@ class LocalRietveld(object):
|
| self.rietveld = os.path.join(self.base_dir, '_rietveld')
|
| self.test_server = None
|
| self.port = None
|
| + self.tempdir = None
|
|
|
| # Find the GAE SDK
|
| previous_dir = ''
|
| @@ -105,19 +108,23 @@ class LocalRietveld(object):
|
|
|
| def start_server(self, verbose=False):
|
| self.install_prerequisites()
|
| + assert not self.tempdir
|
| + self.tempdir = tempfile.mkdtemp(prefix='rietveld_test')
|
| self.port = find_free_port()
|
| if verbose:
|
| - pipe = None
|
| + stdout = stderr = None
|
| else:
|
| - pipe = subprocess2.VOID
|
| + stdout = subprocess2.PIPE
|
| + stderr = subprocess2.STDOUT
|
| cmd = [
|
| sys.executable,
|
| self.dev_app,
|
| - '--skip_sdk_update_check',
|
| '.',
|
| - '--port=%d' % self.port,
|
| - '--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'),
|
| - '-c']
|
| + '--port', str(self.port),
|
| + '--storage', self.tempdir,
|
| + '--clear_search_indexes',
|
| + '--skip_sdk_update_check',
|
| + ]
|
|
|
| # CHEAP TRICK
|
| # By default you only want to bind on loopback but I'm testing over a
|
| @@ -125,16 +132,20 @@ class LocalRietveld(object):
|
| # remotely.
|
| if os.environ.get('GAE_LISTEN_ALL', '') == 'true':
|
| cmd.extend(('-a', '0.0.0.0'))
|
| -
|
| + logging.info(' '.join(cmd))
|
| self.test_server = subprocess2.Popen(
|
| - cmd, stdout=pipe, stderr=pipe, cwd=self.rietveld)
|
| + cmd, stdout=stdout, stderr=stderr, cwd=self.rietveld)
|
| # Loop until port 127.0.0.1:port opens or the process dies.
|
| while not test_port(self.port):
|
| self.test_server.poll()
|
| if self.test_server.returncode is not None:
|
| + if not verbose:
|
| + out = self.test_server.communicate()[0]
|
| + shutil.rmtree(self.tempdir)
|
| + self.tempdir = None
|
| raise Failure(
|
| - 'Test rietveld instance failed early on port %s' %
|
| - self.port)
|
| + 'Test rietveld instance failed early on port %s\n%s' %
|
| + (self.port, out))
|
| time.sleep(0.01)
|
|
|
| def stop_server(self):
|
| @@ -146,6 +157,9 @@ class LocalRietveld(object):
|
| self.test_server.wait()
|
| self.test_server = None
|
| self.port = None
|
| + if self.tempdir:
|
| + shutil.rmtree(self.tempdir)
|
| + self.tempdir = None
|
|
|
|
|
| def main():
|
|
|