tests/run-tests.py
changeset 21437 d9532be2fc4d
parent 21436 4528e95345d7
child 21438 f647287b44d1
equal deleted inserted replaced
21436:4528e95345d7 21437:d9532be2fc4d
  1238                     tests.pop(0)
  1238                     tests.pop(0)
  1239                 if not tests:
  1239                 if not tests:
  1240                     print "running all tests"
  1240                     print "running all tests"
  1241                     tests = orig
  1241                     tests = orig
  1242 
  1242 
       
  1243             tests = [self._gettest(t, i, asunit=self.options.unittest)
       
  1244                      for i, t in enumerate(tests)]
       
  1245 
  1243             if self.options.unittest:
  1246             if self.options.unittest:
  1244                 suite = unittest.TestSuite()
  1247                 suite = unittest.TestSuite(tests=tests)
  1245                 for count, testpath in enumerate(tests):
       
  1246                     suite.addTest(self._gettest(testpath, count, asunit=True))
       
  1247 
       
  1248                 verbosity = 1
  1248                 verbosity = 1
  1249                 if self.options.verbose:
  1249                 if self.options.verbose:
  1250                     verbosity = 2
  1250                     verbosity = 2
  1251                 runner = TextTestRunner(verbosity=verbosity)
  1251                 runner = TextTestRunner(verbosity=verbosity)
  1252                 runner.run(suite)
  1252                 runner.run(suite)
  1536 
  1536 
  1537     def _executetests(self, tests):
  1537     def _executetests(self, tests):
  1538         jobs = self.options.jobs
  1538         jobs = self.options.jobs
  1539         done = queue.Queue()
  1539         done = queue.Queue()
  1540         running = 0
  1540         running = 0
  1541         count = 0
  1541 
  1542 
  1542         def job(test):
  1543         def job(test, count):
       
  1544             try:
  1543             try:
  1545                 t = self._gettest(test, count)
  1544                 done.put(test.run())
  1546                 done.put(t.run())
  1545                 test.cleanup()
  1547                 t.cleanup()
       
  1548             except KeyboardInterrupt:
  1546             except KeyboardInterrupt:
  1549                 pass
  1547                 pass
  1550             except: # re-raises
  1548             except: # re-raises
  1551                 done.put(('!', test, 'run-test raised an error, see traceback'))
  1549                 done.put(('!', test, 'run-test raised an error, see traceback'))
  1552                 raise
  1550                 raise
  1564                     running -= 1
  1562                     running -= 1
  1565                 if tests and not running == jobs:
  1563                 if tests and not running == jobs:
  1566                     test = tests.pop(0)
  1564                     test = tests.pop(0)
  1567                     if self.options.loop:
  1565                     if self.options.loop:
  1568                         tests.append(test)
  1566                         tests.append(test)
  1569                     t = threading.Thread(target=job, name=test,
  1567                     t = threading.Thread(target=job, name=test.name,
  1570                                          args=(test, count))
  1568                                          args=[test])
  1571                     t.start()
  1569                     t.start()
  1572                     running += 1
  1570                     running += 1
  1573                     count += 1
       
  1574         except KeyboardInterrupt:
  1571         except KeyboardInterrupt:
  1575             self.abort[0] = True
  1572             self.abort[0] = True
  1576 
  1573 
  1577     def _findprogram(self, program):
  1574     def _findprogram(self, program):
  1578         """Search PATH for a executable program"""
  1575         """Search PATH for a executable program"""