[PATCH 1 of 6] tests: replace test tmp directory with $TESTTMP in test output

Mads Kiilerich mads at kiilerich.com
Wed Oct 6 04:01:48 CDT 2010


# HG changeset patch
# User Mads Kiilerich <mads at kiilerich.com>
# Date 1286355200 -7200
# Node ID 560bdda78abd98c1b921097048c6ce375062daa0
# Parent  64db820c66a29ee3b57e452d77be00ed5be675ef
tests: replace test tmp directory with $TESTTMP in test output

This reduces the number of patterns that must be adjusted when writing tests.

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -443,25 +443,25 @@
 def alarmed(signum, frame):
     raise Timeout
 
-def pytest(test, options):
+def pytest(test, options, replacements):
     py3kswitch = options.py3k_warnings and ' -3' or ''
     cmd = '%s%s "%s"' % (PYTHON, py3kswitch, test)
     vlog("# Running", cmd)
-    return run(cmd, options)
+    return run(cmd, options, replacements)
 
-def shtest(test, options):
+def shtest(test, options, replacements):
     cmd = '"%s"' % test
     vlog("# Running", cmd)
-    return run(cmd, options)
+    return run(cmd, options, replacements)
 
-def battest(test, options):
+def battest(test, options, replacements):
     # To reliably get the error code from batch files on WinXP,
     # the "cmd /c call" prefix is needed. Grrr
     cmd = 'cmd /c call "%s"' % testpath
     vlog("# Running", cmd)
-    return run(cmd, options)
+    return run(cmd, options, replacements)
 
-def tsttest(test, options):
+def tsttest(test, options, replacements):
     t = open(test)
     out = []
     script = []
@@ -498,7 +498,7 @@
 
         cmd = '/bin/sh "%s"' % name
         vlog("# Running", cmd)
-        exitcode, output = run(cmd, options)
+        exitcode, output = run(cmd, options, replacements)
         # do not merge output if skipped, return hghave message instead
         if exitcode == SKIPPED_STATUS:
             return exitcode, output
@@ -563,7 +563,7 @@
 
     return exitcode, postout
 
-def run(cmd, options):
+def run(cmd, options, replacements):
     """Run command in a sub-process, capturing the output (stdout and stderr).
     Return a tuple (exitcode, output).  output is None in debug mode."""
     # TODO: Use subprocess.Popen if we're running on Python 2.4
@@ -606,6 +606,8 @@
             cleanup()
             raise
 
+    for s, r in replacements:
+        output = output.replace(s, r)
     return ret, splitnewlines(output)
 
 def runone(options, test, skips, fails):
@@ -680,14 +682,14 @@
         runner = shtest
 
     # Make a tmp subdirectory to work in
-    tmpd = os.path.join(HGTMP, test)
-    os.mkdir(tmpd)
-    os.chdir(tmpd)
+    testtmp = os.path.join(HGTMP, test)
+    os.mkdir(testtmp)
+    os.chdir(testtmp)
 
     if options.timeout > 0:
         signal.alarm(options.timeout)
 
-    ret, out = runner(testpath, options)
+    ret, out = runner(testpath, options, [(testtmp, '$TESTTMP')])
     vlog("# Ret was:", ret)
 
     if options.timeout > 0:
@@ -753,7 +755,7 @@
 
     os.chdir(TESTDIR)
     if not options.keep_tmpdir:
-        shutil.rmtree(tmpd, True)
+        shutil.rmtree(testtmp, True)
     if skipped:
         return None
     return ret == 0


More information about the Mercurial-devel mailing list