Patchwork [063,of,179,tests-refactor] run-tests: move times global into TestRunner

login
register
mail settings
Submitter Gregory Szorc
Date May 2, 2014, 6:38 p.m.
Message ID <c1607865d400300adb74.1399055900@vm-ubuntu-main.gateway.sonic.net>
Download mbox | patch
Permalink /patch/4557/
State Accepted
Commit fcc2e02e91a26d7d865b311bdb8642610f461003
Headers show

Comments

Gregory Szorc - May 2, 2014, 6:38 p.m.
# HG changeset patch
# User Gregory Szorc <gregory.szorc@gmail.com>
# Date 1397977146 25200
#      Sat Apr 19 23:59:06 2014 -0700
# Branch stable
# Node ID c1607865d400300adb74bfc4723b735c87b56671
# Parent  af393a79440d034e45e54921cbff4be164d7aa33
run-tests: move times global into TestRunner

Patch

diff --git a/tests/run-tests.py b/tests/run-tests.py
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -390,16 +390,17 @@  class Test(object):
     Test instances can be run multiple times via run(). However, multiple
     runs cannot be run concurrently.
     """
 
     def __init__(self, runner, test, count, refpath):
         path = os.path.join(runner.testdir, test)
         errpath = os.path.join(runner.testdir, '%s.err' % test)
 
+        self._runner = runner
         self._testdir = runner.testdir
         self._test = test
         self._path = path
         self._options = runner.options
         self._count = count
         self._daemonpids = []
         self._refpath = refpath
         self._errpath = errpath
@@ -539,17 +540,17 @@  class Test(object):
         vlog("# Ret was:", ret)
 
         if not options.verbose:
             iolock.acquire()
             sys.stdout.write(res[0])
             sys.stdout.flush()
             iolock.release()
 
-        times.append((self._test, duration))
+        self._runner.times.append((self._test, duration))
 
         return res
 
     def _run(self, testtmp, replacements, env):
         # This should be implemented in child classes to run tests.
         return self._skip('unknown test type')
 
     def _getreplacements(self, testtmp):
@@ -984,17 +985,16 @@  def _gethgpath():
     pipe = os.popen(cmd % PYTHON)
     try:
         _hgpath = pipe.read().strip()
     finally:
         pipe.close()
     return _hgpath
 
 results = {'.':[], '!':[], '~': [], 's':[], 'i':[]}
-times = []
 iolock = threading.Lock()
 abort = False
 
 def scheduletests(runner, tests):
     jobs = runner.options.jobs
     done = queue.Queue()
     running = 0
     count = 0
@@ -1101,16 +1101,17 @@  class TestRunner(object):
         self.options = None
         self.testdir = None
         self.hgtmp = None
         self.inst = None
         self.bindir = None
         self.tmpbinddir = None
         self.pythondir = None
         self.coveragefile = None
+        self.times = [] # Holds execution times of tests.
         self._createdfiles = []
 
     def gettest(self, test, count):
         """Obtain a Test by looking at its filename.
 
         Returns a Test instance. The Test may not be runnable if it doesn't
         map to a known type.
         """
@@ -1267,20 +1268,20 @@  class TestRunner(object):
         actualhg = _gethgpath()
         if os.path.abspath(actualhg) != os.path.abspath(expecthg):
             sys.stderr.write('warning: %s with unexpected mercurial lib: %s\n'
                              '         (expected %s)\n'
                              % (verb, actualhg, expecthg))
 
     def outputtimes(self):
         vlog('# Producing time report')
-        times.sort(key=lambda t: (t[1], t[0]), reverse=True)
+        self.times.sort(key=lambda t: (t[1], t[0]), reverse=True)
         cols = '%7.3f   %s'
         print '\n%-7s   %s' % ('Time', 'Test')
-        for test, timetaken in times:
+        for test, timetaken in self.times:
             print cols % (timetaken, test)
 
     def outputcoverage(self):
         vlog('# Producing coverage report')
         os.chdir(self.pythondir)
 
         def covrun(*args):
             cmd = 'coverage %s' % ' '.join(args)