##// END OF EJS Templates
Statically type OInfo....
Statically type OInfo. In view of working with #13860, some cleanup inspect to be properly typed, and using stricter datastructure. Instead of dict we now use dataclasses, this will make sure that fields type and access can be stricter and verified not only at runtime, but by mypy

File last commit:

r27549:44d64dc3
r28165:0fef298a
Show More
test_alias.py
66 lines | 2.0 KiB | text/x-python | PythonLexer
Thomas Kluyver
Add test for alias creation, use and destruction
r12602 from IPython.utils.capture import capture_output
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 import pytest
Thomas Kluyver
Add test for alias creation, use and destruction
r12602
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)
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 assert am.retrieve_alias(name) == cmd
assert (name, cmd) in am.aliases
Thomas Kluyver
Add test for alias creation, use and destruction
r12602
# 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]
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 assert result == [cmd]
Thomas Kluyver
Add test for alias creation, use and destruction
r12602 finally:
_ip.system = orig_system
# Test removing the alias
am.undefine_alias(name)
assert not am.is_alias(name)
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 with pytest.raises(ValueError):
Thomas Kluyver
Add test for alias creation, use and destruction
r12602 am.retrieve_alias(name)
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 assert (name, cmd) not in am.aliases
Thomas Kluyver
Add test for alias creation, use and destruction
r12602
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')
Blazej Michalik
Darker
r26750 assert cap.stderr.split(":")[0] == "UsageError"
Matthias Bussonnier
Also run test with Pytest....
r25117
Thomas Adriaan Hellinger
Added test code for 'commenting out' feature of alias magic
r20896 def test_alias_args_commented():
"""Check that alias correctly ignores 'commented out' args"""
Matthias Bussonnier
Update some deprecated ip.magic() to run_line-magic in tests
r27549 _ip.run_line_magic("alias", "commentarg echo this is %%s a commented out arg")
Thomas Adriaan Hellinger
Fixed bug in alias; wrote new alias test.
r20897 with capture_output() as cap:
Matthias Bussonnier
Update some deprecated ip.magic() to run_line-magic in tests
r27549 _ip.run_cell("commentarg")
Matthias Bussonnier
Also run test with Pytest....
r25117 # strip() is for pytest compat; testing via iptest patch IPython shell
Dimitri Papadopoulos
Typos found by codespell
r26875 # in testing.globalipapp and replace the system call which messed up the
Matthias Bussonnier
Also run test with Pytest....
r25117 # \r\n
assert cap.stdout.strip() == '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)
Tomasz Kłoczko
nose2pytest migration batch 1...
r26749 assert thealias.nargs == 1