enable embedded testcase in Python 3
authorLisandro Dalcin <dalcinl@gmail.com>
Wed, 16 Feb 2011 23:11:05 +0000 (20:11 -0300)
committerLisandro Dalcin <dalcinl@gmail.com>
Wed, 16 Feb 2011 23:11:05 +0000 (20:11 -0300)
Demos/embed/Makefile
Demos/embed/assert_equal.py
runtests.py

index 1112589a36cc9e58419812d30b69e8a7edbac193..4162d2cb84e595505cc5408feeaa4e9c224323fd 100644 (file)
@@ -19,8 +19,9 @@ embedded: embedded.o
 embedded.o: embedded.c
        $(CC) -c $^ -I$(INCDIR)
 
+CYTHON=../../cython.py
 embedded.c: embedded.pyx
-       @$(PYTHON) ../../cython.py --embed embedded.pyx
+       @$(PYTHON) $(CYTHON) --embed embedded.pyx
 
 all: embedded
 
index dfb42c56ed5cf2d22f92f2a85a361fe46b624c76..34276e8d4a1390b2975cf4e73890d9a0d9e55656 100644 (file)
@@ -1,6 +1,12 @@
 import sys
-if open(sys.argv[1]).read() != open(sys.argv[2]).read():
-    print "Files differ"
-    sys.exit(1)
-else:
-    print "Files identical"
+f1 = open(sys.argv[1])
+f2 = open(sys.argv[2])
+try:
+    if f1.read() != f2.read():
+        print ("Files differ")
+        sys.exit(1)
+    else:
+        print ("Files identical")
+finally:
+    f1.close()
+    f2.close()
index bad5e1948c49e030bbd6a01e5fc88c9834220639..a9f323c060f40db8be7a10ff207eee86234d3fd7 100644 (file)
@@ -28,6 +28,7 @@ except ImportError: # No threads, no problems
     threading = None
 
 WITH_CYTHON = True
+CY3_DIR = None
 
 from distutils.dist import Distribution
 from distutils.core import Extension
@@ -176,8 +177,8 @@ class TestBuilder(object):
                     continue
                 suite.addTest(
                     self.handle_directory(path, filename))
-        if sys.platform not in ['win32'] and sys.version_info[0] < 3:
-            # Non-Windows makefile, can't run Cython under Py3.
+        if sys.platform not in ['win32']:
+            # Non-Windows makefile.
             if [1 for selector in self.selectors if selector("embedded")] \
                 and not [1 for selector in self.exclude_selectors if selector("embedded")]:
                 suite.addTest(unittest.makeSuite(EmbedTest))
@@ -892,8 +893,12 @@ class EmbedTest(unittest.TestCase):
                 if not os.path.isdir(libdir) or libname not in os.listdir(libdir):
                     # report the error for the original directory
                     libdir = sysconfig.get_config_var('LIBDIR')
+        cython = 'cython.py'
+        if sys.version_info[0] >=3:
+            cython = os.path.join(CY3_DIR, cython)
+        cython = os.path.abspath(os.path.join('..', '..', cython))
         self.assert_(os.system(
-            "make PYTHON='%s' LIBDIR1='%s' test > make.output" % (sys.executable, libdir)) == 0)
+            "make PYTHON='%s' CYTHON='%s' LIBDIR1='%s' test > make.output" % (sys.executable, cython, libdir)) == 0)
         try:
             os.remove('make.output')
         except OSError:
@@ -967,6 +972,7 @@ def refactor_for_py3(distdir, cy3_dir):
                      recursive-include Cython *.py *.pyx *.pxd
                      recursive-include Cython/Debugger/Tests *
                      include runtests.py
+                     include cython.py
                      ''')
     sys.path.insert(0, cy3_dir)
 
@@ -1105,7 +1111,8 @@ def main():
                 for name in cy_modules:
                     del sys.modules[name]
                 # hasn't been refactored yet - do it now
-                cy3_dir = os.path.join(WORKDIR, 'Cy3')
+                global CY3_DIR
+                CY3_DIR = cy3_dir = os.path.join(WORKDIR, 'Cy3')
                 if sys.version_info >= (3,1):
                     refactor_for_py3(DISTDIR, cy3_dir)
                 elif os.path.isdir(cy3_dir):