run-tests: clean up temp directory variables
authorGregory Szorc <gregory.szorc@gmail.com>
Sat, 19 Apr 2014 13:29:26 -0700
changeset 21304 e626a67da4ba
parent 21303 21a706020dd6
child 21305 d7a7825ff2cf
run-tests: clean up temp directory variables testtmp is an implementation detail. It didn't need to be exposed to the world. threadtmp is derived from count. It is now created as part of the constructor and mostly hidden from the outside world.
tests/run-tests.py
--- a/tests/run-tests.py	Sat Apr 19 13:26:12 2014 -0700
+++ b/tests/run-tests.py	Sat Apr 19 13:29:26 2014 -0700
@@ -547,13 +547,15 @@
 class Test(object):
     """Encapsulates a single, runnable test."""
 
-    def __init__(self, path, options, threadtmp, count):
+    def __init__(self, path, options, count):
         self._path = path
         self._options = options
-        self._threadtmp = threadtmp
 
-        self.testtmp = os.path.join(threadtmp, os.path.basename(path))
-        os.mkdir(self.testtmp)
+        self.threadtmp = os.path.join(HGTMP, 'child%d' % count)
+        os.mkdir(self.threadtmp)
+
+        self._testtmp = os.path.join(self.threadtmp, os.path.basename(path))
+        os.mkdir(self._testtmp)
 
         self._setreplacements(count)
 
@@ -581,22 +583,22 @@
             r.append(
                 (''.join(c.isalpha() and '[%s%s]' % (c.lower(), c.upper()) or
                     c in '/\\' and r'[/\\]' or c.isdigit() and c or '\\' + c
-                    for c in self.testtmp), '$TESTTMP'))
+                    for c in self._testtmp), '$TESTTMP'))
         else:
-            r.append((re.escape(self.testtmp), '$TESTTMP'))
+            r.append((re.escape(self._testtmp), '$TESTTMP'))
 
         self._replacements = r
         self._port = port
 
     def _getenv(self):
         env = os.environ.copy()
-        env['TESTTMP'] = self.testtmp
-        env['HOME'] = self.testtmp
+        env['TESTTMP'] = self._testtmp
+        env['HOME'] = self._testtmp
         env["HGPORT"] = str(self._port)
         env["HGPORT1"] = str(self._port + 1)
         env["HGPORT2"] = str(self._port + 2)
-        env["HGRCPATH"] = os.path.join(self._threadtmp, '.hgrc')
-        env["DAEMON_PIDS"] = os.path.join(self._threadtmp, 'daemon.pids')
+        env["HGRCPATH"] = os.path.join(self.threadtmp, '.hgrc')
+        env["DAEMON_PIDS"] = os.path.join(self.threadtmp, 'daemon.pids')
         env["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"'
         env["HGMERGE"] = "internal:merge"
         env["HGUSER"]   = "test"
@@ -634,7 +636,7 @@
 class PythonTest(Test):
     """A Python-based test."""
     def _run(self, replacements, env):
-        return pytest(self._path, self.testtmp, self._options, replacements,
+        return pytest(self._path, self._testtmp, self._options, replacements,
                       env)
 
 needescape = re.compile(r'[\x00-\x08\x0b-\x1f\x7f-\xff]').search
@@ -897,7 +899,7 @@
     """A "t test" is a test backed by a .t file."""
 
     def _run(self, replacements, env):
-        return tsttest(self._path, self.testtmp, self._options, replacements,
+        return tsttest(self._path, self._testtmp, self._options, replacements,
                        env)
 
 wifexited = getattr(os, "WIFEXITED", lambda x: False)
@@ -1022,11 +1024,7 @@
     if os.path.exists(err):
         os.remove(err)       # Remove any previous output files
 
-    # Make a tmp subdirectory to work in
-    threadtmp = os.path.join(HGTMP, "child%d" % count)
-    os.mkdir(threadtmp)
-
-    t = runner(testpath, options, threadtmp, count)
+    t = runner(testpath, options, count)
 
     starttime = time.time()
     try:
@@ -1102,7 +1100,7 @@
         iolock.release()
 
     if not options.keep_tmpdir:
-        shutil.rmtree(threadtmp, True)
+        shutil.rmtree(t.threadtmp, True)
     return result
 
 _hgpath = None