##// END OF EJS Templates
refactor to improve cell switching in edit mode...
refactor to improve cell switching in edit mode This code was repeated in both CodeCell and TextCell, both of which are extensions of Cell, so this just unifies the logic in Cell. TextCell had logic here to check if the cell was rendered or not, but I don't believe it is possible to end up triggering such a code path. (Should that be required, I can always just add back these methods to TextCell, performing the .rendered==True check, and calling the Cell prior to this, code mirror at_top would only return true on if the cursor was at the first character of the top line. Now, pressing up arrow on any character on the top line will take you to the cell above. The same applies for the bottom line. Pressing down arrow would only go to the next cell if the cursor was at a location *after* the last character (something that is only possible to achieve in vim mode if the last line is empty, for example). Now, down arrow on any character of the last line will go to the next cell.

File last commit:

r13447:b2face8c
r15754:d60e793e
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)