32
class TestHelp(tests.TestCase):
35
tests.TestCase.setUp(self)
36
commands.install_bzr_command_hooks()
32
39
class TestCommandHelp(tests.TestCase):
33
40
"""Tests for help on commands."""
35
42
def test_command_help_includes_see_also(self):
36
43
class cmd_WithSeeAlso(commands.Command):
37
"""A sample command."""
44
__doc__ = """A sample command."""
38
45
_see_also = ['foo', 'bar']
39
46
cmd = cmd_WithSeeAlso()
40
47
helptext = cmd.get_help_text()
41
48
self.assertEndsWith(
43
' -h, --help show help message\n'
50
' -v, --verbose Display more information.\n'
51
' -q, --quiet Only display errors and warnings.\n'
52
' -h, --help Show help message.\n'
45
54
'See also: bar, foo\n')
47
56
def test_get_help_text(self):
48
57
"""Commands have a get_help_text method which returns their help."""
49
58
class cmd_Demo(commands.Command):
50
"""A sample command."""
59
__doc__ = """A sample command."""
52
61
helptext = cmd.get_help_text()
53
self.assertStartsWith(helptext, 'usage: bzr Demo')
54
self.assertEndsWith(helptext, 'show help message\n')
62
self.assertStartsWith(helptext,
63
'Purpose: A sample command.\n'
65
self.assertEndsWith(helptext,
66
' -h, --help Show help message.\n\n')
56
68
def test_command_with_additional_see_also(self):
57
69
class cmd_WithSeeAlso(commands.Command):
58
"""A sample command."""
70
__doc__ = """A sample command."""
59
71
_see_also = ['foo', 'bar']
60
72
cmd = cmd_WithSeeAlso()
61
73
helptext = cmd.get_help_text(['gam'])
62
74
self.assertEndsWith(
64
' -h, --help show help message\n'
76
' -v, --verbose Display more information.\n'
77
' -q, --quiet Only display errors and warnings.\n'
78
' -h, --help Show help message.\n'
66
80
'See also: bar, foo, gam\n')
68
82
def test_command_only_additional_see_also(self):
69
83
class cmd_WithSeeAlso(commands.Command):
70
"""A sample command."""
84
__doc__ = """A sample command."""
71
85
cmd = cmd_WithSeeAlso()
72
86
helptext = cmd.get_help_text(['gam'])
73
87
self.assertEndsWith(
75
' -h, --help show help message\n'
89
' -v, --verbose Display more information.\n'
90
' -q, --quiet Only display errors and warnings.\n'
91
' -h, --help Show help message.\n'
79
95
def test_get_help_topic(self):
80
96
"""The help topic for a Command is its name()."""
81
97
class cmd_foo_bar(commands.Command):
82
"""A sample command."""
98
__doc__ = """A sample command."""
83
99
cmd = cmd_foo_bar()
84
100
self.assertEqual(cmd.name(), cmd.get_help_topic())
87
class TestRegisteredTopic(tests.TestCase):
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.
116
A code block follows.
123
helptext = cmd.get_help_text()
126
'Purpose: A sample command.\n'
130
' --usage Show usage message and options.\n'
131
' -v, --verbose Display more information.\n'
132
' -q, --quiet Only display errors and warnings.\n'
133
' -h, --help Show help message.\n'
144
' A code block follows.\n'
146
' bzr Demo something\n'
148
helptext = cmd.get_help_text(plain=False)
149
self.assertEquals(helptext,
150
':Purpose: A sample command.\n'
154
' --usage Show usage message and options.\n'
155
' -v, --verbose Display more information.\n'
156
' -q, --quiet Only display errors and warnings.\n'
157
' -h, --help Show help message.\n'
168
' A code block follows.\n'
172
' bzr Demo something\n'
175
def test_concise_help_text(self):
176
"""Concise help text excludes the descriptive sections."""
177
class cmd_Demo(commands.Command):
178
__doc__ = """A sample command.
188
helptext = cmd.get_help_text()
189
self.assertEqualDiff(
191
'Purpose: A sample command.\n'
195
' --usage Show usage message and options.\n'
196
' -v, --verbose Display more information.\n'
197
' -q, --quiet Only display errors and warnings.\n'
198
' -h, --help Show help message.\n'
208
helptext = cmd.get_help_text(verbose=False)
209
self.assertEquals(helptext,
210
'Purpose: A sample command.\n'
214
' --usage Show usage message and options.\n'
215
' -v, --verbose Display more information.\n'
216
' -q, --quiet Only display errors and warnings.\n'
217
' -h, --help Show help message.\n'
219
'See bzr help Demo for more details and examples.\n'
222
def test_help_custom_section_ordering(self):
223
"""Custom descriptive sections should remain in the order given."""
224
class cmd_Demo(commands.Command):
225
__doc__ = """A sample command.
230
Interesting stuff about formats.
238
Clever things to keep in mind.
241
helptext = cmd.get_help_text()
242
self.assertEqualDiff(
244
'Purpose: A sample command.\n'
248
' --usage Show usage message and options.\n'
249
' -v, --verbose Display more information.\n'
250
' -q, --quiet Only display errors and warnings.\n'
251
' -h, --help Show help message.\n'
257
' Interesting stuff about formats.\n'
265
' Clever things to keep in mind.\n'
268
def test_help_text_custom_usage(self):
269
"""Help text may contain a custom usage section."""
270
class cmd_Demo(commands.Command):
271
__doc__ = """A sample command.
281
helptext = cmd.get_help_text()
282
self.assertEquals(helptext,
283
'Purpose: A sample command.\n'
285
' cmd Demo [opts] args\n'
291
' --usage Show usage message and options.\n'
292
' -v, --verbose Display more information.\n'
293
' -q, --quiet Only display errors and warnings.\n'
294
' -h, --help Show help message.\n'
297
' Blah blah blah.\n\n')
300
class TestRegisteredTopic(TestHelp):
88
301
"""Tests for the RegisteredTopic class."""
90
303
def test_contruct(self):
91
304
"""Construction takes the help topic name for the registered item."""
93
306
self.assertTrue('basic' in help_topics.topic_registry)
94
307
topic = help_topics.RegisteredTopic('basic')
95
308
self.assertEqual('basic', topic.topic)