##// END OF EJS Templates
Add newline if missing to end of script magic cell
Add newline if missing to end of script magic cell

File last commit:

r12647:0e0e6a8e
r17171:e5123e76
Show More
test_cythonmagic.py
70 lines | 1.6 KiB | text/x-python | PythonLexer
Brian Granger
Adding simple tests for the Cython magics extension.
r7035 # -*- coding: utf-8 -*-
"""Tests for the Cython magics extension."""
import os
import nose.tools as nt
Fernando Perez
Skip external libs test on Windows, we can't seem to make it build there.
r7425 from IPython.testing import decorators as dec
Brian Granger
More code review changes:...
r7102 from IPython.utils import py3compat
Brian Granger
Adding simple tests for the Cython magics extension.
r7035
Brian Granger
More code review changes:...
r7102 code = py3compat.str_to_unicode("""def f(x):
Brian Granger
Adding simple tests for the Cython magics extension.
r7035 return 2*x
Brian Granger
More code review changes:...
r7102 """)
Brian Granger
Adding simple tests for the Cython magics extension.
r7035
try:
import Cython
except:
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 __test__ = False
Fernando Perez
Add test for external library linking.
r7420 ip = get_ipython()
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 def setup():
ip.extension_manager.load_extension('cythonmagic')
Fernando Perez
Add test for external library linking.
r7420
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 def test_cython_inline():
ip.ex('a=10; b=20')
result = ip.run_cell_magic('cython_inline','','return a+b')
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 nt.assert_equal(result, 30)
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036
Fernando Perez
Add test for external library linking.
r7420
Paul Ivanov
skip a failing test on windows...
r11854 @dec.skip_win32
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 def test_cython_pyximport():
module_name = '_test_cython_pyximport'
ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('g = f(10)')
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 nt.assert_equal(ip.user_ns['g'], 20.0)
Julian Taylor
test double pyximport
r9993 ip.run_cell_magic('cython_pyximport', module_name, code)
ip.ex('h = f(-10)')
nt.assert_equal(ip.user_ns['h'], -20.0)
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 try:
os.remove(module_name+'.pyx')
except OSError:
pass
Fernando Perez
Add test for external library linking.
r7420
Brian Granger
Using better approach for skipping test if Cython no pres.
r7036 def test_cython():
ip.run_cell_magic('cython', '', code)
ip.ex('g = f(10)')
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 nt.assert_equal(ip.user_ns['g'], 20.0)
Brian Granger
Adding simple tests for the Cython magics extension.
r7035
Fernando Perez
Skip external libs test on Windows, we can't seem to make it build there.
r7425
Cyrille Rossant
The 'name' argument to the %%cython cell magic is no longer a list....
r12647 def test_cython_name():
# The Cython module named 'mymodule' defines the function f.
ip.run_cell_magic('cython', '--name=mymodule', code)
# This module can now be imported in the interactive namespace.
ip.ex('import mymodule; g = mymodule.f(10)')
nt.assert_equal(ip.user_ns['g'], 20.0)
Fernando Perez
Skip external libs test on Windows, we can't seem to make it build there.
r7425 @dec.skip_win32
Fernando Perez
Add test for external library linking.
r7420 def test_extlibs():
code = py3compat.str_to_unicode("""
from libc.math cimport sin
x = sin(0.0)
""")
ip.user_ns['x'] = 1
ip.run_cell_magic('cython', '-l m', code)
Bradley M. Froehle
s/nt.assert_equals/nt.assert_equal/
r7875 nt.assert_equal(ip.user_ns['x'], 0)
Fernando Perez
Add test for external library linking.
r7420