~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: 2010-07-06 13:22:32 UTC
  • mto: (5355.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5356.
  • Revision ID: v.ladeuil+lp@free.fr-20100706132232-d9byjdy2i882asgr
Separate builder and writer tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (C) 2010 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.tests import (
 
20
    doc_generate as test_dg, # Avoid clash with from bzrlib import doc_generate
 
21
    )
 
22
 
 
23
 
 
24
class TestTextGeneration(test_dg.TestSphinx):
 
25
 
 
26
    def test_special_chars(self):
 
27
        self.create_content("A '@' a '{' and a '}'")
 
28
        self.assertContent("A '@@' a '@{' and a '@}'")
 
29
 
 
30
    def test_emphasis(self):
 
31
        self.create_content('*important*')
 
32
        self.assertContent('@emph{important}')
 
33
 
 
34
    def test_strong(self):
 
35
        self.create_content('**very important**')
 
36
        self.assertContent('@strong{very important}')
 
37
 
 
38
    def test_literal(self):
 
39
        self.create_content('the command is ``foo``')
 
40
        self.assertContent('the command is @code{foo}')
 
41
 
 
42
    def test_paragraphs(self):
 
43
        self.create_content('''\
 
44
This is a paragraph.
 
45
 
 
46
This is another one.
 
47
''')
 
48
        self.assertContent('''\
 
49
This is a paragraph.
 
50
 
 
51
This is another one.''')
 
52
 
 
53
    def test_literal_block(self):
 
54
        self.create_content('''\
 
55
Do this::
 
56
 
 
57
   bzr xxx
 
58
   bzr yyy
 
59
''')
 
60
        self.assertContent('''\
 
61
Do this:
 
62
 
 
63
@samp{bzr xxx
 
64
bzr yyy}
 
65
 
 
66
''',
 
67
                           end='')
 
68
 
 
69
    def test_block_quote(self):
 
70
        self.create_content('''\
 
71
This is an ordinary paragraph, introducing a block quote.
 
72
 
 
73
    "It is my business to know things.  That is my trade."
 
74
 
 
75
This is another ordinary paragraph.
 
76
''')
 
77
        self.assertContent('''\
 
78
This is an ordinary paragraph, introducing a block quote.
 
79
 
 
80
@example
 
81
"It is my business to know things.  That is my trade."
 
82
 
 
83
@end example
 
84
 
 
85
This is another ordinary paragraph.
 
86
 
 
87
''',
 
88
                           # examples are not followed by an empty line
 
89
                           end='')
 
90
 
 
91
 
 
92
class TestDocumentAttributesGeneration(test_dg.TestSphinx):
 
93
 
 
94
    def test_title(self):
 
95
        self.create_content('''\
 
96
####################
 
97
Bazaar Release Notes
 
98
####################
 
99
''')
 
100
        self.assertContent('@chapter Bazaar Release Notes\n', end='')
 
101
 
 
102
 
 
103
class TestListGeneration(test_dg.TestSphinx):
 
104
 
 
105
    def test_bullet_list(self):
 
106
        self.create_content('''\
 
107
* This is a bulleted list.
 
108
* It has two items, the second
 
109
  item uses two lines.
 
110
''')
 
111
        self.assertContent('''\
 
112
@itemize @bullet
 
113
@item
 
114
This is a bulleted list.
 
115
 
 
116
@item
 
117
It has two items, the second
 
118
item uses two lines.
 
119
 
 
120
@end itemize
 
121
''',
 
122
                           end='')
 
123
 
 
124
    def test_enumerated_list(self):
 
125
        self.create_content('''\
 
126
#. This is a numbered list.
 
127
#. It has two items, the second
 
128
   item uses two lines.
 
129
''')
 
130
        self.assertContent('''\
 
131
@enumerate
 
132
@item
 
133
This is a numbered list.
 
134
 
 
135
@item
 
136
It has two items, the second
 
137
item uses two lines.
 
138
 
 
139
@end enumerate
 
140
''',
 
141
                           end='')
 
142
 
 
143
 
 
144
class TestTableGeneration(test_dg.TestSphinx):
 
145
 
 
146
    def test_table(self):
 
147
        self.create_content('''\
 
148
  ===========         ================
 
149
  Prefix              Description
 
150
  ===========         ================
 
151
  first               The first
 
152
  second              The second
 
153
  last                The last
 
154
  ===========         ================
 
155
''')
 
156
        # FIXME: Sphinx bug ? Why are tables enclosed in a block_quote
 
157
        # (translated as an @example).
 
158
        self.assertContent('''\
 
159
@example
 
160
@multitable {xxxxxxxxxxx}{xxxxxxxxxxxxxxxx}
 
161
@headitem Prefix @tab Description
 
162
@item first
 
163
@tab The first
 
164
@item second
 
165
@tab The second
 
166
@item last
 
167
@tab The last
 
168
@end multitable
 
169
@end example''')
 
170
 
 
171
 
 
172
class TestTocTreeGeneration(test_dg.TestSphinx):
 
173
 
 
174
    def test_toctree(self):
 
175
        self.build_tree_contents(
 
176
            [('index.txt', """
 
177
Table of Contents
 
178
=================
 
179
 
 
180
.. toctree::
 
181
   :maxdepth: 1
 
182
 
 
183
   bzr 0.0.8 <bzr-0.0.8>
 
184
"""),
 
185
             ('bzr-0.0.8.txt', """
 
186
 
 
187
bzr 0.0.8
 
188
*********
 
189
 
 
190
Improvements
 
191
============
 
192
 
 
193
* Adding a file whose parent directory is not versioned will
 
194
  implicitly add the parent, and so on up to the root.
 
195
"""),
 
196
             ])
 
197
        app, out, err = self.make_sphinx()
 
198
        self.build(app)
 
199
        self.assertFileEqual("""\
 
200
@chapter Table of Contents
 
201
@menu
 
202
* bzr 0.0.8: (bzr-0.0.8.info)bzr 0.0.8. 
 
203
@end menu
 
204
""",
 
205
                             'index.texi')
 
206
        self.assertFileEqual("""\
 
207
@chapter bzr 0.0.8
 
208
@section Improvements
 
209
@itemize @bullet
 
210
@item
 
211
Adding a file whose parent directory is not versioned will
 
212
implicitly add the parent, and so on up to the root.
 
213
 
 
214
@end itemize
 
215
""",
 
216
                             'bzr-0.0.8.texi')
 
217
 
 
218
class TestSections(test_dg.TestSphinx):
 
219
 
 
220
    def test_sections(self):
 
221
        self.create_content('''\
 
222
###########
 
223
Chapter one
 
224
###########
 
225
 
 
226
Chapter introduction.
 
227
 
 
228
***********
 
229
section one
 
230
***********
 
231
 
 
232
The first section.
 
233
 
 
234
 
 
235
subsection one
 
236
==============
 
237
 
 
238
The first subsection.
 
239
 
 
240
subsection two
 
241
==============
 
242
 
 
243
The second subsection.
 
244
 
 
245
subsubsection one
 
246
-----------------
 
247
 
 
248
Here is sus sub section one.
 
249
 
 
250
blob one
 
251
^^^^^^^^
 
252
 
 
253
Far tooo deep to get a name
 
254
 
 
255
thing one
 
256
"""""""""
 
257
 
 
258
No idea how to call that, but sphinx says it's a paragraph.
 
259
''')
 
260
        self.assertContent('''\
 
261
@chapter Chapter one
 
262
Chapter introduction.
 
263
 
 
264
@section section one
 
265
The first section.
 
266
 
 
267
@subsection subsection one
 
268
The first subsection.
 
269
 
 
270
@subsection subsection two
 
271
The second subsection.
 
272
 
 
273
@subsubsection subsubsection one
 
274
Here is sus sub section one.
 
275
 
 
276
@heading blob one
 
277
Far tooo deep to get a name
 
278
 
 
279
@heading thing one
 
280
No idea how to call that, but sphinx says it's a paragraph.''')