From 541b01af8261e6cf05240a6d62c4eec3d9762182 Mon Sep 17 00:00:00 2001 From: Lisandro Dalcin Date: Wed, 16 Feb 2011 20:11:05 -0300 Subject: [PATCH] enable embedded testcase in Python 3 --- Demos/embed/Makefile | 3 ++- Demos/embed/assert_equal.py | 16 +++++++++++----- runtests.py | 15 +++++++++++---- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/Demos/embed/Makefile b/Demos/embed/Makefile index 1112589a..4162d2cb 100644 --- a/Demos/embed/Makefile +++ b/Demos/embed/Makefile @@ -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 diff --git a/Demos/embed/assert_equal.py b/Demos/embed/assert_equal.py index dfb42c56..34276e8d 100644 --- a/Demos/embed/assert_equal.py +++ b/Demos/embed/assert_equal.py @@ -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() diff --git a/runtests.py b/runtests.py index bad5e194..a9f323c0 100644 --- a/runtests.py +++ b/runtests.py @@ -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): -- 2.26.2