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