Re: [ctypes-users] Unit test failures on Mac OS X
Brought to you by:
theller
From: Bob I. <bo...@re...> - 2004-04-29 05:39:03
|
On Apr 28, 2004, at 11:32 PM, Myers Carpenter wrote: > I've gotten the same results with OS X 10.2, dlcompat, libffi snapshot > on the files page of the sf.net project, python 2.3.3 from > > http://homepages.cwi.nl/~jack/macpython/macpython-osx.html > > And also 10.3 with libffi snapshot on the files page of the sf.net > project (dlcompat included with 10.3, using stock 10.3 python). > > I will be doing some more investigation, (the first error looks like a > bug in the test code), but I thought I'd let everyone know. > > myers > > > $ python setup.py test > running test > running build > running build_py > running build_ext > ...F..........FF...................................................E... > ............ > ====================================================================== > ERROR: test_functions (test_stringptr.StringPtrTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "unittests/test_stringptr.py", line 44, in test_functions > clib = CDLL("/lib/libc.so.6") > File > "build/lib.darwin-7.3.0-Power_Macintosh-2.3/ctypes/__init__.py", line > 222, in __init__ > self._handle = LoadLibrary(self._name) > OSError: dlcompat: Can not open "/lib/libc.so.6" The equivalent on OS X is "/usr/lib/libc.dylib". The test is more or less hardcoded for a particular version of Linux. The test works if it's fixed (not in patch). > ====================================================================== > FAIL: test_integrate (test_callbacks.CallbacksTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "unittests/test_callbacks.py", line 24, in test_integrate > self.failUnless(diff < 0.01) > File > "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/ > python2.3/unittest.py", line 268, in failUnless > if not expr: raise self.failureException, msg > AssertionError This is a legitimate problem, the func(x) is always receiving some infinitesimal number across the bridge and and returning 0.00 as far as C is concerned. It seems that ctypes is just broken, it's passing ffi_type_sint as all the parameters for callbacks. I decided to fix this, see attached patch. Not the best solution, but the least amount of code. > ====================================================================== > FAIL: test_intresult (test_functions.FunctionTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "unittests/test_functions.py", line 106, in test_intresult > self.failUnless(result == 21) > File > "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/ > python2.3/unittest.py", line 268, in failUnless > if not expr: raise self.failureException, msg > AssertionError > > ====================================================================== > FAIL: test_longlong_callbacks (test_functions.FunctionTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "unittests/test_functions.py", line 300, in > test_longlong_callbacks > self.failUnless(13577625587 == f(1000000000000, cb)) > File > "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/ > python2.3/unittest.py", line 268, in failUnless > if not expr: raise self.failureException, msg > AssertionError These two are almost certainly the same class of error as the callbacks were.. the ctypes ffi stuff isn't in a finished state. I'll take a look later this week. |