##// END OF EJS Templates
Refine unicode tests for ultratb
Refine unicode tests for ultratb

File last commit:

r11124:9567c77a
r12167:56603c61
Show More
test_prompts.py
109 lines | 3.4 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
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
MinRK
use TemporaryDirectory ctx manager in test_render_unicode_cwd
r7575 def test_render_unicode_cwd(self):
MinRK
add failing test for unicode cwd in prompts
r7570 save = os.getcwdu()
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)
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(p, u"%s [%i]" % (os.getcwdu(), 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
Bradley M. Froehle
s/assertEquals/assertEqual/
r7874 self.assertEqual(unicode(lz), u)
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))
self.assertEqual(unicode(lz), unicode(f))
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"
save = os.getcwdu()
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)