##// END OF EJS Templates
Be a little smarter about invisible characters in terminal prompts...
Be a little smarter about invisible characters in terminal prompts This is a partial fix to #8724. Previously, only known color codes were considered to be invisible. Now, it looks for any kind of invisible sequence as defined by the \001 \002 delimiters (which is what readline uses). The situation could still be improved, as it still assumes that the number of invisible characters is constant for a given template. Making this work correctly with the existing API is awkward, so I didn't attempt it, especially since the readline frontend may be removed at some point in the near future.

File last commit:

r20902:57e30142
r21605:8e996f80
Show More
test_alias.py
61 lines | 1.8 KiB | text/x-python | PythonLexer
Thomas Kluyver
Add test for alias creation, use and destruction
r12602 from IPython.utils.capture import capture_output
import nose.tools as nt
def test_alias_lifecycle():
name = 'test_alias1'
cmd = 'echo "Hello"'
am = _ip.alias_manager
am.clear_aliases()
am.define_alias(name, cmd)
assert am.is_alias(name)
nt.assert_equal(am.retrieve_alias(name), cmd)
nt.assert_in((name, cmd), am.aliases)
# Test running the alias
orig_system = _ip.system
result = []
_ip.system = result.append
try:
_ip.run_cell('%{}'.format(name))
result = [c.strip() for c in result]
nt.assert_equal(result, [cmd])
finally:
_ip.system = orig_system
# Test removing the alias
am.undefine_alias(name)
assert not am.is_alias(name)
with nt.assert_raises(ValueError):
am.retrieve_alias(name)
nt.assert_not_in((name, cmd), am.aliases)
def test_alias_args_error():
"""Error expanding with wrong number of arguments"""
_ip.alias_manager.define_alias('parts', 'echo first %s second %s')
# capture stderr:
with capture_output() as cap:
_ip.run_cell('parts 1')
Thomas Adriaan Hellinger
Added test code for 'commenting out' feature of alias magic
r20896 nt.assert_equal(cap.stderr.split(':')[0], 'UsageError')
def test_alias_args_commented():
"""Check that alias correctly ignores 'commented out' args"""
Thomas Adriaan Hellinger
Removed pesky decorative quotes from the OTHER test function
r20902 _ip.magic('alias commetarg echo this is %%s a commented out arg')
Thomas Adriaan Hellinger
Added test code for 'commenting out' feature of alias magic
r20896
Thomas Adriaan Hellinger
Fixed bug in alias; wrote new alias test.
r20897 with capture_output() as cap:
Thomas Adriaan Hellinger
Added test code for 'commenting out' feature of alias magic
r20896 _ip.run_cell('commetarg')
Thomas Adriaan Hellinger
Removed pesky decorative quotes from the OTHER test function
r20902 nt.assert_equal(cap.stdout, 'this is %s a commented out arg')
Thomas Adriaan Hellinger
Wrote test to ensure that number of nargs is calculated correctly.
r20898
def test_alias_args_commented_nargs():
"""Check that alias correctly counts args, excluding those commented out"""
am = _ip.alias_manager
alias_name = 'comargcount'
Thomas Adriaan Hellinger
Removed decorative quotes in cmd causing 'commented_nargs' test to fail
r20899 cmd = 'echo this is %%s a commented out arg and this is not %s'
Thomas Adriaan Hellinger
Wrote test to ensure that number of nargs is calculated correctly.
r20898
am.define_alias(alias_name, cmd)
assert am.is_alias(alias_name)
thealias = am.get_alias(alias_name)
nt.assert_equal(thealias.nargs, 1)