##// END OF EJS Templates
Also catch SyntaxErrors from InputTransformers in run_cell()...
Also catch SyntaxErrors from InputTransformers in run_cell() The run_cell() method is not used in the IPython terminal, so there are two code paths where the SyntaxError needs to be caught. Also, this commit moves the terminal test to IPython/terminal/test/ instead of IPython/app/test. I've checked that this works in the terminal, the Qt console, and the html notebook.

File last commit:

r12573:e46115c2
r13525:b06d9d6e
Show More
test_highlightmagics.py
67 lines | 2.4 KiB | text/x-python | PythonLexer
"""
Module with tests for the HighlightMagics preprocessor
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2013, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from .base import PreprocessorTestsBase
from ..highlightmagics import HighlightMagicsPreprocessor
#-----------------------------------------------------------------------------
# Class
#-----------------------------------------------------------------------------
class TestHighlightMagics(PreprocessorTestsBase):
"""Contains test functions for highlightmagics.py"""
def build_preprocessor(self):
"""Make an instance of a preprocessor"""
preprocessor = HighlightMagicsPreprocessor()
preprocessor.enabled = True
return preprocessor
def test_constructor(self):
"""Can a HighlightMagicsPreprocessor be constructed?"""
self.build_preprocessor()
def test_tagging(self):
"""Test the HighlightMagicsPreprocessor tagging"""
nb = self.build_notebook()
res = self.build_resources()
preprocessor = self.build_preprocessor()
nb.worksheets[0].cells[0].input = """%%R -i x,y -o XYcoef
lm.fit <- lm(y~x)
par(mfrow=c(2,2))
print(summary(lm.fit))
plot(lm.fit)
XYcoef <- coef(lm.fit)"""
nb, res = preprocessor(nb, res)
assert('magics_language' in nb.worksheets[0].cells[0]['metadata'])
self.assertEqual(nb.worksheets[0].cells[0]['metadata']['magics_language'], 'r')
def test_no_false_positive(self):
"""Test that HighlightMagicsPreprocessor does not tag false positives"""
nb = self.build_notebook()
res = self.build_resources()
preprocessor = self.build_preprocessor()
nb.worksheets[0].cells[0].input = """# this should not be detected
print(\"""
%%R -i x, y
\""")"""
nb, res = preprocessor(nb, res)
assert('magics_language' not in nb.worksheets[0].cells[0]['metadata'])