Show More
@@ -1442,6 +1442,8 class TestSuite(unittest.TestSuite): | |||
|
1442 | 1442 | executes on its own thread. Tests actually spawn new processes, so |
|
1443 | 1443 | state mutation should not be an issue. |
|
1444 | 1444 | |
|
1445 | If there is only one job, it will use the main thread. | |
|
1446 | ||
|
1445 | 1447 | whitelist and blacklist denote tests that have been whitelisted and |
|
1446 | 1448 | blacklisted, respectively. These arguments don't belong in TestSuite. |
|
1447 | 1449 | Instead, whitelist and blacklist should be handled by the thing that |
@@ -1558,45 +1560,44 class TestSuite(unittest.TestSuite): | |||
|
1558 | 1560 | statthread.start() |
|
1559 | 1561 | |
|
1560 | 1562 | try: |
|
1561 |
|
|
|
1562 | test = tests.pop(0) | |
|
1563 |
|
|
|
1564 | else: | |
|
1565 |
|
|
|
1566 | if not done.empty() or running == self._jobs or not tests: | |
|
1567 |
|
|
|
1568 |
|
|
|
1569 | running -= 1 | |
|
1570 | if result and result.shouldStop: | |
|
1571 | stoppedearly = True | |
|
1572 |
|
|
|
1573 |
|
|
|
1574 | continue | |
|
1575 | if tests and not running == self._jobs: | |
|
1576 |
|
|
|
1577 |
|
|
|
1578 | if getattr(test, 'should_reload', False): | |
|
1579 |
|
|
|
1580 | tests.append( | |
|
1581 |
|
|
|
1582 |
|
|
|
1583 | tests.append(test) | |
|
1563 | while tests or running: | |
|
1564 | if not done.empty() or running == self._jobs or not tests: | |
|
1565 | try: | |
|
1566 | done.get(True, 1) | |
|
1567 | running -= 1 | |
|
1568 | if result and result.shouldStop: | |
|
1569 | stoppedearly = True | |
|
1570 | break | |
|
1571 | except queue.Empty: | |
|
1572 | continue | |
|
1573 | if tests and not running == self._jobs: | |
|
1574 | test = tests.pop(0) | |
|
1575 | if self._loop: | |
|
1576 | if getattr(test, 'should_reload', False): | |
|
1577 | num_tests[0] += 1 | |
|
1578 | tests.append( | |
|
1579 | self._loadtest(test.name, num_tests[0])) | |
|
1580 | else: | |
|
1581 | tests.append(test) | |
|
1582 | if self._jobs == 1: | |
|
1583 | job(test, result) | |
|
1584 | else: | |
|
1584 | 1585 | t = threading.Thread(target=job, name=test.name, |
|
1585 | 1586 | args=(test, result)) |
|
1586 | 1587 | t.start() |
|
1587 |
|
|
|
1588 | running += 1 | |
|
1588 | 1589 | |
|
1589 |
|
|
|
1590 |
|
|
|
1591 |
|
|
|
1592 |
|
|
|
1593 |
|
|
|
1594 |
|
|
|
1595 |
|
|
|
1596 |
|
|
|
1597 |
|
|
|
1598 |
|
|
|
1599 |
|
|
|
1590 | # If we stop early we still need to wait on started tests to | |
|
1591 | # finish. Otherwise, there is a race between the test completing | |
|
1592 | # and the test's cleanup code running. This could result in the | |
|
1593 | # test reporting incorrect. | |
|
1594 | if stoppedearly: | |
|
1595 | while running: | |
|
1596 | try: | |
|
1597 | done.get(True, 1) | |
|
1598 | running -= 1 | |
|
1599 | except queue.Empty: | |
|
1600 | continue | |
|
1600 | 1601 | except KeyboardInterrupt: |
|
1601 | 1602 | for test in runtests: |
|
1602 | 1603 | test.abort() |
General Comments 0
You need to be logged in to leave comments.
Login now