summaryrefslogtreecommitdiff
path: root/Lib/test/test_cmd.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_cmd.py')
-rw-r--r--Lib/test/test_cmd.py186
1 files changed, 186 insertions, 0 deletions
diff --git a/Lib/test/test_cmd.py b/Lib/test/test_cmd.py
new file mode 100644
index 0000000000..5aa1c40fa1
--- /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()