1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# coding=utf-8
# flake8: noqa E302
"""
Test CommandSet
"""
from typing import List
import pytest
import cmd2
from cmd2 import utils
# Python 3.5 had some regressions in the unitest.mock module, so use 3rd party mock if available
try:
import mock
except ImportError:
from unittest import mock
@cmd2.register_command
@cmd2.with_category("AAA")
def do_unbound(cmd: cmd2.Cmd, statement: cmd2.Statement):
"""
This is an example of registering an unbound function
:param cmd:
:param statement:
:return:
"""
cmd.poutput('Unbound Command: {}'.format(statement.args))
@cmd2.with_default_category('Command Set')
class TestCommandSet(cmd2.CommandSet):
def do_apple(self, cmd: cmd2.Cmd, statement: cmd2.Statement):
cmd.poutput('Apple!')
def do_banana(self, cmd: cmd2.Cmd, statement: cmd2.Statement):
"""Banana Command"""
cmd.poutput('Banana!!')
def do_cranberry(self, cmd: cmd2.Cmd, statement: cmd2.Statement):
cmd.poutput('Cranberry!!')
def help_cranberry(self, cmd: cmd2.Cmd):
cmd.stdout.write('This command does diddly squat...\n')
def do_durian(self, cmd: cmd2.Cmd, statement: cmd2.Statement):
"""Durian Command"""
cmd.poutput('Durian!!')
def complete_durian(self, cmd: cmd2.Cmd, text: str, line: str, begidx: int, endidx: int) -> List[str]:
return utils.basic_complete(text, line, begidx, endidx, ['stinks', 'smells', 'disgusting'])
@cmd2.with_category('Alone')
def do_elderberry(self, cmd: cmd2.Cmd, statement: cmd2.Statement):
cmd.poutput('Elderberry!!')
class WithCommandSets(cmd2.Cmd):
"""Class for testing custom help_* methods which override docstring help."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@pytest.fixture
def command_sets_app():
app = WithCommandSets()
return app
def test_autoload_commands(command_sets_app):
cmds_cats, cmds_doc, cmds_undoc, help_topics = command_sets_app._build_command_info()
assert 'AAA' in cmds_cats
assert 'unbound' in cmds_cats['AAA']
assert 'Alone' in cmds_cats
assert 'elderberry' in cmds_cats['Alone']
assert 'Command Set' in cmds_cats
assert 'cranberry' in cmds_cats['Command Set']
|