~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/doc_generate/writers/test_texinfo.py

  • Committer: Vincent Ladeuil
  • Date: 2012-03-13 09:07:18 UTC
  • mfrom: (6437.23.26 2.5)
  • mto: This revision was merged to the branch mainline in revision 6499.
  • Revision ID: v.ladeuil+lp@free.fr-20120313090718-2e5wf4d6otbh2k2r
Merge 2.5 branch including bugfix for #940164 and #944696

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2010, 2011 Canonical Ltd
2
 
#
3
 
# This program is free software; you can redistribute it and/or modify
4
 
# it under the terms of the GNU General Public License as published by
5
 
# the Free Software Foundation; either version 2 of the License, or
6
 
# (at your option) any later version.
7
 
#
8
 
# This program is distributed in the hope that it will be useful,
9
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
# GNU General Public License for more details.
12
 
#
13
 
# You should have received a copy of the GNU General Public License
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
16
 
 
17
 
"""sphinx texinfo writer tests."""
18
 
 
19
 
from bzrlib import tests
20
 
from bzrlib.tests import (
21
 
    doc_generate as test_dg, # Avoid clash with from bzrlib import doc_generate
22
 
    )
23
 
 
24
 
 
25
 
class TestTextGeneration(test_dg.TestSphinx):
26
 
 
27
 
    def test_special_chars(self):
28
 
        self.create_content("A '@' a '{' and a '}'")
29
 
        self.assertContent("A '@@' a '@{' and a '@}'")
30
 
 
31
 
    def test_emphasis(self):
32
 
        self.create_content('*important*')
33
 
        self.assertContent('@emph{important}')
34
 
 
35
 
    def test_strong(self):
36
 
        self.create_content('**very important**')
37
 
        self.assertContent('@strong{very important}')
38
 
 
39
 
    def test_literal(self):
40
 
        self.create_content('the command is ``foo``')
41
 
        self.assertContent('the command is @code{foo}')
42
 
 
43
 
    def test_paragraphs(self):
44
 
        self.create_content('''\
45
 
This is a paragraph.
46
 
 
47
 
This is another one.
48
 
''')
49
 
        self.assertContent('''\
50
 
This is a paragraph.
51
 
 
52
 
This is another one.''')
53
 
 
54
 
    def test_literal_block(self):
55
 
        self.create_content('''\
56
 
Do this::
57
 
 
58
 
   bzr xxx
59
 
   bzr yyy
60
 
''')
61
 
        self.assertContent('''\
62
 
Do this:
63
 
 
64
 
@samp{bzr xxx
65
 
bzr yyy}
66
 
 
67
 
''',
68
 
                           end='')
69
 
 
70
 
    def test_block_quote(self):
71
 
        self.create_content('''\
72
 
This is an ordinary paragraph, introducing a block quote.
73
 
 
74
 
    "It is my business to know things.  That is my trade."
75
 
 
76
 
This is another ordinary paragraph.
77
 
''')
78
 
        self.assertContent('''\
79
 
This is an ordinary paragraph, introducing a block quote.
80
 
 
81
 
@example
82
 
"It is my business to know things.  That is my trade."
83
 
 
84
 
@end example
85
 
 
86
 
This is another ordinary paragraph.
87
 
 
88
 
''',
89
 
                           # examples are not followed by an empty line
90
 
                           end='')
91
 
 
92
 
 
93
 
class TestDocumentAttributesGeneration(test_dg.TestSphinx):
94
 
 
95
 
    def test_title(self):
96
 
        self.create_content('''\
97
 
####################
98
 
Bazaar Release Notes
99
 
####################
100
 
''')
101
 
        self.assertContent('''\
102
 
@node bazaar-release-notes
103
 
@chapter Bazaar Release Notes
104
 
''',
105
 
                           end='')
106
 
 
107
 
 
108
 
class TestListGeneration(test_dg.TestSphinx):
109
 
 
110
 
    def test_bullet_list(self):
111
 
        self.create_content('''\
112
 
* This is a bulleted list.
113
 
* It has two items, the second
114
 
  item uses two lines.
115
 
''')
116
 
        self.assertContent('''\
117
 
@itemize @bullet
118
 
@item
119
 
This is a bulleted list.
120
 
 
121
 
@item
122
 
It has two items, the second
123
 
item uses two lines.
124
 
 
125
 
@end itemize
126
 
''',
127
 
                           end='')
128
 
 
129
 
    def test_enumerated_list(self):
130
 
        self.create_content('''\
131
 
#. This is a numbered list.
132
 
#. It has two items, the second
133
 
   item uses two lines.
134
 
''')
135
 
        self.assertContent('''\
136
 
@enumerate
137
 
@item
138
 
This is a numbered list.
139
 
 
140
 
@item
141
 
It has two items, the second
142
 
item uses two lines.
143
 
 
144
 
@end enumerate
145
 
''',
146
 
                           end='')
147
 
 
148
 
 
149
 
class TestTableGeneration(test_dg.TestSphinx):
150
 
 
151
 
    def test_table(self):
152
 
        self.create_content('''\
153
 
  ===========         ================
154
 
  Prefix              Description
155
 
  ===========         ================
156
 
  first               The first
157
 
  second              The second
158
 
  last                The last
159
 
  ===========         ================
160
 
''')
161
 
        # FIXME: Sphinx bug ? Why are tables enclosed in a block_quote
162
 
        # (translated as an @example).
163
 
        self.assertContent('''\
164
 
@example
165
 
@multitable {xxxxxxxxxxx}{xxxxxxxxxxxxxxxx}
166
 
@headitem Prefix @tab Description
167
 
@item first
168
 
@tab The first
169
 
@item second
170
 
@tab The second
171
 
@item last
172
 
@tab The last
173
 
@end multitable
174
 
@end example''')
175
 
 
176
 
 
177
 
class TestTocTreeGeneration(test_dg.TestSphinx):
178
 
 
179
 
    def test_toctree(self):
180
 
        self.build_tree_contents(
181
 
            [('index.txt', """
182
 
Table of Contents
183
 
=================
184
 
 
185
 
.. toctree::
186
 
   :maxdepth: 1
187
 
 
188
 
   bzr 0.0.8 <bzr-0.0.8>
189
 
"""),
190
 
             ('bzr-0.0.8.txt', """
191
 
 
192
 
bzr 0.0.8
193
 
*********
194
 
 
195
 
Improvements
196
 
============
197
 
 
198
 
* Adding a file whose parent directory is not versioned will
199
 
  implicitly add the parent, and so on up to the root.
200
 
"""),
201
 
             ])
202
 
        app, out, err = self.make_sphinx()
203
 
        self.build(app)
204
 
        self.assertFileEqual("""\
205
 
This file has been converted using a beta rst->texinfo converter. 
206
 
Most of the info links are currently bogus, don't report bugs about them,
207
 
this is currently worked on.
208
 
@node Top
209
 
@top Placeholder
210
 
@node table-of-contents
211
 
@chapter Table of Contents
212
 
@menu
213
 
* bzr 0.0.8: (bzr-0.0.8.info)bzr 0.0.8. 
214
 
@end menu
215
 
""",
216
 
                             'index.texi')
217
 
        self.assertFileEqual("""\
218
 
This file has been converted using a beta rst->texinfo converter. 
219
 
Most of the info links are currently bogus, don't report bugs about them,
220
 
this is currently worked on.
221
 
@node Top
222
 
@top Placeholder
223
 
@node bzr-0-0-8
224
 
@chapter bzr 0.0.8
225
 
@node improvements
226
 
@section Improvements
227
 
@itemize @bullet
228
 
@item
229
 
Adding a file whose parent directory is not versioned will
230
 
implicitly add the parent, and so on up to the root.
231
 
 
232
 
@end itemize
233
 
""",
234
 
                             'bzr-0.0.8.texi')
235
 
 
236
 
    def test_toctree_empty(self):
237
 
        self.build_tree_contents(
238
 
            [('index.txt', """
239
 
Table of Contents
240
 
=================
241
 
 
242
 
.. toctree::
243
 
   :maxdepth: 1
244
 
""")])
245
 
        app, out, err = self.make_sphinx()
246
 
        self.build(app)
247
 
        self.assertFileEqual("""\
248
 
This file has been converted using a beta rst->texinfo converter. 
249
 
Most of the info links are currently bogus, don't report bugs about them,
250
 
this is currently worked on.
251
 
@node Top
252
 
@top Placeholder
253
 
@node table-of-contents
254
 
@chapter Table of Contents
255
 
""",
256
 
                             'index.texi')
257
 
 
258
 
 
259
 
class TestSections(test_dg.TestSphinx):
260
 
 
261
 
    def test_sections(self):
262
 
        self.create_content('''\
263
 
###########
264
 
Chapter one
265
 
###########
266
 
 
267
 
Chapter introduction.
268
 
 
269
 
***********
270
 
section one
271
 
***********
272
 
 
273
 
The first section.
274
 
 
275
 
 
276
 
subsection one
277
 
==============
278
 
 
279
 
The first subsection.
280
 
 
281
 
subsection two
282
 
==============
283
 
 
284
 
The second subsection.
285
 
 
286
 
subsubsection one
287
 
-----------------
288
 
 
289
 
Here is sus sub section one.
290
 
 
291
 
blob one
292
 
^^^^^^^^
293
 
 
294
 
Far tooo deep to get a name
295
 
 
296
 
thing one
297
 
"""""""""
298
 
 
299
 
No idea how to call that, but sphinx says it's a paragraph.
300
 
''')
301
 
        self.assertContent('''\
302
 
@node chapter-one
303
 
@chapter Chapter one
304
 
Chapter introduction.
305
 
 
306
 
@node section-one
307
 
@section section one
308
 
The first section.
309
 
 
310
 
@node subsection-one
311
 
@subsection subsection one
312
 
The first subsection.
313
 
 
314
 
@node subsection-two
315
 
@subsection subsection two
316
 
The second subsection.
317
 
 
318
 
@node subsubsection-one
319
 
@subsubsection subsubsection one
320
 
Here is sus sub section one.
321
 
 
322
 
@node blob-one
323
 
@heading blob one
324
 
Far tooo deep to get a name
325
 
 
326
 
@node thing-one
327
 
@heading thing one
328
 
No idea how to call that, but sphinx says it's a paragraph.''')
329
 
 
330
 
 
331
 
class TestReferences(test_dg.TestSphinx):
332
 
 
333
 
    def test_external_reference(self):
334
 
        self.create_content('''\
335
 
The `example web site`_ is nice.
336
 
 
337
 
.. _example web site: http://www.example.com/
338
 
''')
339
 
        self.assertContent('''\
340
 
The @uref{http://www.example.com/,example web site} is nice.''')
341
 
 
342
 
 
343
 
    def test_internal_reference(self):
344
 
        self.create_content('''\
345
 
The `example web site`_ contains more examples.
346
 
 
347
 
Example web site
348
 
----------------
349
 
 
350
 
Here we have a lot of nice examples.
351
 
 
352
 
''')
353
 
        self.assertContent('''\
354
 
The example web site (@pxref{example-web-site}) contains more examples.
355
 
 
356
 
@node example-web-site
357
 
@chapter Example web site
358
 
Here we have a lot of nice examples.''')
359