| 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():
 | 
| 
 |