32
class TestHelp(tests.TestCase):
35
tests.TestCase.setUp(self)
36
commands.install_bzr_command_hooks()
39
32
class TestCommandHelp(tests.TestCase):
40
33
"""Tests for help on commands."""
42
35
def test_command_help_includes_see_also(self):
43
36
class cmd_WithSeeAlso(commands.Command):
44
__doc__ = """A sample command."""
37
"""A sample command."""
45
38
_see_also = ['foo', 'bar']
46
39
cmd = cmd_WithSeeAlso()
47
40
helptext = cmd.get_help_text()
48
41
self.assertEndsWith(
50
' -v, --verbose Display more information.\n'
51
' -q, --quiet Only display errors and warnings.\n'
52
' -h, --help Show help message.\n'
43
' -h, --help show help message\n'
54
45
'See also: bar, foo\n')
56
47
def test_get_help_text(self):
57
48
"""Commands have a get_help_text method which returns their help."""
58
49
class cmd_Demo(commands.Command):
59
__doc__ = """A sample command."""
50
"""A sample command."""
61
52
helptext = cmd.get_help_text()
62
self.assertStartsWith(helptext,
63
'Purpose: A sample command.\n'
65
self.assertEndsWith(helptext,
66
' -h, --help Show help message.\n\n')
53
self.assertStartsWith(helptext, 'usage: bzr Demo')
54
self.assertEndsWith(helptext, 'show help message\n')
68
56
def test_command_with_additional_see_also(self):
69
57
class cmd_WithSeeAlso(commands.Command):
70
__doc__ = """A sample command."""
58
"""A sample command."""
71
59
_see_also = ['foo', 'bar']
72
60
cmd = cmd_WithSeeAlso()
73
61
helptext = cmd.get_help_text(['gam'])
74
62
self.assertEndsWith(
76
' -v, --verbose Display more information.\n'
77
' -q, --quiet Only display errors and warnings.\n'
78
' -h, --help Show help message.\n'
64
' -h, --help show help message\n'
80
66
'See also: bar, foo, gam\n')
82
68
def test_command_only_additional_see_also(self):
83
69
class cmd_WithSeeAlso(commands.Command):
84
__doc__ = """A sample command."""
70
"""A sample command."""
85
71
cmd = cmd_WithSeeAlso()
86
72
helptext = cmd.get_help_text(['gam'])
87
73
self.assertEndsWith(
89
' -v, --verbose Display more information.\n'
90
' -q, --quiet Only display errors and warnings.\n'
91
' -h, --help Show help message.\n'
75
' -h, --help show help message\n'
95
79
def test_get_help_topic(self):
96
80
"""The help topic for a Command is its name()."""
97
81
class cmd_foo_bar(commands.Command):
98
__doc__ = """A sample command."""
82
"""A sample command."""
99
83
cmd = cmd_foo_bar()
100
84
self.assertEqual(cmd.name(), cmd.get_help_topic())
102
def test_formatted_help_text(self):
103
"""Help text should be plain text by default."""
104
class cmd_Demo(commands.Command):
105
__doc__ = """A sample command.
117
helptext = cmd.get_help_text()
120
'Purpose: A sample command.\n'
124
' --usage Show usage message and options.\n'
125
' -v, --verbose Display more information.\n'
126
' -q, --quiet Only display errors and warnings.\n'
127
' -h, --help Show help message.\n'
138
helptext = cmd.get_help_text(plain=False)
139
self.assertEquals(helptext,
140
':Purpose: A sample command.\n'
144
' --usage Show usage message and options.\n'
145
' -v, --verbose Display more information.\n'
146
' -q, --quiet Only display errors and warnings.\n'
147
' -h, --help Show help message.\n'
159
def test_concise_help_text(self):
160
"""Concise help text excludes the descriptive sections."""
161
class cmd_Demo(commands.Command):
162
__doc__ = """A sample command.
172
helptext = cmd.get_help_text()
173
self.assertEqualDiff(
175
'Purpose: A sample command.\n'
179
' --usage Show usage message and options.\n'
180
' -v, --verbose Display more information.\n'
181
' -q, --quiet Only display errors and warnings.\n'
182
' -h, --help Show help message.\n'
192
helptext = cmd.get_help_text(verbose=False)
193
self.assertEquals(helptext,
194
'Purpose: A sample command.\n'
198
' --usage Show usage message and options.\n'
199
' -v, --verbose Display more information.\n'
200
' -q, --quiet Only display errors and warnings.\n'
201
' -h, --help Show help message.\n'
203
'See bzr help Demo for more details and examples.\n'
206
def test_help_custom_section_ordering(self):
207
"""Custom descriptive sections should remain in the order given."""
208
class cmd_Demo(commands.Command):
209
__doc__ = """A sample command.
214
Interesting stuff about formats.
222
Clever things to keep in mind.
225
helptext = cmd.get_help_text()
226
self.assertEqualDiff(
228
'Purpose: A sample command.\n'
232
' --usage Show usage message and options.\n'
233
' -v, --verbose Display more information.\n'
234
' -q, --quiet Only display errors and warnings.\n'
235
' -h, --help Show help message.\n'
241
' Interesting stuff about formats.\n'
249
' Clever things to keep in mind.\n'
252
def test_help_text_custom_usage(self):
253
"""Help text may contain a custom usage section."""
254
class cmd_Demo(commands.Command):
255
__doc__ = """A sample command.
265
helptext = cmd.get_help_text()
266
self.assertEquals(helptext,
267
'Purpose: A sample command.\n'
269
' cmd Demo [opts] args\n'
275
' --usage Show usage message and options.\n'
276
' -v, --verbose Display more information.\n'
277
' -q, --quiet Only display errors and warnings.\n'
278
' -h, --help Show help message.\n'
281
' Blah blah blah.\n\n')
284
class TestRegisteredTopic(TestHelp):
87
class TestRegisteredTopic(tests.TestCase):
285
88
"""Tests for the RegisteredTopic class."""
287
90
def test_contruct(self):
288
91
"""Construction takes the help topic name for the registered item."""
290
93
self.assertTrue('basic' in help_topics.topic_registry)
291
94
topic = help_topics.RegisteredTopic('basic')
292
95
self.assertEqual('basic', topic.topic)