changeset 9706:f8b4df4b033d

run-tests: make --tmpdir option more useful. - instead of creating HGTMP inside tmpdir, now HGTMP is tmpdir (thus, fail if tmpdir already exists) - passing --tmpdir automatically turns on --keep-tmpdir
author Greg Ward <greg-hg@gerg.ca>
date Mon, 02 Nov 2009 17:06:10 -0500
parents 563a9c3a7d2e
children 38deec407f8d
files tests/run-tests.py
diffstat 1 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/tests/run-tests.py	Mon Nov 02 21:55:59 2009 +0100
+++ b/tests/run-tests.py	Mon Nov 02 17:06:10 2009 -0500
@@ -93,8 +93,10 @@
     parser.add_option("-k", "--keywords",
         help="run tests matching keywords")
     parser.add_option("--keep-tmpdir", action="store_true",
-        help="keep temporary directory after running tests"
-             " (best used with --tmpdir)")
+        help="keep temporary directory after running tests")
+    parser.add_option("--tmpdir", type="string",
+        help="run tests in the given temporary directory"
+             " (implies --keep-tmpdir)")
     parser.add_option("-R", "--restart", action="store_true",
         help="restart at last error")
     parser.add_option("-p", "--port", type="int",
@@ -109,8 +111,6 @@
     parser.add_option("-t", "--timeout", type="int",
         help="kill errant tests after TIMEOUT seconds"
              " (default: $%s or %d)" % defaults['timeout'])
-    parser.add_option("--tmpdir", type="string",
-        help="run tests in the given temporary directory")
     parser.add_option("-v", "--verbose", action="store_true",
         help="output verbose messages")
     parser.add_option("-n", "--nodiff", action="store_true",
@@ -173,11 +173,6 @@
 
     if options.tmpdir:
         options.tmpdir = os.path.expanduser(options.tmpdir)
-        try:
-            os.makedirs(options.tmpdir)
-        except OSError, err:
-            if err.errno != errno.EEXIST:
-                raise
 
     if options.jobs < 1:
         parser.error('--jobs must be positive')
@@ -765,8 +760,24 @@
 
     global TESTDIR, HGTMP, INST, BINDIR, PYTHONDIR, COVERAGE_FILE
     TESTDIR = os.environ["TESTDIR"] = os.getcwd()
-    HGTMP = os.environ['HGTMP'] = os.path.realpath(tempfile.mkdtemp('', 'hgtests.',
-                                                   options.tmpdir))
+    if options.tmpdir:
+        options.keep_tmpdir = True
+        tmpdir = options.tmpdir
+        if os.path.exists(tmpdir):
+            # Meaning of tmpdir has changed since 1.3: we used to create
+            # HGTMP inside tmpdir; now HGTMP is tmpdir.  So fail if
+            # tmpdir already exists.
+            sys.exit("error: temp dir %r already exists" % tmpdir)
+
+            # Automatically removing tmpdir sounds convenient, but could
+            # really annoy anyone in the habit of using "--tmpdir=/tmp"
+            # or "--tmpdir=$HOME".
+            #vlog("# Removing temp dir", tmpdir)
+            #shutil.rmtree(tmpdir)
+        os.makedirs(tmpdir)
+    else:
+        tmpdir = tempfile.mkdtemp('', 'hgtests.')
+    HGTMP = os.environ['HGTMP'] = os.path.realpath(tmpdir)
     DAEMON_PIDS = None
     HGRCPATH = None