Commit 541b01af authored by Lisandro Dalcin's avatar Lisandro Dalcin

enable embedded testcase in Python 3

parent b3dbeb31
...@@ -19,8 +19,9 @@ embedded: embedded.o ...@@ -19,8 +19,9 @@ embedded: embedded.o
embedded.o: embedded.c embedded.o: embedded.c
$(CC) -c $^ -I$(INCDIR) $(CC) -c $^ -I$(INCDIR)
CYTHON=../../cython.py
embedded.c: embedded.pyx embedded.c: embedded.pyx
@$(PYTHON) ../../cython.py --embed embedded.pyx @$(PYTHON) $(CYTHON) --embed embedded.pyx
all: embedded all: embedded
......
import sys import sys
if open(sys.argv[1]).read() != open(sys.argv[2]).read(): f1 = open(sys.argv[1])
print "Files differ" f2 = open(sys.argv[2])
sys.exit(1) try:
else: if f1.read() != f2.read():
print "Files identical" print ("Files differ")
sys.exit(1)
else:
print ("Files identical")
finally:
f1.close()
f2.close()
...@@ -28,6 +28,7 @@ except ImportError: # No threads, no problems ...@@ -28,6 +28,7 @@ except ImportError: # No threads, no problems
threading = None threading = None
WITH_CYTHON = True WITH_CYTHON = True
CY3_DIR = None
from distutils.dist import Distribution from distutils.dist import Distribution
from distutils.core import Extension from distutils.core import Extension
...@@ -176,8 +177,8 @@ class TestBuilder(object): ...@@ -176,8 +177,8 @@ class TestBuilder(object):
continue continue
suite.addTest( suite.addTest(
self.handle_directory(path, filename)) self.handle_directory(path, filename))
if sys.platform not in ['win32'] and sys.version_info[0] < 3: if sys.platform not in ['win32']:
# Non-Windows makefile, can't run Cython under Py3. # Non-Windows makefile.
if [1 for selector in self.selectors if selector("embedded")] \ if [1 for selector in self.selectors if selector("embedded")] \
and not [1 for selector in self.exclude_selectors if selector("embedded")]: and not [1 for selector in self.exclude_selectors if selector("embedded")]:
suite.addTest(unittest.makeSuite(EmbedTest)) suite.addTest(unittest.makeSuite(EmbedTest))
...@@ -892,8 +893,12 @@ class EmbedTest(unittest.TestCase): ...@@ -892,8 +893,12 @@ class EmbedTest(unittest.TestCase):
if not os.path.isdir(libdir) or libname not in os.listdir(libdir): if not os.path.isdir(libdir) or libname not in os.listdir(libdir):
# report the error for the original directory # report the error for the original directory
libdir = sysconfig.get_config_var('LIBDIR') 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( 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: try:
os.remove('make.output') os.remove('make.output')
except OSError: except OSError:
...@@ -967,6 +972,7 @@ def refactor_for_py3(distdir, cy3_dir): ...@@ -967,6 +972,7 @@ def refactor_for_py3(distdir, cy3_dir):
recursive-include Cython *.py *.pyx *.pxd recursive-include Cython *.py *.pyx *.pxd
recursive-include Cython/Debugger/Tests * recursive-include Cython/Debugger/Tests *
include runtests.py include runtests.py
include cython.py
''') ''')
sys.path.insert(0, cy3_dir) sys.path.insert(0, cy3_dir)
...@@ -1105,7 +1111,8 @@ def main(): ...@@ -1105,7 +1111,8 @@ def main():
for name in cy_modules: for name in cy_modules:
del sys.modules[name] del sys.modules[name]
# hasn't been refactored yet - do it now # 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): if sys.version_info >= (3,1):
refactor_for_py3(DISTDIR, cy3_dir) refactor_for_py3(DISTDIR, cy3_dir)
elif os.path.isdir(cy3_dir): elif os.path.isdir(cy3_dir):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment