tests/run-tests.py
changeset 21439 2e22954b97e3
parent 21438 f647287b44d1
child 21440 ece127734db1
equal deleted inserted replaced
21438:f647287b44d1 21439:2e22954b97e3
   257     if options.tmpdir:
   257     if options.tmpdir:
   258         options.tmpdir = os.path.expanduser(options.tmpdir)
   258         options.tmpdir = os.path.expanduser(options.tmpdir)
   259 
   259 
   260     if options.jobs < 1:
   260     if options.jobs < 1:
   261         parser.error('--jobs must be positive')
   261         parser.error('--jobs must be positive')
   262     if options.unittest:
       
   263         if options.jobs > 1:
       
   264             sys.stderr.write(
       
   265                 'warning: --jobs has no effect with --unittest')
       
   266         if options.loop:
       
   267             sys.stderr.write(
       
   268                 'warning: --loop has no effect with --unittest')
       
   269     if options.interactive and options.debug:
   262     if options.interactive and options.debug:
   270         parser.error("-i/--interactive and -d/--debug are incompatible")
   263         parser.error("-i/--interactive and -d/--debug are incompatible")
   271     if options.debug:
   264     if options.debug:
   272         if options.timeout != defaults['timeout']:
   265         if options.timeout != defaults['timeout']:
   273             sys.stderr.write(
   266             sys.stderr.write(
  1031             self.stream.writeln('warned %s' % reason)
  1024             self.stream.writeln('warned %s' % reason)
  1032         else:
  1025         else:
  1033             self.stream.write('~')
  1026             self.stream.write('~')
  1034             self.stream.flush()
  1027             self.stream.flush()
  1035 
  1028 
       
  1029 class TestSuite(unittest.TestSuite):
       
  1030     """Custom unitest TestSuite that knows how to execute concurrently."""
       
  1031 
       
  1032     def __init__(self, runner, *args, **kwargs):
       
  1033         super(TestSuite, self).__init__(*args, **kwargs)
       
  1034 
       
  1035         self._runner = runner
       
  1036 
       
  1037     def run(self, result):
       
  1038         self._runner._executetests(self._tests, result=result)
       
  1039 
       
  1040         return result
       
  1041 
  1036 class TextTestRunner(unittest.TextTestRunner):
  1042 class TextTestRunner(unittest.TextTestRunner):
  1037     """Custom unittest test runner that uses appropriate settings."""
  1043     """Custom unittest test runner that uses appropriate settings."""
  1038 
  1044 
  1039     def _makeResult(self):
  1045     def _makeResult(self):
  1040         return TestResult(self.stream, self.descriptions, self.verbosity)
  1046         return TestResult(self.stream, self.descriptions, self.verbosity)
  1243 
  1249 
  1244             tests = [self._gettest(t, i, asunit=self.options.unittest)
  1250             tests = [self._gettest(t, i, asunit=self.options.unittest)
  1245                      for i, t in enumerate(tests)]
  1251                      for i, t in enumerate(tests)]
  1246 
  1252 
  1247             if self.options.unittest:
  1253             if self.options.unittest:
  1248                 suite = unittest.TestSuite(tests=tests)
  1254                 suite = TestSuite(self, tests=tests)
  1249                 verbosity = 1
  1255                 verbosity = 1
  1250                 if self.options.verbose:
  1256                 if self.options.verbose:
  1251                     verbosity = 2
  1257                     verbosity = 2
  1252                 runner = TextTestRunner(verbosity=verbosity)
  1258                 runner = TextTestRunner(verbosity=verbosity)
  1253                 runner.run(suite)
  1259                 runner.run(suite)