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