diff options
| -rw-r--r-- | Lib/test/test_cmd.py | 186 | ||||
| -rw-r--r-- | Misc/ACKS | 1 | 
2 files changed, 187 insertions, 0 deletions
diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py new file mode 100644 index 0000000..5aa1c40 --- /dev/null +++ b/Lib/test/test_cmd.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python +""" +Test script for the 'cmd' module +Original by Michael Schneider +""" + + +from test import test_support +import cmd +import sys + +class samplecmdclass(cmd.Cmd): +    """ +    Instance the sampleclass: +    >>> mycmd = samplecmdclass() + +    Test for the function parseline(): +    >>> mycmd.parseline("") +    (None, None, '') +    >>> mycmd.parseline("?") +    ('help', '', 'help ') +    >>> mycmd.parseline("?help") +    ('help', 'help', 'help help') +    >>> mycmd.parseline("!") +    ('shell', '', 'shell ') +    >>> mycmd.parseline("!command") +    ('shell', 'command', 'shell command') +    >>> mycmd.parseline("func") +    ('func', '', 'func') +    >>> mycmd.parseline("func arg1") +    ('func', 'arg1', 'func arg1') + + +    Test for the function onecmd(): +    >>> mycmd.onecmd("") +    >>> mycmd.onecmd("add 4 5") +    9 +    >>> mycmd.onecmd("") +    9 +    >>> mycmd.onecmd("test") +    *** Unknown syntax: test + +    Test for the function emptyline(): +    >>> mycmd.emptyline() +    *** Unknown syntax: test + +    Test for the function default(): +    >>> mycmd.default("default") +    *** Unknown syntax: default + +    Test for the function completedefault(): +    >>> mycmd.completedefault() +    This is the completedefault methode +    >>> mycmd.completenames("a") +    ['add'] + +    Test for the function completenames(): +    >>> mycmd.completenames("12") +    [] +    >>> mycmd.completenames("help") +    ['help', 'help'] + +    Test for the function complete_help(): +    >>> mycmd.complete_help("a") +    ['add'] +    >>> mycmd.complete_help("he") +    ['help', 'help'] +    >>> mycmd.complete_help("12") +    [] + +    Test for the function do_help(): +    >>> mycmd.do_help("testet") +    *** No help on testet +    >>> mycmd.do_help("add") +    help text for add +    >>> mycmd.onecmd("help add") +    help text for add +    >>> mycmd.do_help("") +    <BLANKLINE> +    Documented commands (type help <topic>): +    ======================================== +    add +    <BLANKLINE> +    Undocumented commands: +    ====================== +    exit  help  shell +    <BLANKLINE> + +    Test for the function print_topics(): +    >>> mycmd.print_topics("header", ["command1", "command2"], 2 ,10) +    header +    ====== +    command1 +    command2 +    <BLANKLINE> + +    Test for the function columnize(): +    >>> mycmd.columnize([str(i) for i in xrange(20)]) +    0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19 +    >>> mycmd.columnize([str(i) for i in xrange(20)], 10) +    0  7   14 +    1  8   15 +    2  9   16 +    3  10  17 +    4  11  18 +    5  12  19 +    6  13 + +    This is a interactive test, put some commands in the cmdqueue attribute +    and let it execute +    This test includes the preloop(), postloop(), default(), emptyline(), +    parseline(), do_help() functions +    >>> mycmd.use_rawinput=0 +    >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"] +    >>> mycmd.cmdloop() +    Hello from preloop +    help text for add +    *** invalid number of arguments +    9 +    <BLANKLINE> +    Documented commands (type help <topic>): +    ======================================== +    add +    <BLANKLINE> +    Undocumented commands: +    ====================== +    exit  help  shell +    <BLANKLINE> +    help text for add +    Hello from postloop +    """ + +    def preloop(self): +        print "Hello from preloop" + +    def postloop(self): +        print "Hello from postloop" + +    def completedefault(self, *ignored): +        print "This is the completedefault methode" +        return + +    def complete_command(self): +        print "complete command" +        return + +    def do_shell(self): +        pass + +    def do_add(self, s): +        l = s.split() +        if len(l) != 2: +            print "*** invalid number of arguments" +            return +        try: +            l = [int(i) for i in l] +        except ValueError: +            print "*** arguments should be numbers" +            return +        print l[0]+l[1] + +    def help_add(self): +        print "help text for add" +        return + +    def do_exit(self, arg): +        return True + +def test_main(verbose=None): +    from test import test_support, test_cmd +    test_support.run_doctest(test_cmd, verbose) + +import trace, sys,re,StringIO +def test_coverage(coverdir): +    tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,], +                        trace=0, count=1) +    tracer.run('reload(cmd);test_main()') +    r=tracer.results() +    print "Writing coverage results..." +    r.write_results(show_missing=True, summary=True, coverdir=coverdir) + +if __name__ == "__main__": +    if "-c" in sys.argv: +        test_coverage('/tmp/cmd.cover') +    else: +        test_main() @@ -575,6 +575,7 @@ Neil Schemenauer  David Scherer  Gregor Schmid  Ralf Schmitt +Michael Schneider  Peter Schneider-Kamp  Arvin Schnell  Chad J. Schroeder  | 
