tests/run-tests.py
changeset 21493 b8f4854ea61a
parent 21492 a9c4f4912402
child 21494 dcefc4091c86
equal deleted inserted replaced
21492:a9c4f4912402 21493:b8f4854ea61a
   353         self._errpath = errpath
   353         self._errpath = errpath
   354 
   354 
   355         self._finished = None
   355         self._finished = None
   356         self._ret = None
   356         self._ret = None
   357         self._out = None
   357         self._out = None
   358         self._duration = None
       
   359         self._skipped = None
   358         self._skipped = None
   360         self._testtmp = None
   359         self._testtmp = None
   361 
   360 
   362         # If we're not in --debug mode and reference output file exists,
   361         # If we're not in --debug mode and reference output file exists,
   363         # check test output against it.
   362         # check test output against it.
   391     def setUp(self):
   390     def setUp(self):
   392         """Tasks to perform before run()."""
   391         """Tasks to perform before run()."""
   393         self._finished = False
   392         self._finished = False
   394         self._ret = None
   393         self._ret = None
   395         self._out = None
   394         self._out = None
   396         self._duration = None
       
   397         self._skipped = None
   395         self._skipped = None
   398 
   396 
   399         self._testtmp = os.path.join(self._threadtmp,
   397         self._testtmp = os.path.join(self._threadtmp,
   400                                      os.path.basename(self._path))
   398                                      os.path.basename(self._path))
   401         os.mkdir(self._testtmp)
   399         os.mkdir(self._testtmp)
   404         if os.path.exists(self._errpath):
   402         if os.path.exists(self._errpath):
   405             os.remove(self._errpath)
   403             os.remove(self._errpath)
   406 
   404 
   407     def run(self, result):
   405     def run(self, result):
   408         result.startTest(self)
   406         result.startTest(self)
       
   407         starttime = time.time()
   409         try:
   408         try:
   410             try:
   409             try:
   411                 self.setUp()
   410                 self.setUp()
   412             except (KeyboardInterrupt, SystemExit):
   411             except (KeyboardInterrupt, SystemExit):
   413                 raise
   412                 raise
   417 
   416 
   418             success = False
   417             success = False
   419             try:
   418             try:
   420                 self.runTest()
   419                 self.runTest()
   421             except KeyboardInterrupt:
   420             except KeyboardInterrupt:
       
   421                 duration = time.time() - starttime
       
   422                 log('INTERRUPTED: %s (after %d seconds)' % (self.name,
       
   423                                                             duration))
       
   424                 self._runner.times.append((self.name, duration))
   422                 raise
   425                 raise
   423             except SkipTest, e:
   426             except SkipTest, e:
   424                 result.addSkip(self, str(e))
   427                 result.addSkip(self, str(e))
   425             except IgnoreTest, e:
   428             except IgnoreTest, e:
   426                 result.addIgnore(self, str(e))
   429                 result.addIgnore(self, str(e))
   435             except Exception:
   438             except Exception:
   436                 result.addError(self, sys.exc_info())
   439                 result.addError(self, sys.exc_info())
   437             else:
   440             else:
   438                 success = True
   441                 success = True
   439 
   442 
       
   443             self._runner.times.append((self.name, time.time() - starttime))
       
   444 
   440             try:
   445             try:
   441                 self.tearDown()
   446                 self.tearDown()
   442             except (KeyboardInterrupt, SystemExit):
   447             except (KeyboardInterrupt, SystemExit):
   443                 raise
   448                 raise
   444             except Exception:
   449             except Exception:
   484         self._daemonpids.append(env['DAEMON_PIDS'])
   489         self._daemonpids.append(env['DAEMON_PIDS'])
   485         self._createhgrc(env['HGRCPATH'])
   490         self._createhgrc(env['HGRCPATH'])
   486 
   491 
   487         vlog('# Test', self.name)
   492         vlog('# Test', self.name)
   488 
   493 
   489         starttime = time.time()
       
   490         try:
   494         try:
   491             ret, out = self._run(replacements, env)
   495             ret, out = self._run(replacements, env)
   492             self._duration = time.time() - starttime
       
   493             self._finished = True
   496             self._finished = True
   494             self._ret = ret
   497             self._ret = ret
   495             self._out = out
   498             self._out = out
   496         except KeyboardInterrupt:
   499         except KeyboardInterrupt:
   497             self._duration = time.time() - starttime
       
   498             log('INTERRUPTED: %s (after %d seconds)' % (self.name,
       
   499                                                         self._duration))
       
   500             raise
   500             raise
   501         except Exception, e:
   501         except Exception, e:
   502             return self.fail('Exception during execution: %s' % e, 255)
   502             return self.fail('Exception during execution: %s' % e, 255)
   503 
   503 
   504         def describe(ret):
   504         def describe(ret):
   570             for line in self._out:
   570             for line in self._out:
   571                 f.write(line)
   571                 f.write(line)
   572             f.close()
   572             f.close()
   573 
   573 
   574         vlog("# Ret was:", self._ret)
   574         vlog("# Ret was:", self._ret)
   575 
       
   576         self._runner.times.append((self.name, self._duration))
       
   577 
   575 
   578     def _run(self, replacements, env):
   576     def _run(self, replacements, env):
   579         # This should be implemented in child classes to run tests.
   577         # This should be implemented in child classes to run tests.
   580         raise SkipTest('unknown test type')
   578         raise SkipTest('unknown test type')
   581 
   579