##// END OF EJS Templates
run-tests: skip threading for a single test (issue5040)...
timeless -
r27880:b04df9ce default
parent child Browse files
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 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)
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 running += 1
1588 running += 1
1588 1589
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
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