test_PyThreadState_SetAsyncExc(): This is failing on some
64-bit boxes. I have no idea what the ctypes docs mean by "integers", and blind-guessing here that it intended to mean the signed C "int" type, in which case perhaps I can repair this by feeding the thread id argument to type ctypes.c_long(). Also made the worker thread daemonic, so it doesn't hang Python shutdown if the test continues to fail.
This commit is contained in:
parent
b7ad1eb2c6
commit
08574770c5
|
@ -169,14 +169,15 @@ class ThreadTests(unittest.TestCase):
|
|||
worker_saw_exception.set()
|
||||
|
||||
t = Worker()
|
||||
t.setDaemon(True) # so if this fails, we don't hang Python at shutdown
|
||||
t.start()
|
||||
if verbose:
|
||||
print " started worker thread"
|
||||
t.start()
|
||||
|
||||
# Try a thread id that doesn't make sense.
|
||||
if verbose:
|
||||
print " trying nonsensical thread id"
|
||||
result = set_async_exc(-1, exception)
|
||||
result = set_async_exc(ctypes.c_long(-1), exception)
|
||||
self.assertEqual(result, 0) # no thread states modified
|
||||
|
||||
# Now raise an exception in the worker thread.
|
||||
|
@ -188,7 +189,7 @@ class ThreadTests(unittest.TestCase):
|
|||
self.assert_(not t.finished)
|
||||
if verbose:
|
||||
print " attempting to raise asynch exception in worker"
|
||||
result = set_async_exc(t.id, exception)
|
||||
result = set_async_exc(ctypes.c_long(t.id), exception)
|
||||
self.assertEqual(result, 1) # one thread state modified
|
||||
if verbose:
|
||||
print " waiting for worker to say it caught the exception"
|
||||
|
|
Loading…
Reference in New Issue