Better reporting of test failures on Windows.

This commit is contained in:
Brian Quinlan 2010-12-24 23:10:41 +00:00
parent dfd7eb0ba2
commit a3015a6a82
1 changed files with 15 additions and 3 deletions

View File

@ -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()