/Lib/test/test_cmd.py
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()