[PyObjC-svn] r2233 - in trunk/pyobjc/pyobjc-framework-Cocoa: . Doc Lib/AppKit Lib/Foundation Modules PyObjCTest

[email protected] Sat, 23 May 2009 01:30:57 -0500
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Sat May 23 01:30:56 2009
New Revision: 2233

Log:
A number of testcases imported stuff from "objc.test", and that
module no longer exists. Update tests to deal with that.


Added:
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/_nsindexset.py   (contents, props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/testhelper.m
Removed:
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_AppKit_nsopengl.m
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFArray.m
Modified:
   trunk/pyobjc/pyobjc-framework-Cocoa/Doc/AppCategories.txt
   trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt
   trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-Foudation.txt
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/   (props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/__init__.py
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/   (props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py
   trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/   (props changed)
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_keyvalue.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_regr.py
   trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_threading.py
   trunk/pyobjc/pyobjc-framework-Cocoa/setup.py

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Doc/AppCategories.txt
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Doc/AppCategories.txt	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Doc/AppCategories.txt	Sat May 23 01:30:56 2009
@@ -28,7 +28,7 @@
       with NSGraphicsContext.savedGraphicsState():
           pass
 
-  This is equivalent to:
+  This is equivalent to::
 
       NSGraphicsContext.saveGraphicsState()
       try:

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-AppKit.txt	Sat May 23 01:30:56 2009
@@ -10,7 +10,7 @@
   These methods are not supported.
 
 ``NSEvent``
-----------
+-----------
 
 * ``-initWithEventRef:`` and ``-eventRef``
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-Foudation.txt
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-Foudation.txt	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Doc/api-notes-Foudation.txt	Sat May 23 01:30:56 2009
@@ -74,7 +74,7 @@
 
 
 ``NSPointerArray``
---------------
+------------------
 
 PyObjC only supports ``NSPointerArray`` instances that have been
 configured to store objects (as opposed to arbitrary pointers).

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/__init__.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/__init__.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/AppKit/__init__.py	Sat May 23 01:30:56 2009
@@ -6,7 +6,6 @@
 '''
 
 import objc as _objc
-#import ApplicationServices
 from Foundation import *
 
 from AppKit._inlines import _inline_list_
@@ -30,9 +29,9 @@
 from AppKit._nsbezierpath import *
 from AppKit._nsview import *
 from AppKit._nsbitmap import *
-#from AppKit._nsopengl import *
 from AppKit._nswindow import *
 
+
 # Fix types for a number of character constants
 NSEnterCharacter = unichr(NSEnterCharacter)
 NSBackspaceCharacter = unichr(NSBackspaceCharacter)

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Lib/Foundation/__init__.py	Sat May 23 01:30:56 2009
@@ -29,7 +29,7 @@
 from Foundation._string import *
 
 import Foundation._nsobject
-#import Foundation._nsindexset
+import Foundation._nsindexset
 
 YES = objc.YES
 NO = objc.NO

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/Modules/_CoreFoundation_CFCalendar.m	Sat May 23 01:30:56 2009
@@ -81,7 +81,7 @@
 	result = FALSE;
 	PyObjC_DURING
 		result = CFCalendarAddComponents(
-			calendar, &at, flags, (unsigned char*)componentDesc,
+			calendar, &at, flags, componentDesc,
 			params[0], params[1], params[2], params[3],
 			params[4], params[5], params[6], params[7],
 			params[8], params[9]);
@@ -172,7 +172,7 @@
 	result = FALSE;
 	PyObjC_DURING
 		result = CFCalendarComposeAbsoluteTime(
-			calendar, &at, (unsigned char*)componentDesc,
+			calendar, &at, componentDesc,
 			params[0], params[1], params[2], params[3],
 			params[4], params[5], params[6], params[7],
 			params[8], params[9]);
@@ -266,7 +266,7 @@
 	result = FALSE;
 	PyObjC_DURING
 		result = CFCalendarDecomposeAbsoluteTime(
-			calendar, at, (unsigned char*)componentDesc,
+			calendar, at, componentDesc,
 			&params[0], &params[1], &params[2], &params[3],
 			&params[4], &params[5], &params[6], &params[7],
 			&params[8], &params[9]);
@@ -387,7 +387,7 @@
 	PyObjC_DURING
 		result = CFCalendarGetComponentDifference(
 			calendar, startingAt, resultAt, options, 
-			(unsigned char*)componentDesc,
+			componentDesc,
 			&params[0], &params[1], &params[2], &params[3],
 			&params[4], &params[5], &params[6], &params[7],
 			&params[8], &params[9]);

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_keyvalue.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_keyvalue.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_keyvalue.py	Sat May 23 01:30:56 2009
@@ -12,7 +12,7 @@
 import objc
 from PyObjCTools.TestSupport import *
 import sys
-from objc.test.testbndl import PyObjC_TestClass3 as STUB
+from PyObjCTest.testhelper import PyObjC_TestClass3 as STUB
 from Foundation import *
 
 class KeyValueClass1 (NSObject):

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nscoder.py	Sat May 23 01:30:56 2009
@@ -2,7 +2,7 @@
 import objc
 
 from Foundation import *
-from objc.test.testbndl import PyObjC_TestClass4
+from PyObjCTest.testhelper import PyObjC_TestClass4
 
 class TestNSCoderUsage(TestCase):
     if not hasattr(TestCase, 'assertAlmostEquals'):

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdata.py	Sat May 23 01:30:56 2009
@@ -3,7 +3,7 @@
 import array
 
 from Foundation import *
-from objc.test.testbndl import PyObjC_TestClass3
+from PyObjCTest.testhelper import PyObjC_TestClass3
 
 rawBytes = "a\x13b\x00cd\xFFef\xEFgh"
 otherBytes = array.array('c')

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nsdictionary.py	Sat May 23 01:30:56 2009
@@ -3,7 +3,7 @@
 import types
 import sys
 
-from objc.test.testbndl import PyObjC_TestClass3
+from PyObjCTest.testhelper import PyObjC_TestClass3
 
 from Foundation import *
 

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_nshost.py	Sat May 23 01:30:56 2009
@@ -1,5 +1,5 @@
 from PyObjCTools.TestSupport import *
-from objc.test.testbndl import PyObjC_TestClass3
+from PyObjCTest.testhelper import PyObjC_TestClass3
 from Foundation import NSHost
 
 class TestNSHost (TestCase):

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_regr.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_regr.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_regr.py	Sat May 23 01:30:56 2009
@@ -5,36 +5,12 @@
 import os
 from PyObjCTools.TestSupport import *
 
-class ReturnAStruct (NSObject):
-    def someRectWithRect_(self, ((x, y), (h, w))):
-        return ((x,y),(h,w))
-    someRectWithRect_ = objc.selector(someRectWithRect_,
-        signature='{_NSRect={_NSPoint=ff}{_NSSize=ff}}@:{_NSRect={_NSPoint=ff}{_NSSize=ff}}')
-
-
 class TestRegr (TestCase):
     def testFSRepr(self):
         fm = Foundation.NSFileManager.defaultManager()
         self.assertRaises(TypeError, fm.stringWithFileSystemRepresentation_length_, "/var")
         self.assertEquals(u"/var", fm.stringWithFileSystemRepresentation_length_("/var/boo", 4))
 
-    def testStructReturnPy(self):
-        # XXX: remove dependency on objc.test!
-        from objc.test.structargs import StructArgClass
-        o = ReturnAStruct.alloc().init()
-        p = StructArgClass.alloc().init()
-
-        v = p.someRectWithObject_X_Y_H_W_(o, 1, 2, 3, 4)
-        self.assert_(isinstance(v, Foundation.NSRect))
-        self.assertEquals(v, ((1,2),(3,4)))
-
-    def testStructReturn(self):
-        from objc.test.structargs import StructArgClass        
-        o = StructArgClass.alloc().init()
-        v = o.someRect()
-        self.assertEquals(v, ((1,2),(3,4)))
-
-
     def testThreadHang(self):
 
         # Temporarily redirect stderr to a file, this allows us to check

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_threading.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_threading.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/PyObjCTest/test_threading.py	Sat May 23 01:30:56 2009
@@ -3,7 +3,7 @@
 import sys
 import time
 
-from objc.test import testbndl
+from PyObjCTest.testhelper import PyObjC_TestClass4
 
 from Foundation import *
 
@@ -99,7 +99,7 @@
             def call(self):
                 return Dummy()
 
-        my = testbndl.PyObjC_TestClass4.alloc().init()
+        my = PyObjC_TestClass4.alloc().init()
         cb = PyObjCTestCalling.alloc().init()
 
         NSThread.detachNewThreadSelector_toTarget_withObject_(

Modified: trunk/pyobjc/pyobjc-framework-Cocoa/setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-framework-Cocoa/setup.py	(original)
+++ trunk/pyobjc/pyobjc-framework-Cocoa/setup.py	Sat May 23 01:30:56 2009
@@ -12,11 +12,15 @@
 
 from setuptools import setup, Extension
 
+from setuptools.command import build_ext
+
 import os
 if int(os.uname()[2].split('.')[0]) <= 8:
     CFLAGS=["-DNO_OBJC2_RUNTIME"]
+    LDFLAGS=[]
 else:
     CFLAGS=["-isysroot", "/"]
+    LDFLAGS=CFLAGS
 
 try:
     from PyObjCMetaData.commands import extra_cmdclass, extra_options
@@ -25,6 +29,17 @@
     extra_options = lambda name: {}
 
 
+class pyobjc_build_ext (build_ext.build_ext):
+    def run(self):
+        build_ext.build_ext.run(self)
+        extensions = self.extensions
+        self.extensions = [
+            e for e in extensions if e.name.startswith('PyObjCTest') ]
+        self.copy_extensions_to_source()
+        self.extensions = extensions
+
+extra_cmdclass['build_ext'] = pyobjc_build_ext
+
 setup(
     name='pyobjc-framework-Cocoa',
     version='2.2b2',
@@ -37,7 +52,7 @@
     packages = [ "Cocoa", "CoreFoundation", "Foundation", "AppKit", "PyObjCTools" ],
     namespace_packages = ['PyObjCTools'],
 
-    package_dir = { '': 'Lib' },
+    package_dir = { '': 'Lib', 'PyObjCTest': 'PyObjCTest' },
     install_requires = [ 
         'pyobjc-core>=2.2b1',
     ],
@@ -46,12 +61,6 @@
         '': ['*.bridgesupport'] 
     },
     zip_safe = False,
-
-#    entry_points = {
-#        'console_scripts': [
-#            "nibclassbuilder = PyObjCTools.NibClassBuilder.commandline"
-#        ],
-#    },
     test_suite='PyObjCTest',
 
     cmdclass = extra_cmdclass,
@@ -62,154 +71,150 @@
         Extension('CoreFoundation._inlines', 
                 [ 'Modules/_CoreFoundation_inlines.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFCalendar', 
                 [ 'Modules/_CoreFoundation_CFCalendar.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFTree', 
                 [ 'Modules/_CoreFoundation_CFTree.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
-#        Extension('CoreFoundation._CFArray', 
-#                [ 'Modules/_CoreFoundation_CFArray.m' ],
-#                extra_compile_args=CFLAGS,
-#                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFBag', 
                 [ 'Modules/_CoreFoundation_CFBag.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFBinaryHeap', 
                 [ 'Modules/_CoreFoundation_CFBinaryHeap.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS +['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFBitVector', 
                 [ 'Modules/_CoreFoundation_CFBitVector.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFDictionary', 
                 [ 'Modules/_CoreFoundation_CFDictionary.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFFileDescriptor', 
                 [ 'Modules/_CoreFoundation_CFFileDescriptor.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFMachPort', 
                 [ 'Modules/_CoreFoundation_CFMachPort.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFMessagePort', 
                 [ 'Modules/_CoreFoundation_CFMessagePort.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFNumber', 
                 [ 'Modules/_CoreFoundation_CFNumber.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFReadStream', 
                 [ 'Modules/_CoreFoundation_CFReadStream.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFSet', 
                 [ 'Modules/_CoreFoundation_CFSet.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFSocket', 
                 [ 'Modules/_CoreFoundation_CFSocket.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFWriteStream', 
                 [ 'Modules/_CoreFoundation_CFWriteStream.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFRunLoopObserver', 
                 [ 'Modules/_CoreFoundation_CFRunLoopObserver.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFRunLoopSource', 
                 [ 'Modules/_CoreFoundation_CFRunLoopSource.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
         Extension('CoreFoundation._CFRunLoopTimer', 
                 [ 'Modules/_CoreFoundation_CFRunLoopTimer.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'CoreFoundation']),
+                extra_link_args=CFLAGS + ['-framework', 'CoreFoundation']),
 
         # Foundation
         Extension('Foundation._NSDecimal', 
                 [ 'Modules/_Foundation_NSDecimal.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._functioncallbacks', 
                 [ 'Modules/_Foundation_functioncallbacks.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._nscoder', 
                 [ 'Modules/_Foundation_nscoder.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._typecode', 
                 [ 'Modules/_Foundation_typecode.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._inlines', 
                 [ 'Modules/_Foundation_inlines.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._data', 
                 [ 'Modules/_Foundation_data.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._netservice', 
                 [ 'Modules/_Foundation_netservice.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
         Extension('Foundation._string', 
                 [ 'Modules/_Foundation_string.m' ],
                 extra_compile_args=CFLAGS,
-                extra_link_args=['-framework', 'Foundation']),
+                extra_link_args=CFLAGS + ['-framework', 'Foundation']),
 
         # AppKit
         Extension("AppKit._inlines",
             [ "Modules/_AppKit_inlines.m" ],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._appmain",
             [ "Modules/_AppKit_appmain.m" ],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nsfont",
             [ "Modules/_AppKit_nsfont.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nsquickdrawview",
             [ "Modules/_AppKit_nsquickdrawview.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nsbezierpath",
             [ "Modules/_AppKit_nsbezierpath.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nsview",
             [ "Modules/_AppKit_nsview.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nsbitmap",
             [ "Modules/_AppKit_nsbitmap.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
-        Extension("AppKit._nsopengl",
-            [ "Modules/_AppKit_nsopengl.m"],
-            extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._nswindow",
             [ "Modules/_AppKit_nswindow.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
         Extension("AppKit._carbon",
             [ "Modules/_AppKit_carbon.m"],
             extra_compile_args=CFLAGS,
-            extra_link_args=["-framework", "AppKit"]),
+            extra_link_args=CFLAGS + ["-framework", "AppKit"]),
+        Extension("PyObjCTest.testhelper",
+            [ "Modules/testhelper.m"],
+            extra_compile_args=CFLAGS,
+            extra_link_args=CFLAGS + ["-framework", "Foundation"]),
     ],
 )

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com