tests/run-tests.py
changeset 21340 fda36de1cb0e
parent 21339 de25e968b4d8
child 21341 cb88d4a04f58
--- a/tests/run-tests.py	Sat Apr 19 22:02:55 2014 -0700
+++ b/tests/run-tests.py	Sat Apr 19 23:07:17 2014 -0700
@@ -1182,7 +1182,7 @@
 iolock = threading.Lock()
 abort = False
 
-def scheduletests(options, tests):
+def scheduletests(runner, options, tests):
     jobs = options.jobs
     done = queue.Queue()
     running = 0
@@ -1222,7 +1222,7 @@
     except KeyboardInterrupt:
         abort = True
 
-def runtests(options, tests):
+def runtests(runner, options, tests):
     try:
         if INST:
             installhg(options)
@@ -1240,7 +1240,7 @@
                 print "running all tests"
                 tests = orig
 
-        scheduletests(options, tests)
+        scheduletests(runner, options, tests)
 
         failed = len(results['!'])
         warned = len(results['~'])
@@ -1278,7 +1278,15 @@
 testtypes = [('.py', PythonTest, '.out'),
              ('.t', TTest, '')]
 
+class TestRunner(object):
+    """Holds context for executing tests.
+
+    Tests rely on a lot of state. This object holds it for them.
+    """
+
 def main(args, parser=None):
+    runner = TestRunner()
+
     parser = parser or getparser()
     (options, args) = parseargs(args, parser)
     os.umask(022)
@@ -1397,7 +1405,7 @@
     vlog("# Using", IMPL_PATH, os.environ[IMPL_PATH])
 
     try:
-        return runtests(options, tests) or 0
+        return runtests(runner, options, tests) or 0
     finally:
         time.sleep(.1)
         cleanup(options)