##// END OF EJS Templates
Don't clear input if InputTransformer raises SyntaxError.
Don't clear input if InputTransformer raises SyntaxError.

File last commit:

r13447:b2face8c
r13527:d8d6a847
Show More
test_prompts.py
112 lines | 3.5 KiB | text/x-python | PythonLexer
MinRK
add failing test for unicode cwd in prompts
r7570 # -*- coding: utf-8
Thomas Kluyver
Add tests for prompt system.
r5658 """Tests for prompt generation."""
import unittest
MinRK
add failing test for unicode cwd in prompts
r7570 import os
Thomas Kluyver
Add tests for prompt system.
r5658
from IPython.testing import tools as tt, decorators as dec
MinRK
test LazyEvaluate with non-ascii input
r7577 from IPython.core.prompts import PromptManager, LazyEvaluate
Thomas Kluyver
Add tests for prompt system.
r5658 from IPython.testing.globalipapp import get_ipython
MinRK
use TemporaryDirectory ctx manager in test_render_unicode_cwd
r7575 from IPython.utils.tempdir import TemporaryDirectory
Thomas Kluyver
Python 3 compatibility for os.getcwdu()
r13447 from IPython.utils import py3compat
Thomas Kluyver
Replace references to unicode and basestring
r13353 from IPython.utils.py3compat import unicode_type
Thomas Kluyver
Add tests for prompt system.
r5658
ip = get_ipython()
class PromptTests(unittest.TestCase):
def setUp(self):
self.pm = PromptManager(shell=ip, config=ip.config)
def test_multiline_prompt(self):
self.pm.in_template = "[In]\n>>>"
self.pm.render('in')
self.assertEqual(self.pm.width, 3)
self.assertEqual(self.pm.txtwidth, 3)
self.pm.in_template = '[In]\n'
self.pm.render('in')
self.assertEqual(self.pm.width, 0)
self.assertEqual(self.pm.txtwidth, 0)
def test_translate_abbreviations(self):
def do_translate(template):
self.pm.in_template = template
return self.pm.templates['in']
pairs = [(r'%n>', '{color.number}{count}{color.prompt}>'),
(r'\T', '{time}'),
(r'\n', '\n')
]
tt.check_pairs(do_translate, pairs)
MinRK
allow access to user_ns in prompt_manager...
r5724 def test_user_ns(self):
self.pm.color_scheme = 'NoColor'
ip.ex("foo='bar'")
self.pm.in_template = "In [{foo}]"
prompt = self.pm.render('in')
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(prompt, u'In [bar]')
MinRK
allow access to user_ns in prompt_manager...
r5724
def test_builtins(self):
self.pm.color_scheme = 'NoColor'
self.pm.in_template = "In [{int}]"
prompt = self.pm.render('in')
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(prompt, u"In [%r]" % int)
MinRK
allow access to user_ns in prompt_manager...
r5724
def test_undefined(self):
self.pm.color_scheme = 'NoColor'
self.pm.in_template = "In [{foo_dne}]"
prompt = self.pm.render('in')
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(prompt, u"In [<ERROR: 'foo_dne' not found>]")
MinRK
allow access to user_ns in prompt_manager...
r5724
Thomas Kluyver
Add tests for prompt system.
r5658 def test_render(self):
self.pm.in_template = r'\#>'
self.assertEqual(self.pm.render('in',color=False), '%d>' % ip.execution_count)
MinRK
add failing test for unicode cwd in prompts
r7570
Thomas Kluyver
Skip some more tests that require unicode paths
r12168 @dec.onlyif_unicode_paths
MinRK
use TemporaryDirectory ctx manager in test_render_unicode_cwd
r7575 def test_render_unicode_cwd(self):
Thomas Kluyver
Python 3 compatibility for os.getcwdu()
r13447 save = py3compat.getcwd()
MinRK
use TemporaryDirectory ctx manager in test_render_unicode_cwd
r7575 with TemporaryDirectory(u'ünicødé') as td:
os.chdir(td)
self.pm.in_template = r'\w [\#]'
MinRK
add failing test for unicode cwd in prompts
r7570 p = self.pm.render('in', color=False)
Thomas Kluyver
Python 3 compatibility for os.getcwdu()
r13447 self.assertEqual(p, u"%s [%i]" % (py3compat.getcwd(), ip.execution_count))
MinRK
use TemporaryDirectory ctx manager in test_render_unicode_cwd
r7575 os.chdir(save)
MinRK
test LazyEvaluate with non-ascii input
r7577
def test_lazy_eval_unicode(self):
u = u'ünicødé'
lz = LazyEvaluate(lambda : u)
MinRK
use cleaner, less safe, unicode/str in LazyEvaluate
r7581 # str(lz) would fail
Thomas Kluyver
Replace references to unicode and basestring
r13353 self.assertEqual(unicode_type(lz), u)
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(format(lz), u)
MinRK
test LazyEvaluate with non-ascii input
r7577
def test_lazy_eval_nonascii_bytes(self):
u = u'ünicødé'
b = u.encode('utf8')
lz = LazyEvaluate(lambda : b)
MinRK
use cleaner, less safe, unicode/str in LazyEvaluate
r7581 # unicode(lz) would fail
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(str(lz), str(b))
self.assertEqual(format(lz), str(b))
MinRK
test LazyEval with float and format string
r7579
def test_lazy_eval_float(self):
f = 0.503
lz = LazyEvaluate(lambda : f)
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(str(lz), str(f))
Thomas Kluyver
Replace references to unicode and basestring
r13353 self.assertEqual(unicode_type(lz), unicode_type(f))
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(format(lz), str(f))
self.assertEqual(format(lz, '.1'), '0.5')
MinRK
test LazyEvaluate with non-ascii input
r7577
MinRK
skip test_cwdx on Windows...
r7773 @dec.skip_win32
MinRK
fix&test missing HOME in cwd_x
r7586 def test_cwd_x(self):
self.pm.in_template = r"\X0"
Thomas Kluyver
Python 3 compatibility for os.getcwdu()
r13447 save = py3compat.getcwd()
MinRK
fix&test missing HOME in cwd_x
r7586 os.chdir(os.path.expanduser('~'))
p = self.pm.render('in', color=False)
try:
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(p, '~')
MinRK
fix&test missing HOME in cwd_x
r7586 finally:
os.chdir(save)