Drop 2.4 and 2.5 compatibility code, part 2.
[docutils.git] / docutils / test / test_parsers / test_rst / test_option_lists.py
blob684c996f0ae3612de8fbb7d23440413786152d2d
1 #! /usr/bin/env python
3 # $Id$
4 # Author: David Goodger <goodger@python.org>
5 # Copyright: This module has been placed in the public domain.
7 """
8 Tests for states.py.
9 """
11 from __init__ import DocutilsTestSupport
13 def suite():
14 s = DocutilsTestSupport.ParserTestSuite()
15 s.generateTests(totest)
16 return s
18 totest = {}
20 totest['option_lists'] = [
21 ["""\
22 Short options:
24 -a option -a
26 -b file option -b
28 -c name option -c
29 """,
30 """\
31 <document source="test data">
32 <paragraph>
33 Short options:
34 <option_list>
35 <option_list_item>
36 <option_group>
37 <option>
38 <option_string>
40 <description>
41 <paragraph>
42 option -a
43 <option_list_item>
44 <option_group>
45 <option>
46 <option_string>
48 <option_argument delimiter=" ">
49 file
50 <description>
51 <paragraph>
52 option -b
53 <option_list_item>
54 <option_group>
55 <option>
56 <option_string>
58 <option_argument delimiter=" ">
59 name
60 <description>
61 <paragraph>
62 option -c
63 """],
64 ["""\
65 Long options:
67 --aaaa option --aaaa
68 --bbbb=file option --bbbb
69 --cccc name option --cccc
70 --d-e-f-g option --d-e-f-g
71 --h_i_j_k option --h_i_j_k
72 """,
73 """\
74 <document source="test data">
75 <paragraph>
76 Long options:
77 <option_list>
78 <option_list_item>
79 <option_group>
80 <option>
81 <option_string>
82 --aaaa
83 <description>
84 <paragraph>
85 option --aaaa
86 <option_list_item>
87 <option_group>
88 <option>
89 <option_string>
90 --bbbb
91 <option_argument delimiter="=">
92 file
93 <description>
94 <paragraph>
95 option --bbbb
96 <option_list_item>
97 <option_group>
98 <option>
99 <option_string>
100 --cccc
101 <option_argument delimiter=" ">
102 name
103 <description>
104 <paragraph>
105 option --cccc
106 <option_list_item>
107 <option_group>
108 <option>
109 <option_string>
110 --d-e-f-g
111 <description>
112 <paragraph>
113 option --d-e-f-g
114 <option_list_item>
115 <option_group>
116 <option>
117 <option_string>
118 --h_i_j_k
119 <description>
120 <paragraph>
121 option --h_i_j_k
122 """],
123 ["""\
124 Old GNU-style options:
126 +a option +a
128 +b file option +b
130 +c name option +c
131 """,
132 """\
133 <document source="test data">
134 <paragraph>
135 Old GNU-style options:
136 <option_list>
137 <option_list_item>
138 <option_group>
139 <option>
140 <option_string>
142 <description>
143 <paragraph>
144 option +a
145 <option_list_item>
146 <option_group>
147 <option>
148 <option_string>
150 <option_argument delimiter=" ">
151 file
152 <description>
153 <paragraph>
154 option +b
155 <option_list_item>
156 <option_group>
157 <option>
158 <option_string>
160 <option_argument delimiter=" ">
161 name
162 <description>
163 <paragraph>
164 option +c
165 """],
166 ["""\
167 VMS/DOS-style options:
169 /A option /A
170 /B file option /B
171 /CCC option /CCC
172 /DDD string option /DDD
173 /EEE=int option /EEE
174 """,
175 """\
176 <document source="test data">
177 <paragraph>
178 VMS/DOS-style options:
179 <option_list>
180 <option_list_item>
181 <option_group>
182 <option>
183 <option_string>
185 <description>
186 <paragraph>
187 option /A
188 <option_list_item>
189 <option_group>
190 <option>
191 <option_string>
193 <option_argument delimiter=" ">
194 file
195 <description>
196 <paragraph>
197 option /B
198 <option_list_item>
199 <option_group>
200 <option>
201 <option_string>
202 /CCC
203 <description>
204 <paragraph>
205 option /CCC
206 <option_list_item>
207 <option_group>
208 <option>
209 <option_string>
210 /DDD
211 <option_argument delimiter=" ">
212 string
213 <description>
214 <paragraph>
215 option /DDD
216 <option_list_item>
217 <option_group>
218 <option>
219 <option_string>
220 /EEE
221 <option_argument delimiter="=">
223 <description>
224 <paragraph>
225 option /EEE
226 """],
227 ["""\
228 Mixed short, long, and VMS/DOS options:
230 -a option -a
231 --bbbb=file option -bbbb
232 /C option /C
233 --dddd name option --dddd
234 -e string option -e
235 /F file option /F
236 """,
237 """\
238 <document source="test data">
239 <paragraph>
240 Mixed short, long, and VMS/DOS options:
241 <option_list>
242 <option_list_item>
243 <option_group>
244 <option>
245 <option_string>
247 <description>
248 <paragraph>
249 option -a
250 <option_list_item>
251 <option_group>
252 <option>
253 <option_string>
254 --bbbb
255 <option_argument delimiter="=">
256 file
257 <description>
258 <paragraph>
259 option -bbbb
260 <option_list_item>
261 <option_group>
262 <option>
263 <option_string>
265 <description>
266 <paragraph>
267 option /C
268 <option_list_item>
269 <option_group>
270 <option>
271 <option_string>
272 --dddd
273 <option_argument delimiter=" ">
274 name
275 <description>
276 <paragraph>
277 option --dddd
278 <option_list_item>
279 <option_group>
280 <option>
281 <option_string>
283 <option_argument delimiter=" ">
284 string
285 <description>
286 <paragraph>
287 option -e
288 <option_list_item>
289 <option_group>
290 <option>
291 <option_string>
293 <option_argument delimiter=" ">
294 file
295 <description>
296 <paragraph>
297 option /F
298 """],
299 ["""\
300 Aliased options:
302 -a, --aaaa, /A option -a, --aaaa, /A
303 -b file, --bbbb=file, /B file option -b, --bbbb, /B
304 """,
305 """\
306 <document source="test data">
307 <paragraph>
308 Aliased options:
309 <option_list>
310 <option_list_item>
311 <option_group>
312 <option>
313 <option_string>
315 <option>
316 <option_string>
317 --aaaa
318 <option>
319 <option_string>
321 <description>
322 <paragraph>
323 option -a, --aaaa, /A
324 <option_list_item>
325 <option_group>
326 <option>
327 <option_string>
329 <option_argument delimiter=" ">
330 file
331 <option>
332 <option_string>
333 --bbbb
334 <option_argument delimiter="=">
335 file
336 <option>
337 <option_string>
339 <option_argument delimiter=" ">
340 file
341 <description>
342 <paragraph>
343 option -b, --bbbb, /B
344 """],
345 ["""\
346 Multiple lines in descriptions, aligned:
348 -a option -a, line 1
349 line 2
350 -b file option -b, line 1
351 line 2
352 """,
353 """\
354 <document source="test data">
355 <paragraph>
356 Multiple lines in descriptions, aligned:
357 <option_list>
358 <option_list_item>
359 <option_group>
360 <option>
361 <option_string>
363 <description>
364 <paragraph>
365 option -a, line 1
366 line 2
367 <option_list_item>
368 <option_group>
369 <option>
370 <option_string>
372 <option_argument delimiter=" ">
373 file
374 <description>
375 <paragraph>
376 option -b, line 1
377 line 2
378 """],
379 ["""\
380 Multiple lines in descriptions, not aligned:
382 -a option -a, line 1
383 line 2
384 -b file option -b, line 1
385 line 2
386 """,
387 """\
388 <document source="test data">
389 <paragraph>
390 Multiple lines in descriptions, not aligned:
391 <option_list>
392 <option_list_item>
393 <option_group>
394 <option>
395 <option_string>
397 <description>
398 <paragraph>
399 option -a, line 1
400 line 2
401 <option_list_item>
402 <option_group>
403 <option>
404 <option_string>
406 <option_argument delimiter=" ">
407 file
408 <description>
409 <paragraph>
410 option -b, line 1
411 line 2
412 """],
413 ["""\
414 Descriptions begin on next line:
417 option -a, line 1
418 line 2
419 -b file
420 option -b, line 1
421 line 2
422 """,
423 """\
424 <document source="test data">
425 <paragraph>
426 Descriptions begin on next line:
427 <option_list>
428 <option_list_item>
429 <option_group>
430 <option>
431 <option_string>
433 <description>
434 <paragraph>
435 option -a, line 1
436 line 2
437 <option_list_item>
438 <option_group>
439 <option>
440 <option_string>
442 <option_argument delimiter=" ">
443 file
444 <description>
445 <paragraph>
446 option -b, line 1
447 line 2
448 """],
449 ["""\
450 Multiple body elements in descriptions:
452 -a option -a, para 1
454 para 2
455 -b file
456 option -b, para 1
458 para 2
459 """,
460 """\
461 <document source="test data">
462 <paragraph>
463 Multiple body elements in descriptions:
464 <option_list>
465 <option_list_item>
466 <option_group>
467 <option>
468 <option_string>
470 <description>
471 <paragraph>
472 option -a, para 1
473 <paragraph>
474 para 2
475 <option_list_item>
476 <option_group>
477 <option>
478 <option_string>
480 <option_argument delimiter=" ">
481 file
482 <description>
483 <paragraph>
484 option -b, para 1
485 <paragraph>
486 para 2
487 """],
488 ["""\
489 --option
490 empty item above, no blank line
491 """,
492 """\
493 <document source="test data">
494 <paragraph>
495 --option
496 empty item above, no blank line
497 """],
498 ["""\
499 An option list using equals:
501 --long1=arg1 Description 1
502 --long2=arg2 Description 2
504 An option list using spaces:
506 --long1 arg1 Description 1
507 --long2 arg2 Description 2
509 An option list using mixed delimiters:
511 --long1=arg1 Description 1
512 --long2 arg2 Description 2
514 An option list using mixed delimiters in one line:
516 --long1=arg1, --long2 arg2 Description
517 """,
518 """\
519 <document source="test data">
520 <paragraph>
521 An option list using equals:
522 <option_list>
523 <option_list_item>
524 <option_group>
525 <option>
526 <option_string>
527 --long1
528 <option_argument delimiter="=">
529 arg1
530 <description>
531 <paragraph>
532 Description 1
533 <option_list_item>
534 <option_group>
535 <option>
536 <option_string>
537 --long2
538 <option_argument delimiter="=">
539 arg2
540 <description>
541 <paragraph>
542 Description 2
543 <paragraph>
544 An option list using spaces:
545 <option_list>
546 <option_list_item>
547 <option_group>
548 <option>
549 <option_string>
550 --long1
551 <option_argument delimiter=" ">
552 arg1
553 <description>
554 <paragraph>
555 Description 1
556 <option_list_item>
557 <option_group>
558 <option>
559 <option_string>
560 --long2
561 <option_argument delimiter=" ">
562 arg2
563 <description>
564 <paragraph>
565 Description 2
566 <paragraph>
567 An option list using mixed delimiters:
568 <option_list>
569 <option_list_item>
570 <option_group>
571 <option>
572 <option_string>
573 --long1
574 <option_argument delimiter="=">
575 arg1
576 <description>
577 <paragraph>
578 Description 1
579 <option_list_item>
580 <option_group>
581 <option>
582 <option_string>
583 --long2
584 <option_argument delimiter=" ">
585 arg2
586 <description>
587 <paragraph>
588 Description 2
589 <paragraph>
590 An option list using mixed delimiters in one line:
591 <option_list>
592 <option_list_item>
593 <option_group>
594 <option>
595 <option_string>
596 --long1
597 <option_argument delimiter="=">
598 arg1
599 <option>
600 <option_string>
601 --long2
602 <option_argument delimiter=" ">
603 arg2
604 <description>
605 <paragraph>
606 Description
607 """],
608 ["""\
609 Some edge cases:
611 --option=arg arg too many arguments
613 --option=arg,arg not supported (yet?)
615 --option=arg=arg too many arguments
617 --option arg arg too many arguments
619 -a letter arg2 too many arguments
621 /A letter arg2 too many arguments
623 --option= argument missing
625 --=argument option missing
627 -- everything missing
629 - this should be a bullet list item
631 These next ones should be simple paragraphs:
635 --option
639 -1 and this one too.
640 """,
641 """\
642 <document source="test data">
643 <paragraph>
644 Some edge cases:
645 <paragraph>
646 --option=arg arg too many arguments
647 <paragraph>
648 --option=arg,arg not supported (yet?)
649 <paragraph>
650 --option=arg=arg too many arguments
651 <paragraph>
652 --option arg arg too many arguments
653 <paragraph>
654 -a letter arg2 too many arguments
655 <paragraph>
656 /A letter arg2 too many arguments
657 <paragraph>
658 --option= argument missing
659 <paragraph>
660 --=argument option missing
661 <paragraph>
662 -- everything missing
663 <bullet_list bullet="-">
664 <list_item>
665 <paragraph>
666 this should be a bullet list item
667 <paragraph>
668 These next ones should be simple paragraphs:
669 <paragraph>
671 <paragraph>
672 --option
673 <paragraph>
675 <paragraph>
676 -1 and this one too.
677 """],
678 ["""\
679 Complex optargs:
681 --source-url=<URL> Use the supplied <URL> verbatim.
682 --output-encoding=<name[:handler]>, -o<name[:handler]>
683 Specify the text encoding for output.
684 --af=<filter1[=parameter1:parameter2:...],filter2,...>
685 Setup a chain of audio filters.
686 Option argument containing delimiter ``=``.
687 -f <[path]filename> Send output to file.
688 -d <src dest> Use diff from <src> to <dest>.
689 --bogus=<x y z> Bogus 3D coordinates.
690 """,
691 """\
692 <document source="test data">
693 <paragraph>
694 Complex optargs:
695 <option_list>
696 <option_list_item>
697 <option_group>
698 <option>
699 <option_string>
700 --source-url
701 <option_argument delimiter="=">
702 <URL>
703 <description>
704 <paragraph>
705 Use the supplied <URL> verbatim.
706 <option_list_item>
707 <option_group>
708 <option>
709 <option_string>
710 --output-encoding
711 <option_argument delimiter="=">
712 <name[:handler]>
713 <option>
714 <option_string>
716 <option_argument delimiter="">
717 <name[:handler]>
718 <description>
719 <paragraph>
720 Specify the text encoding for output.
721 <option_list_item>
722 <option_group>
723 <option>
724 <option_string>
725 --af
726 <option_argument delimiter="=">
727 <filter1[=parameter1:parameter2:...],filter2,...>
728 <description>
729 <paragraph>
730 Setup a chain of audio filters.
731 Option argument containing delimiter \n\
732 <literal>
735 <option_list_item>
736 <option_group>
737 <option>
738 <option_string>
740 <option_argument delimiter=" ">
741 <[path]filename>
742 <description>
743 <paragraph>
744 Send output to file.
745 <option_list_item>
746 <option_group>
747 <option>
748 <option_string>
750 <option_argument delimiter=" ">
751 <src dest>
752 <description>
753 <paragraph>
754 Use diff from <src> to <dest>.
755 <option_list_item>
756 <option_group>
757 <option>
758 <option_string>
759 --bogus
760 <option_argument delimiter="=">
761 <x y z>
762 <description>
763 <paragraph>
764 Bogus 3D coordinates.
765 """],
769 if __name__ == '__main__':
770 import unittest
771 unittest.main(defaultTest='suite')