PageRenderTime 36ms CodeModel.GetById 13ms app.highlight 16ms RepoModel.GetById 1ms app.codeStats 0ms

/Lib/test/test_cmd.py

http://unladen-swallow.googlecode.com/
Python | 185 lines | 183 code | 0 blank | 2 comment | 0 complexity | 552ec73153ddb536c60ff8077835623b MD5 | raw file
  1#!/usr/bin/env python
  2"""
  3Test script for the 'cmd' module
  4Original by Michael Schneider
  5"""
  6
  7
  8import cmd
  9import sys
 10
 11class samplecmdclass(cmd.Cmd):
 12    """
 13    Instance the sampleclass:
 14    >>> mycmd = samplecmdclass()
 15
 16    Test for the function parseline():
 17    >>> mycmd.parseline("")
 18    (None, None, '')
 19    >>> mycmd.parseline("?")
 20    ('help', '', 'help ')
 21    >>> mycmd.parseline("?help")
 22    ('help', 'help', 'help help')
 23    >>> mycmd.parseline("!")
 24    ('shell', '', 'shell ')
 25    >>> mycmd.parseline("!command")
 26    ('shell', 'command', 'shell command')
 27    >>> mycmd.parseline("func")
 28    ('func', '', 'func')
 29    >>> mycmd.parseline("func arg1")
 30    ('func', 'arg1', 'func arg1')
 31
 32
 33    Test for the function onecmd():
 34    >>> mycmd.onecmd("")
 35    >>> mycmd.onecmd("add 4 5")
 36    9
 37    >>> mycmd.onecmd("")
 38    9
 39    >>> mycmd.onecmd("test")
 40    *** Unknown syntax: test
 41
 42    Test for the function emptyline():
 43    >>> mycmd.emptyline()
 44    *** Unknown syntax: test
 45
 46    Test for the function default():
 47    >>> mycmd.default("default")
 48    *** Unknown syntax: default
 49
 50    Test for the function completedefault():
 51    >>> mycmd.completedefault()
 52    This is the completedefault methode
 53    >>> mycmd.completenames("a")
 54    ['add']
 55
 56    Test for the function completenames():
 57    >>> mycmd.completenames("12")
 58    []
 59    >>> mycmd.completenames("help")
 60    ['help', 'help']
 61
 62    Test for the function complete_help():
 63    >>> mycmd.complete_help("a")
 64    ['add']
 65    >>> mycmd.complete_help("he")
 66    ['help', 'help']
 67    >>> mycmd.complete_help("12")
 68    []
 69
 70    Test for the function do_help():
 71    >>> mycmd.do_help("testet")
 72    *** No help on testet
 73    >>> mycmd.do_help("add")
 74    help text for add
 75    >>> mycmd.onecmd("help add")
 76    help text for add
 77    >>> mycmd.do_help("")
 78    <BLANKLINE>
 79    Documented commands (type help <topic>):
 80    ========================================
 81    add
 82    <BLANKLINE>
 83    Undocumented commands:
 84    ======================
 85    exit  help  shell
 86    <BLANKLINE>
 87
 88    Test for the function print_topics():
 89    >>> mycmd.print_topics("header", ["command1", "command2"], 2 ,10)
 90    header
 91    ======
 92    command1
 93    command2
 94    <BLANKLINE>
 95
 96    Test for the function columnize():
 97    >>> mycmd.columnize([str(i) for i in xrange(20)])
 98    0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19
 99    >>> mycmd.columnize([str(i) for i in xrange(20)], 10)
100    0  7   14
101    1  8   15
102    2  9   16
103    3  10  17
104    4  11  18
105    5  12  19
106    6  13
107
108    This is a interactive test, put some commands in the cmdqueue attribute
109    and let it execute
110    This test includes the preloop(), postloop(), default(), emptyline(),
111    parseline(), do_help() functions
112    >>> mycmd.use_rawinput=0
113    >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"]
114    >>> mycmd.cmdloop()
115    Hello from preloop
116    help text for add
117    *** invalid number of arguments
118    9
119    <BLANKLINE>
120    Documented commands (type help <topic>):
121    ========================================
122    add
123    <BLANKLINE>
124    Undocumented commands:
125    ======================
126    exit  help  shell
127    <BLANKLINE>
128    help text for add
129    Hello from postloop
130    """
131
132    def preloop(self):
133        print "Hello from preloop"
134
135    def postloop(self):
136        print "Hello from postloop"
137
138    def completedefault(self, *ignored):
139        print "This is the completedefault methode"
140        return
141
142    def complete_command(self):
143        print "complete command"
144        return
145
146    def do_shell(self):
147        pass
148
149    def do_add(self, s):
150        l = s.split()
151        if len(l) != 2:
152            print "*** invalid number of arguments"
153            return
154        try:
155            l = [int(i) for i in l]
156        except ValueError:
157            print "*** arguments should be numbers"
158            return
159        print l[0]+l[1]
160
161    def help_add(self):
162        print "help text for add"
163        return
164
165    def do_exit(self, arg):
166        return True
167
168def test_main(verbose=None):
169    from test import test_support, test_cmd
170    test_support.run_doctest(test_cmd, verbose)
171
172import trace, sys
173def test_coverage(coverdir):
174    tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,],
175                        trace=0, count=1)
176    tracer.run('reload(cmd);test_main()')
177    r=tracer.results()
178    print "Writing coverage results..."
179    r.write_results(show_missing=True, summary=True, coverdir=coverdir)
180
181if __name__ == "__main__":
182    if "-c" in sys.argv:
183        test_coverage('/tmp/cmd.cover')
184    else:
185        test_main()