annotate Lib/test/test_cmd.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 294f8aeb4d4b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
59522
fcfe324663a6 convert shebang lines: python -> python3
Benjamin Peterson <benjamin@python.org>
parents: 58222
diff changeset
1 #!/usr/bin/env python3
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2 """
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
3 Test script for the 'cmd' module
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
4 Original by Michael Schneider
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
5 """
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
7
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
8 import cmd
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
9 import sys
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
10 import re
63399
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
11 import unittest
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
12 import io
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59522
diff changeset
13 from test import support
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
14
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
15 class samplecmdclass(cmd.Cmd):
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
16 """
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
17 Instance the sampleclass:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
18 >>> mycmd = samplecmdclass()
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
19
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
20 Test for the function parseline():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
21 >>> mycmd.parseline("")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
22 (None, None, '')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
23 >>> mycmd.parseline("?")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
24 ('help', '', 'help ')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
25 >>> mycmd.parseline("?help")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
26 ('help', 'help', 'help help')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
27 >>> mycmd.parseline("!")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
28 ('shell', '', 'shell ')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
29 >>> mycmd.parseline("!command")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
30 ('shell', 'command', 'shell command')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
31 >>> mycmd.parseline("func")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32 ('func', '', 'func')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
33 >>> mycmd.parseline("func arg1")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
34 ('func', 'arg1', 'func arg1')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
37 Test for the function onecmd():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
38 >>> mycmd.onecmd("")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
39 >>> mycmd.onecmd("add 4 5")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
40 9
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
41 >>> mycmd.onecmd("")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
42 9
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
43 >>> mycmd.onecmd("test")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
44 *** Unknown syntax: test
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
45
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
46 Test for the function emptyline():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
47 >>> mycmd.emptyline()
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
48 *** Unknown syntax: test
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
49
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
50 Test for the function default():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
51 >>> mycmd.default("default")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
52 *** Unknown syntax: default
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
53
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
54 Test for the function completedefault():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
55 >>> mycmd.completedefault()
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
56 This is the completedefault methode
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
57 >>> mycmd.completenames("a")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
58 ['add']
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
59
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
60 Test for the function completenames():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
61 >>> mycmd.completenames("12")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
62 []
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
63 >>> mycmd.completenames("help")
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
64 ['help']
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
65
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
66 Test for the function complete_help():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
67 >>> mycmd.complete_help("a")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
68 ['add']
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
69 >>> mycmd.complete_help("he")
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
70 ['help']
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
71 >>> mycmd.complete_help("12")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
72 []
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
73 >>> sorted(mycmd.complete_help(""))
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
74 ['add', 'exit', 'help', 'shell']
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
75
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
76 Test for the function do_help():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
77 >>> mycmd.do_help("testet")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
78 *** No help on testet
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
79 >>> mycmd.do_help("add")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
80 help text for add
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
81 >>> mycmd.onecmd("help add")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
82 help text for add
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
83 >>> mycmd.do_help("")
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
84 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
85 Documented commands (type help <topic>):
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
86 ========================================
64576
f8c896ad787f Add docstring to cmd.Cmd.do_help()
Raymond Hettinger <python@rcn.com>
parents: 63396
diff changeset
87 add help
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
88 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
89 Undocumented commands:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
90 ======================
64576
f8c896ad787f Add docstring to cmd.Cmd.do_help()
Raymond Hettinger <python@rcn.com>
parents: 63396
diff changeset
91 exit shell
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
92 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
93
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
94 Test for the function print_topics():
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
95 >>> mycmd.print_topics("header", ["command1", "command2"], 2 ,10)
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
96 header
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
97 ======
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
98 command1
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
99 command2
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
100 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
101
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
102 Test for the function columnize():
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
103 >>> mycmd.columnize([str(i) for i in range(20)])
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
104 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
105 >>> mycmd.columnize([str(i) for i in range(20)], 10)
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
106 0 7 14
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
107 1 8 15
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
108 2 9 16
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
109 3 10 17
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
110 4 11 18
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
111 5 12 19
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
112 6 13
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
113
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
114 This is a interactive test, put some commands in the cmdqueue attribute
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
115 and let it execute
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
116 This test includes the preloop(), postloop(), default(), emptyline(),
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
117 parseline(), do_help() functions
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
118 >>> mycmd.use_rawinput=0
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
119 >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"]
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
120 >>> mycmd.cmdloop()
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
121 Hello from preloop
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
122 help text for add
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
123 *** invalid number of arguments
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
124 9
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
125 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
126 Documented commands (type help <topic>):
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
127 ========================================
64576
f8c896ad787f Add docstring to cmd.Cmd.do_help()
Raymond Hettinger <python@rcn.com>
parents: 63396
diff changeset
128 add help
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
129 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
130 Undocumented commands:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
131 ======================
64576
f8c896ad787f Add docstring to cmd.Cmd.do_help()
Raymond Hettinger <python@rcn.com>
parents: 63396
diff changeset
132 exit shell
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
133 <BLANKLINE>
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
134 help text for add
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
135 Hello from postloop
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
136 """
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
137
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
138 def preloop(self):
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
139 print("Hello from preloop")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
140
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
141 def postloop(self):
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
142 print("Hello from postloop")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
143
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
144 def completedefault(self, *ignored):
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
145 print("This is the completedefault methode")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
146
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
147 def complete_command(self):
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
148 print("complete command")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
149
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
150 def do_shell(self, s):
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
151 pass
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
152
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
153 def do_add(self, s):
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
154 l = s.split()
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
155 if len(l) != 2:
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
156 print("*** invalid number of arguments")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
157 return
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
158 try:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
159 l = [int(i) for i in l]
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
160 except ValueError:
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
161 print("*** arguments should be numbers")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
162 return
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
163 print(l[0]+l[1])
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
164
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
165 def help_add(self):
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
166 print("help text for add")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
167 return
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
168
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
169 def do_exit(self, arg):
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
170 return True
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
171
63399
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
172
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
173 class TestAlternateInput(unittest.TestCase):
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
174
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
175 class simplecmd(cmd.Cmd):
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
176
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
177 def do_print(self, args):
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
178 print(args, file=self.stdout)
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
179
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
180 def do_EOF(self, args):
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
181 return True
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
182
75023
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
183
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
184 class simplecmd2(simplecmd):
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
185
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
186 def do_EOF(self, args):
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
187 print('*** Unknown syntax: EOF', file=self.stdout)
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
188 return True
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
189
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
190
63399
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
191 def test_file_with_missing_final_nl(self):
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
192 input = io.StringIO("print test\nprint test2")
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
193 output = io.StringIO()
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
194 cmd = self.simplecmd(stdin=input, stdout=output)
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
195 cmd.use_rawinput = False
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
196 cmd.cmdloop()
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
197 self.assertMultiLineEqual(output.getvalue(),
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
198 ("(Cmd) test\n"
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
199 "(Cmd) test2\n"
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
200 "(Cmd) "))
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
201
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
202
75023
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
203 def test_input_reset_at_EOF(self):
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
204 input = io.StringIO("print test\nprint test2")
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
205 output = io.StringIO()
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
206 cmd = self.simplecmd2(stdin=input, stdout=output)
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
207 cmd.use_rawinput = False
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
208 cmd.cmdloop()
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
209 self.assertMultiLineEqual(output.getvalue(),
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
210 ("(Cmd) test\n"
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
211 "(Cmd) test2\n"
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
212 "(Cmd) *** Unknown syntax: EOF\n"))
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
213 input = io.StringIO("print \n\n")
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
214 output = io.StringIO()
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
215 cmd.stdin = input
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
216 cmd.stdout = output
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
217 cmd.cmdloop()
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
218 self.assertMultiLineEqual(output.getvalue(),
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
219 ("(Cmd) \n"
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
220 "(Cmd) \n"
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
221 "(Cmd) *** Unknown syntax: EOF\n"))
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
222
5af5e6b2c053 Test for issue #13500
Jesus Cea <jcea@jcea.es>
parents: 68257
diff changeset
223
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
224 def test_main(verbose=None):
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59522
diff changeset
225 from test import test_cmd
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45471
diff changeset
226 support.run_doctest(test_cmd, verbose)
63399
edda7596c831 Merged revisions 83380 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 47201
diff changeset
227 support.run_unittest(TestAlternateInput)
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
228
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
229 def test_coverage(coverdir):
61073
493bb4585e38 Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59522
diff changeset
230 trace = support.import_module('trace')
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 75023
diff changeset
231 tracer=trace.Trace(ignoredirs=[sys.base_prefix, sys.base_exec_prefix,],
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
232 trace=0, count=1)
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
233 tracer.run('reload(cmd);test_main()')
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
234 r=tracer.results()
44106
40fcaadfb166 Fixed merge accident. Next time I'm going to run the entire test suite ...
Christian Heimes <christian@cheimes.de>
parents: 44104
diff changeset
235 print("Writing coverage results...")
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
236 r.write_results(show_missing=True, summary=True, coverdir=coverdir)
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
237
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
238 if __name__ == "__main__":
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
239 if "-c" in sys.argv:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
240 test_coverage('/tmp/cmd.cover')
58222
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
241 elif "-i" in sys.argv:
f2d54096dc8c Merged revisions 77185-77188,77262,77313,77317,77331-77333,77337-77338 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
242 samplecmdclass().cmdloop()
44104
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
243 else:
ff1766eb2fce Merged revisions 59259-59274 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
244 test_main()