[PyObjC-svn] r2349 - in trunk/pyobjc/pyobjc-core: . Lib/PyObjCTools Modules/objc Modules/objc/test PyObjCTest
[email protected] Tue, 24 Nov 2009 07:28:54 -0600
| Newsgroups | gmane.comp.python.pyobjc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ronaldoussoren
Date: Tue Nov 24 07:28:53 2009
New Revision: 2349
Log:
* Bump version number to 2.2
* Ensure the binary distribution can be build with Python 2.6.4
Modified:
trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py
trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h
trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m
trunk/pyobjc/pyobjc-core/NEWS.txt
trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py
trunk/pyobjc/pyobjc-core/setup.py
Modified: trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py (original)
+++ trunk/pyobjc/pyobjc-core/Lib/PyObjCTools/TestSupport.py Tue Nov 24 07:28:53 2009
@@ -94,6 +94,26 @@
return False
return True
+def onlyIf(expr, message=None):
+ """
+ Usage::
+
+ class Tests (unittest.TestCase):
+
+ @onlyIf(1 == 2)
+ def testUnlikely(self):
+ pass
+
+ The test only runs when the argument expression is true
+ """
+ def callback(function):
+ if not expr:
+ if _sys.version_info[:2] >= (2, 7):
+ return _unittest.skip(message)(function)
+ return lambda self: None
+ else:
+ return function
+ return callback
def onlyOn32Bit(function):
"""
Modified: trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h (original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/pyobjc.h Tue Nov 24 07:28:53 2009
@@ -5,7 +5,7 @@
* Central include file for PyObjC.
*/
-#define OBJC_VERSION "2.2b4"
+#define OBJC_VERSION "2.2"
// Loading in AppKit on Mac OS X 10.3 results in
// a bit less than 1500 classes.
Modified: trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m (original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/test/block.m Tue Nov 24 07:28:53 2009
@@ -5,7 +5,7 @@
@interface OCTestBlock : NSObject {}
-#if PyObjC_BUILD_RELEASE >= 1006
+#if (PyObjC_BUILD_RELEASE >= 1006) && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 2)
-(int(^)(void))getIntBlock;
-(double(^)(double,double))getFloatBlock;
@@ -17,7 +17,7 @@
@implementation OCTestBlock
-#if PyObjC_BUILD_RELEASE >= 1006
+#if PyObjC_BUILD_RELEASE >= 1006 && (__GNUC__ >= 4 && __GNUC_MINOR__ >= 2)
-(int(^)(void))getIntBlock
{
Modified: trunk/pyobjc/pyobjc-core/NEWS.txt
==============================================================================
--- trunk/pyobjc/pyobjc-core/NEWS.txt (original)
+++ trunk/pyobjc/pyobjc-core/NEWS.txt Tue Nov 24 07:28:53 2009
@@ -4,8 +4,10 @@
An overview of the relevant changes in new, and older, releases.
-Version 2.2 (...)
------------------
+Version 2.2 (2009-11-24)
+------------------------
+
+- BUGFIX: Ensure PyObjC compiles cleanly with Python 2.6.4.
- BUGFIX: It is now possible to explicitly define ``__getitem__`` (and other
special methods) if your class implements ``objectForKey:``::
Modified: trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py (original)
+++ trunk/pyobjc/pyobjc-core/PyObjCTest/test_blocks.py Tue Nov 24 07:28:53 2009
@@ -39,9 +39,18 @@
</signatures>
''', globals(), 'PyObjCTest')
+# The blocks tests can only run when PyObjC was compiled with
+# GCC 4.2 or later.
+v = OCTestBlock.alloc().init()
+if hasattr(v, 'getIntBlock'):
+ blocksEnabled = True
+else:
+ blocksEnabled = False
+del v
class TestBlocks (TestCase):
@min_os_level('10.6')
+ @onlyIf(blocksEnabled, "no blocks")
def testBlockToObjC(self):
obj = OCTestBlock.alloc().init()
@@ -57,6 +66,7 @@
self.failUnlessEqual(lst, [42, 43])
@min_os_level('10.6')
+ @onlyIf(blocksEnabled, "no blocks")
def testBlockToObjC2(self):
obj = OCTestBlock.alloc().init()
@@ -69,6 +79,7 @@
@min_os_level('10.6')
+ @onlyIf(blocksEnabled, "no blocks")
def testBlockFromObjC(self):
obj = OCTestBlock.alloc().init()
@@ -80,6 +91,7 @@
self.failUnlessEqual(value, 42)
@min_os_level('10.6')
+ @onlyIf(blocksEnabled, "no blocks")
def testBlockFromObjC2(self):
obj = OCTestBlock.alloc().init()
Modified: trunk/pyobjc/pyobjc-core/setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/setup.py (original)
+++ trunk/pyobjc/pyobjc-core/setup.py Tue Nov 24 07:28:53 2009
@@ -209,11 +209,10 @@
if not os.path.exists('/usr/include/objc/runtime.h'):
CFLAGS.append('-DNO_OBJC2_RUNTIME')
-else:
- # Force compilation with the local SDK, compilation of PyObC will result in
- # a binary that runs on other releases of the OS without using a particular SDK.
- CFLAGS.extend(['-isysroot', '/'])
- OBJC_LDFLAGS.extend(['-isysroot', '/'])
+# Force compilation with the local SDK, compilation of PyObC will result in
+# a binary that runs on other releases of the OS without using a particular SDK.
+CFLAGS.extend(['-isysroot', '/'])
+OBJC_LDFLAGS.extend(['-isysroot', '/'])
# We're using xml2, check for the flags to use:
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july