summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2017-11-01 11:02:43 +0100
committerStefan Behnel <stefan_ml@behnel.de>2017-11-01 11:02:43 +0100
commite28778aea2629007236455aec17f1100fae1e8d8 (patch)
tree8e617ec673b73d8d3b4c8a6abcad9dc3e1f11ebf
parent8fdb0fbe00f730587914b3389a36dcefea7bab67 (diff)
downloadcython-e28778aea2629007236455aec17f1100fae1e8d8.tar.gz
Repair and extend TSS API test.
-rw-r--r--tests/run/tss.pyx41
1 files changed, 30 insertions, 11 deletions
diff --git a/tests/run/tss.pyx b/tests/run/tss.pyx
index c21b869a6..1729abdac 100644
--- a/tests/run/tss.pyx
+++ b/tests/run/tss.pyx
@@ -2,6 +2,7 @@
from cpython.pythread cimport *
+
def tss_create_delete():
"""
>>> tss_create_delete()
@@ -9,29 +10,48 @@ def tss_create_delete():
"""
cdef Py_tss_t tss_key = Py_tss_NEEDS_INIT
cdef bint after_create, after_delete
- if PyThread_tss_create(&tss_key) > 0:
- # handle key creation failure
- pass
+ if PyThread_tss_create(&tss_key) != 0:
+ raise MemoryError()
after_create = PyThread_tss_is_created(&tss_key) != 0
PyThread_tss_delete(&tss_key)
after_delete = PyThread_tss_is_created(&tss_key) != 0
return (after_create, after_delete)
+
def tss_alloc_free():
"""
>>> tss_alloc_free()
- (True, False)
+ False
+ """
+ cdef Py_tss_t *ptr_key
+ cdef bint after_alloc, after_free
+ ptr_key = PyThread_tss_alloc()
+ if ptr_key == NULL:
+ raise MemoryError()
+ after_alloc = PyThread_tss_is_created(ptr_key) != 0
+ PyThread_tss_free(ptr_key)
+ return after_alloc
+
+
+def tss_alloc_create_delete_free():
+ """
+ >>> tss_alloc_create_delete_free()
+ (False, True, False)
"""
cdef Py_tss_t *ptr_key
cdef bint after_alloc, after_free
ptr_key = PyThread_tss_alloc()
if ptr_key == NULL:
- # handle key allocation failure
- pass
+ raise MemoryError()
after_alloc = PyThread_tss_is_created(ptr_key) != 0
+ if PyThread_tss_create(ptr_key) != 0:
+ raise MemoryError()
+ after_create = PyThread_tss_is_created(ptr_key) != 0
+ PyThread_tss_delete(ptr_key)
+ after_delete = PyThread_tss_is_created(ptr_key) != 0
PyThread_tss_free(ptr_key)
- after_free = PyThread_tss_is_created(ptr_key) != 0
- return (after_alloc, after_free)
+ return (after_alloc, after_create, after_delete)
+
def tss_set_get():
"""
@@ -41,9 +61,8 @@ def tss_set_get():
cdef Py_tss_t tss_key = Py_tss_NEEDS_INIT
cdef int the_value = 1
cdef int ret_value
- if PyThread_tss_create(&tss_key) > 0:
- # handle key creation failure
- pass
+ if PyThread_tss_create(&tss_key) != 0:
+ raise MemoryError()
if PyThread_tss_get(&tss_key) == NULL:
PyThread_tss_set(&tss_key, <void *>&the_value)
ret_value = (<int *>PyThread_tss_get(&tss_key))[0]