/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_help.py

  • Committer: Robert Collins
  • Date: 2007-07-15 15:40:37 UTC
  • mto: (2592.3.33 repository)
  • mto: This revision was merged to the branch mainline in revision 2624.
  • Revision ID: robertc@robertcollins.net-20070715154037-3ar8g89decddc9su
Make GraphIndex accept nodes as key, value, references, so that the method
signature is closer to what a simple key->value index delivers. Also
change the behaviour when the reference list count is zero to accept
key, value as nodes, and emit key, value to make it identical in that case
to a simple key->value index. This may not be a good idea, but for now it
seems ok.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007-2010 Canonical Ltd
 
1
# Copyright (C) 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Unit tests for the bzrlib.help module."""
18
18
 
29
29
    )
30
30
 
31
31
 
32
 
class TestHelp(tests.TestCase):
33
 
 
34
 
    def setUp(self):
35
 
        tests.TestCase.setUp(self)
36
 
        commands.install_bzr_command_hooks()
37
 
 
38
 
 
39
32
class TestCommandHelp(tests.TestCase):
40
33
    """Tests for help on commands."""
41
34
 
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(
49
42
            helptext,
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'
53
44
            '\n'
54
45
            'See also: bar, foo\n')
55
46
 
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."""
60
51
        cmd = cmd_Demo()
61
52
        helptext = cmd.get_help_text()
62
 
        self.assertStartsWith(helptext,
63
 
            'Purpose: A sample command.\n'
64
 
            'Usage:   bzr Demo')
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')
67
55
 
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(
75
63
            helptext,
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'
79
65
            '\n'
80
66
            'See also: bar, foo, gam\n')
81
67
 
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(
88
74
            helptext,
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'
92
76
            '\n'
93
77
            'See also: gam\n')
94
78
 
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())
101
 
 
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.
106
 
 
107
 
            :Examples:
108
 
                Example 1::
109
 
 
110
 
                    cmd arg1
111
 
 
112
 
                Example 2::
113
 
 
114
 
                    cmd arg2
115
 
            """
116
 
        cmd = cmd_Demo()
117
 
        helptext = cmd.get_help_text()
118
 
        self.assertEquals(
119
 
            helptext,
120
 
            'Purpose: A sample command.\n'
121
 
            'Usage:   bzr Demo\n'
122
 
            '\n'
123
 
            'Options:\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'
128
 
            '\n'
129
 
            'Examples:\n'
130
 
            '    Example 1:\n'
131
 
            '\n'
132
 
            '        cmd arg1\n'
133
 
            '\n'
134
 
            '    Example 2:\n'
135
 
            '\n'
136
 
            '        cmd arg2\n'
137
 
            '\n')
138
 
        helptext = cmd.get_help_text(plain=False)
139
 
        self.assertEquals(helptext,
140
 
            ':Purpose: A sample command.\n'
141
 
            ':Usage:   bzr Demo\n'
142
 
            '\n'
143
 
            ':Options:\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'
148
 
            '\n'
149
 
            ':Examples:\n'
150
 
            '    Example 1::\n'
151
 
            '\n'
152
 
            '        cmd arg1\n'
153
 
            '\n'
154
 
            '    Example 2::\n'
155
 
            '\n'
156
 
            '        cmd arg2\n'
157
 
            '\n')
158
 
 
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.
163
 
 
164
 
            Blah blah blah.
165
 
 
166
 
            :Examples:
167
 
                Example 1::
168
 
 
169
 
                    cmd arg1
170
 
            """
171
 
        cmd = cmd_Demo()
172
 
        helptext = cmd.get_help_text()
173
 
        self.assertEqualDiff(
174
 
            helptext,
175
 
            'Purpose: A sample command.\n'
176
 
            'Usage:   bzr Demo\n'
177
 
            '\n'
178
 
            'Options:\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'
183
 
            '\n'
184
 
            'Description:\n'
185
 
            '  Blah blah blah.\n'
186
 
            '\n'
187
 
            'Examples:\n'
188
 
            '    Example 1:\n'
189
 
            '\n'
190
 
            '        cmd arg1\n'
191
 
            '\n')
192
 
        helptext = cmd.get_help_text(verbose=False)
193
 
        self.assertEquals(helptext,
194
 
            'Purpose: A sample command.\n'
195
 
            'Usage:   bzr Demo\n'
196
 
            '\n'
197
 
            'Options:\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'
202
 
            '\n'
203
 
            'See bzr help Demo for more details and examples.\n'
204
 
            '\n')
205
 
 
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.
210
 
 
211
 
            Blah blah blah.
212
 
 
213
 
            :Formats:
214
 
              Interesting stuff about formats.
215
 
 
216
 
            :Examples:
217
 
              Example 1::
218
 
 
219
 
                cmd arg1
220
 
 
221
 
            :Tips:
222
 
              Clever things to keep in mind.
223
 
            """
224
 
        cmd = cmd_Demo()
225
 
        helptext = cmd.get_help_text()
226
 
        self.assertEqualDiff(
227
 
            helptext,
228
 
            'Purpose: A sample command.\n'
229
 
            'Usage:   bzr Demo\n'
230
 
            '\n'
231
 
            'Options:\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'
236
 
            '\n'
237
 
            'Description:\n'
238
 
            '  Blah blah blah.\n'
239
 
            '\n'
240
 
            'Formats:\n'
241
 
            '  Interesting stuff about formats.\n'
242
 
            '\n'
243
 
            'Examples:\n'
244
 
            '  Example 1:\n'
245
 
            '\n'
246
 
            '    cmd arg1\n'
247
 
            '\n'
248
 
            'Tips:\n'
249
 
            '  Clever things to keep in mind.\n'
250
 
            '\n')
251
 
 
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.
256
 
 
257
 
            :Usage:
258
 
                cmd Demo [opts] args
259
 
 
260
 
                cmd Demo -h
261
 
 
262
 
            Blah blah blah.
263
 
            """
264
 
        cmd = cmd_Demo()
265
 
        helptext = cmd.get_help_text()
266
 
        self.assertEquals(helptext,
267
 
            'Purpose: A sample command.\n'
268
 
            'Usage:\n'
269
 
            '    cmd Demo [opts] args\n'
270
 
            '\n'
271
 
            '    cmd Demo -h\n'
272
 
            '\n'
273
 
            '\n'
274
 
            'Options:\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'
279
 
            '\n'
280
 
            'Description:\n'
281
 
            '  Blah blah blah.\n\n')
282
 
 
283
 
 
284
 
class TestRegisteredTopic(TestHelp):
 
85
    
 
86
 
 
87
class TestRegisteredTopic(tests.TestCase):
285
88
    """Tests for the RegisteredTopic class."""
286
89
 
287
90
    def test_contruct(self):
288
91
        """Construction takes the help topic name for the registered item."""
289
 
        # validate our test
 
92
        # validate our test 
290
93
        self.assertTrue('basic' in help_topics.topic_registry)
291
94
        topic = help_topics.RegisteredTopic('basic')
292
95
        self.assertEqual('basic', topic.topic)
304
107
            '\n'
305
108
            'See also: bar, foo\n')
306
109
 
307
 
    def test_get_help_text_loaded_from_file(self):
308
 
        # Pick a known topic stored in an external file
309
 
        topic = help_topics.RegisteredTopic('authentication')
310
 
        self.assertStartsWith(topic.get_help_text(),
311
 
            'Authentication Settings\n'
312
 
            '=======================\n'
313
 
            '\n')
314
 
 
315
110
    def test_get_help_topic(self):
316
111
        """The help topic for a RegisteredTopic is its topic from construction."""
317
112
        topic = help_topics.RegisteredTopic('foobar')
320
115
        self.assertEqual('baz', topic.get_help_topic())
321
116
 
322
117
 
323
 
class TestTopicIndex(TestHelp):
 
118
class TestTopicIndex(tests.TestCase):
324
119
    """Tests for the HelpTopicIndex class."""
325
120
 
326
121
    def test_default_constructable(self):
353
148
        self.assertEqual('', index.prefix)
354
149
 
355
150
 
356
 
class TestCommandIndex(TestHelp):
 
151
class TestCommandIndex(tests.TestCase):
357
152
    """Tests for the HelpCommandIndex class."""
358
153
 
359
154
    def test_default_constructable(self):