tests/run-tests.py
changeset 21385 28414e5ac9ec
parent 21384 a36cc85a5b7b
child 21386 3b0c522f04aa
equal deleted inserted replaced
21384:a36cc85a5b7b 21385:28414e5ac9ec
   967 
   967 
   968     for s, r in replacements:
   968     for s, r in replacements:
   969         output = re.sub(s, r, output)
   969         output = re.sub(s, r, output)
   970     return ret, output.splitlines(True)
   970     return ret, output.splitlines(True)
   971 
   971 
   972 _hgpath = None
       
   973 
       
   974 def _gethgpath():
       
   975     """Return the path to the mercurial package that is actually found by
       
   976     the current Python interpreter."""
       
   977     global _hgpath
       
   978     if _hgpath is not None:
       
   979         return _hgpath
       
   980 
       
   981     cmd = '%s -c "import mercurial; print (mercurial.__path__[0])"'
       
   982     pipe = os.popen(cmd % PYTHON)
       
   983     try:
       
   984         _hgpath = pipe.read().strip()
       
   985     finally:
       
   986         pipe.close()
       
   987     return _hgpath
       
   988 
       
   989 iolock = threading.Lock()
   972 iolock = threading.Lock()
   990 
   973 
   991 class TestRunner(object):
   974 class TestRunner(object):
   992     """Holds context for executing tests.
   975     """Holds context for executing tests.
   993 
   976 
  1026             's': [],
  1009             's': [],
  1027             'i': [],
  1010             'i': [],
  1028         }
  1011         }
  1029         self.abort = [False]
  1012         self.abort = [False]
  1030         self._createdfiles = []
  1013         self._createdfiles = []
       
  1014         self._hgpath = None
  1031 
  1015 
  1032     def run(self, args, parser=None):
  1016     def run(self, args, parser=None):
  1033         """Run the test suite."""
  1017         """Run the test suite."""
  1034         oldmask = os.umask(022)
  1018         oldmask = os.umask(022)
  1035         try:
  1019         try:
  1377 
  1361 
  1378     def _checkhglib(self, verb):
  1362     def _checkhglib(self, verb):
  1379         """Ensure that the 'mercurial' package imported by python is
  1363         """Ensure that the 'mercurial' package imported by python is
  1380         the one we expect it to be.  If not, print a warning to stderr."""
  1364         the one we expect it to be.  If not, print a warning to stderr."""
  1381         expecthg = os.path.join(self.pythondir, 'mercurial')
  1365         expecthg = os.path.join(self.pythondir, 'mercurial')
  1382         actualhg = _gethgpath()
  1366         actualhg = self._gethgpath()
  1383         if os.path.abspath(actualhg) != os.path.abspath(expecthg):
  1367         if os.path.abspath(actualhg) != os.path.abspath(expecthg):
  1384             sys.stderr.write('warning: %s with unexpected mercurial lib: %s\n'
  1368             sys.stderr.write('warning: %s with unexpected mercurial lib: %s\n'
  1385                              '         (expected %s)\n'
  1369                              '         (expected %s)\n'
  1386                              % (verb, actualhg, expecthg))
  1370                              % (verb, actualhg, expecthg))
       
  1371     def _gethgpath(self):
       
  1372         """Return the path to the mercurial package that is actually found by
       
  1373         the current Python interpreter."""
       
  1374         if self._hgpath is not None:
       
  1375             return self._hgpath
       
  1376 
       
  1377         cmd = '%s -c "import mercurial; print (mercurial.__path__[0])"'
       
  1378         pipe = os.popen(cmd % PYTHON)
       
  1379         try:
       
  1380             self._hgpath = pipe.read().strip()
       
  1381         finally:
       
  1382             pipe.close()
       
  1383 
       
  1384         return self._hgpath
  1387 
  1385 
  1388     def _outputtimes(self):
  1386     def _outputtimes(self):
  1389         vlog('# Producing time report')
  1387         vlog('# Producing time report')
  1390         self.times.sort(key=lambda t: (t[1], t[0]), reverse=True)
  1388         self.times.sort(key=lambda t: (t[1], t[0]), reverse=True)
  1391         cols = '%7.3f   %s'
  1389         cols = '%7.3f   %s'