Commit f5af466d authored by Thomas Heller's avatar Thomas Heller

Fix one more ctypes test, and disable the tests that were segfaulting.

Thanks to Christian Heimes for finding these tests.
parent c92159aa
...@@ -160,6 +160,8 @@ class FunctionTestCase(unittest.TestCase): ...@@ -160,6 +160,8 @@ class FunctionTestCase(unittest.TestCase):
result = f(1, 2, 3, 4, 5.0, 6.0, 21) result = f(1, 2, 3, 4, 5.0, 6.0, 21)
self.failUnlessEqual(result, 42) self.failUnlessEqual(result, 42)
from ctypes.test import is_resource_enabled
if is_resource_enabled("struni-crash"):
def test_stringresult(self): def test_stringresult(self):
f = dll._testfunc_p_p f = dll._testfunc_p_p
f.argtypes = None f.argtypes = None
......
...@@ -41,17 +41,17 @@ class PythonAPITestCase(unittest.TestCase): ...@@ -41,17 +41,17 @@ class PythonAPITestCase(unittest.TestCase):
# This test is unreliable, because it is possible that code in # This test is unreliable, because it is possible that code in
# unittest changes the refcount of the '42' integer. So, it # unittest changes the refcount of the '42' integer. So, it
# is disabled by default. # is disabled by default.
def test_PyInt_Long(self): def test_PyLong_Long(self):
ref42 = grc(42) ref42 = grc(42)
pythonapi.PyInt_FromLong.restype = py_object pythonapi.PyLong_FromLong.restype = py_object
self.failUnlessEqual(pythonapi.PyInt_FromLong(42), 42) self.failUnlessEqual(pythonapi.PyLong_FromLong(42), 42)
self.failUnlessEqual(grc(42), ref42) self.failUnlessEqual(grc(42), ref42)
pythonapi.PyInt_AsLong.argtypes = (py_object,) pythonapi.PyLong_AsLong.argtypes = (py_object,)
pythonapi.PyInt_AsLong.restype = c_long pythonapi.PyLong_AsLong.restype = c_long
res = pythonapi.PyInt_AsLong(42) res = pythonapi.PyLong_AsLong(42)
self.failUnlessEqual(grc(res), ref42 + 1) self.failUnlessEqual(grc(res), ref42 + 1)
del res del res
self.failUnlessEqual(grc(42), ref42) self.failUnlessEqual(grc(42), ref42)
...@@ -67,6 +67,8 @@ class PythonAPITestCase(unittest.TestCase): ...@@ -67,6 +67,8 @@ class PythonAPITestCase(unittest.TestCase):
del pyobj del pyobj
self.failUnlessEqual(grc(s), ref) self.failUnlessEqual(grc(s), ref)
from ctypes.test import is_resource_enabled
if is_resource_enabled("struni-crash"):
def test_PyOS_snprintf(self): def test_PyOS_snprintf(self):
PyOS_snprintf = pythonapi.PyOS_snprintf PyOS_snprintf = pythonapi.PyOS_snprintf
PyOS_snprintf.argtypes = POINTER(c_char), c_size_t, c_char_p PyOS_snprintf.argtypes = POINTER(c_char), c_size_t, c_char_p
...@@ -75,7 +77,7 @@ class PythonAPITestCase(unittest.TestCase): ...@@ -75,7 +77,7 @@ class PythonAPITestCase(unittest.TestCase):
PyOS_snprintf(buf, sizeof(buf), "Hello from %s", "ctypes") PyOS_snprintf(buf, sizeof(buf), "Hello from %s", "ctypes")
self.failUnlessEqual(buf.value, "Hello from ctypes") self.failUnlessEqual(buf.value, "Hello from ctypes")
PyOS_snprintf(buf, sizeof(buf), "Hello from %s", "ctypes", 1, 2, 3) PyOS_snprintf(buf, sizeof(buf), "Hello from %s (%d, %d, %d)", "ctypes", 1, 2, 3)
self.failUnlessEqual(buf.value, "Hello from ctypes") self.failUnlessEqual(buf.value, "Hello from ctypes")
# not enough arguments # not enough arguments
......
...@@ -34,6 +34,8 @@ class SlicesTestCase(unittest.TestCase): ...@@ -34,6 +34,8 @@ class SlicesTestCase(unittest.TestCase):
# ValueError: Can only assign sequence of same size # ValueError: Can only assign sequence of same size
self.assertRaises(ValueError, setslice, a, 0, 5, range(32)) self.assertRaises(ValueError, setslice, a, 0, 5, range(32))
from ctypes.test import is_resource_enabled
if is_resource_enabled("struni-crash"):
def test_char_ptr(self): def test_char_ptr(self):
s = "abcdefghijklmnopqrstuvwxyz" s = "abcdefghijklmnopqrstuvwxyz"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment