return True
lit.util.win32api.SetConsoleCtrlHandler(console_ctrl_handler, True)
- try:
- async_results = [
- pool.apply_async(lit.worker.execute, args=[test],
- callback=lambda r, t=test: self._process_result(t, r))
- for test in self.tests]
- pool.close()
-
- # Wait for all results to come in. The callback that runs in the
- # parent process will update the display.
- for a in async_results:
- timeout = deadline - time.time()
- a.wait(timeout)
- if not a.successful():
- # TODO(yln): this also raises on a --max-time time
- a.get() # Exceptions raised here come from the worker.
- if self.hit_max_failures:
- break
- except:
- # Stop the workers and wait for any straggling results to come in
- # if we exited without waiting on every async result.
- pool.terminate()
- raise
- finally:
- pool.join()
+ async_results = [
+ pool.apply_async(lit.worker.execute, args=[test],
+ callback=lambda r, t=test: self._process_result(t, r))
+ for test in self.tests]
+ pool.close()
+
+ for ar in async_results:
+ timeout = deadline - time.time()
+ try:
+ ar.get(timeout)
+ except multiprocessing.TimeoutError:
+ # TODO(yln): print timeout error
+ pool.terminate()
+ break
+ if self.hit_max_failures:
+ pool.terminate()
+ break