##// END OF EJS Templates
Apply 2to3 `next` fix....
Apply 2to3 `next` fix. Manually set `next = __next__` for Python 2 support.

File last commit:

r7773:ce9806b9
r7847:30e4a149
Show More
test_prompts.py
111 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 import nose.tools as nt
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
test LazyEvaluate with non-ascii input
r7577 from IPython.utils import py3compat
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')
self.assertEquals(prompt, u'In [bar]')
def test_builtins(self):
self.pm.color_scheme = 'NoColor'
self.pm.in_template = "In [{int}]"
prompt = self.pm.render('in')
Thomas Kluyver
Fix prompt test for Python 3.
r5747 self.assertEquals(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')
self.assertEquals(prompt, u"In [<ERROR: 'foo_dne' not found>]")
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)
self.assertEquals(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
MinRK
test LazyEvaluate with non-ascii input
r7577 self.assertEquals(unicode(lz), u)
self.assertEquals(format(lz), u)
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
MinRK
test LazyEval with float and format string
r7579 self.assertEquals(str(lz), str(b))
self.assertEquals(format(lz), str(b))
def test_lazy_eval_float(self):
f = 0.503
lz = LazyEvaluate(lambda : f)
self.assertEquals(str(lz), str(f))
self.assertEquals(unicode(lz), unicode(f))
self.assertEquals(format(lz), str(f))
self.assertEquals(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:
self.assertEquals(p, '~')
finally:
os.chdir(save)