##// END OF EJS Templates
Fix to allow entering docstring into IPython....
Fix to allow entering docstring into IPython. The EscapeTransformer find method was assuming incorrectly that every line would end with either a NEWLINE or EOF, while this is not the case when encountering multiple line string. This fixes that by making sure we don't index outside of bounds. With this IPython will correctly add a newline at the CLI. Closes #11391

File last commit:

r13620:9ac2cb23
r24701:ba8538e5
Show More
test_magic_arguments.py
118 lines | 4.5 KiB | text/x-python | PythonLexer
/ IPython / core / tests / test_magic_arguments.py
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 #-----------------------------------------------------------------------------
Matthias BUSSONNIER
update copyright to 2011/20xx-2011...
r5390 # Copyright (C) 2010-2011, IPython Development Team.
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 #
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
Thomas Kluyver
Import argparse directly from stdlib
r12547 import argparse
Thomas Kluyver
Remove uses of @parametric decorator
r12374 from nose.tools import assert_equal
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229
from IPython.core.magic_arguments import (argument, argument_group, kwds,
magic_arguments, parse_argstring, real_name)
@magic_arguments()
@argument('-f', '--foo', help="an argument")
def magic_foo1(self, args):
""" A docstring.
"""
return parse_argstring(magic_foo1, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments()
def magic_foo2(self, args):
""" A docstring.
"""
return parse_argstring(magic_foo2, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments()
@argument('-f', '--foo', help="an argument")
@argument_group('Group')
@argument('-b', '--bar', help="a grouped argument")
@argument_group('Second Group')
@argument('-z', '--baz', help="another grouped argument")
def magic_foo3(self, args):
""" A docstring.
"""
return parse_argstring(magic_foo3, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments()
@kwds(argument_default=argparse.SUPPRESS)
@argument('-f', '--foo', help="an argument")
def magic_foo4(self, args):
""" A docstring.
"""
return parse_argstring(magic_foo4, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments('frobnicate')
@argument('-f', '--foo', help="an argument")
def magic_foo5(self, args):
""" A docstring.
"""
return parse_argstring(magic_foo5, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments()
@argument('-f', '--foo', help="an argument")
def magic_magic_foo(self, args):
""" A docstring.
"""
return parse_argstring(magic_magic_foo, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 @magic_arguments()
@argument('-f', '--foo', help="an argument")
def foo(self, args):
""" A docstring.
"""
return parse_argstring(foo, args)
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432
Robert Kern
ENH: Add the argparse-based option parsing for magics.
r3229 def test_magic_arguments():
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_foo1.__doc__, '::\n\n %foo1 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_foo1, 'argcmd_name', None), None)
assert_equal(real_name(magic_foo1), 'foo1')
assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None))
assert hasattr(magic_foo1, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_foo2.__doc__, '::\n\n %foo2\n\n A docstring.\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_foo2, 'argcmd_name', None), None)
assert_equal(real_name(magic_foo2), 'foo2')
assert_equal(magic_foo2(None, ''), argparse.Namespace())
assert hasattr(magic_foo2, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_foo3.__doc__, '::\n\n %foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_foo3, 'argcmd_name', None), None)
assert_equal(real_name(magic_foo3), 'foo3')
assert_equal(magic_foo3(None, ''),
Fernando Perez
Convert from nose-style to ours a parametric test....
r3432 argparse.Namespace(bar=None, baz=None, foo=None))
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert hasattr(magic_foo3, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_foo4.__doc__, '::\n\n %foo4 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_foo4, 'argcmd_name', None), None)
assert_equal(real_name(magic_foo4), 'foo4')
assert_equal(magic_foo4(None, ''), argparse.Namespace())
assert hasattr(magic_foo4, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_foo5.__doc__, '::\n\n %frobnicate [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate')
assert_equal(real_name(magic_foo5), 'frobnicate')
assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None))
assert hasattr(magic_foo5, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(magic_magic_foo.__doc__, '::\n\n %magic_foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None)
assert_equal(real_name(magic_magic_foo), 'magic_foo')
assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None))
assert hasattr(magic_magic_foo, 'has_arguments')
Thomas Kluyver
Update tests for new magic_arguments docstrings
r13620 assert_equal(foo.__doc__, '::\n\n %foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n')
Thomas Kluyver
Remove uses of @parametric decorator
r12374 assert_equal(getattr(foo, 'argcmd_name', None), None)
assert_equal(real_name(foo), 'foo')
assert_equal(foo(None, ''), argparse.Namespace(foo=None))
assert hasattr(foo, 'has_arguments')