From a3015a6a827ad852bf1875e6e40d64063d895cd4 Mon Sep 17 00:00:00 2001
From: Brian Quinlan <brian@sweetapp.com>
Date: Fri, 24 Dec 2010 23:10:41 +0000
Subject: [PATCH] Better reporting of test failures on Windows.

---
 Lib/test/test_concurrent_futures.py | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index e4e38ec93f..7baf0a275a 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -75,15 +75,27 @@ class Call(object):
 
     def _wait_on_event(self, handle):
         if sys.platform.startswith('win'):
+            # WaitForSingleObject returns 0 if handle is signaled.
             r = ctypes.windll.kernel32.WaitForSingleObject(handle, 60 * 1000)
-            assert r == 0
+            if r != 0:
+                message = (
+                    'WaitForSingleObject({}, ...) failed with {}, '
+                    'GetLastError() = {}'.format(
+                            handle, r, ctypes.GetLastError()))
+                logging.critical(message)
+                assert False, message
         else:
             self.CALL_LOCKS[handle].wait()
 
     def _signal_event(self, handle):
         if sys.platform.startswith('win'):
-            r = ctypes.windll.kernel32.SetEvent(handle)
-            assert r != 0
+            r = ctypes.windll.kernel32.SetEvent(handle)  # Returns 0 on failure.
+            if r == 0:
+                message = (
+                    'SetEvent({}) failed with {}, GetLastError() = {}'.format(
+                            handle, r, ctypes.GetLastError()))
+                logging.critical(message)
+                assert False, message
         else:
             self.CALL_LOCKS[handle].set()
 
-- 
2.40.0