Show More
@@ -1558,41 +1558,45 b' class TestSuite(unittest.TestSuite):' | |||
|
1558 | 1558 | statthread.start() |
|
1559 | 1559 | |
|
1560 | 1560 | try: |
|
1561 |
|
|
|
1562 | if not done.empty() or running == self._jobs or not tests: | |
|
1563 |
|
|
|
1564 | done.get(True, 1) | |
|
1565 |
|
|
|
1566 | if result and result.shouldStop: | |
|
1567 |
|
|
|
1568 |
|
|
|
1569 | except queue.Empty: | |
|
1570 | continue | |
|
1571 | if tests and not running == self._jobs: | |
|
1572 | test = tests.pop(0) | |
|
1573 |
|
|
|
1574 | if getattr(test, 'should_reload', False): | |
|
1575 | num_tests[0] += 1 | |
|
1576 |
|
|
|
1577 |
|
|
|
1578 | else: | |
|
1579 |
|
|
|
1580 | t = threading.Thread(target=job, name=test.name, | |
|
1581 |
|
|
|
1582 |
|
|
|
1583 | running += 1 | |
|
1561 | if len(tests) == 1: | |
|
1562 | test = tests.pop(0) | |
|
1563 | test.run(result) | |
|
1564 | else: | |
|
1565 | while tests or running: | |
|
1566 | if not done.empty() or running == self._jobs or not tests: | |
|
1567 | try: | |
|
1568 | done.get(True, 1) | |
|
1569 | running -= 1 | |
|
1570 | if result and result.shouldStop: | |
|
1571 | stoppedearly = True | |
|
1572 | break | |
|
1573 | except queue.Empty: | |
|
1574 | continue | |
|
1575 | if tests and not running == self._jobs: | |
|
1576 | test = tests.pop(0) | |
|
1577 | if self._loop: | |
|
1578 | if getattr(test, 'should_reload', False): | |
|
1579 | num_tests[0] += 1 | |
|
1580 | tests.append( | |
|
1581 | self._loadtest(test.name, num_tests[0])) | |
|
1582 | else: | |
|
1583 | tests.append(test) | |
|
1584 | t = threading.Thread(target=job, name=test.name, | |
|
1585 | args=(test, result)) | |
|
1586 | t.start() | |
|
1587 | running += 1 | |
|
1584 | 1588 | |
|
1585 | # If we stop early we still need to wait on started tests to | |
|
1586 | # finish. Otherwise, there is a race between the test completing | |
|
1587 | # and the test's cleanup code running. This could result in the | |
|
1588 | # test reporting incorrect. | |
|
1589 | if stoppedearly: | |
|
1590 | while running: | |
|
1591 | try: | |
|
1592 | done.get(True, 1) | |
|
1593 | running -= 1 | |
|
1594 | except queue.Empty: | |
|
1595 | continue | |
|
1589 | # If we stop early we still need to wait on started tests to | |
|
1590 | # finish. Otherwise, there is a race between the test completing | |
|
1591 | # and the test's cleanup code running. This could result in the | |
|
1592 | # test reporting incorrect. | |
|
1593 | if stoppedearly: | |
|
1594 | while running: | |
|
1595 | try: | |
|
1596 | done.get(True, 1) | |
|
1597 | running -= 1 | |
|
1598 | except queue.Empty: | |
|
1599 | continue | |
|
1596 | 1600 | except KeyboardInterrupt: |
|
1597 | 1601 | for test in runtests: |
|
1598 | 1602 | test.abort() |
General Comments 0
You need to be logged in to leave comments.
Login now