/emacs-pymacs-0.25/tests/t01_pppp_works.py
Python | 1073 lines | 1066 code | 5 blank | 2 comment | 22 complexity | c7cd681557ac478cefcf3d0d23c89ad5 MD5 | raw file
Possible License(s): GPL-2.0
1# -*- coding: utf-8 -*-
2
3# Checking if the Poor's Python Pre-Processor works.
4
5exec(compile(open('../pppp').read(), '../pppp', 'exec'))
6
7def setup_module(module):
8 run.synclines = False
9 run.context = {'TRUE': True, 'FALSE': False}
10
11def validate(input, expected):
12
13 def validate1(input, expected):
14 fragments = []
15 run.transform_file('pppp.py', input.splitlines(True), fragments.append)
16 output = ''.join(fragments)
17 assert output == expected, (output, expected)
18
19 validate1(input, expected)
20 prefix = ' ' * run.indent
21 validate1(
22 ''.join([prefix + line for line in input.splitlines(True)]),
23 ''.join([prefix + line for line in expected.splitlines(True)]))
24
25def test_none():
26
27 yield (validate,
28 '',
29
30 '')
31
32 yield (validate,
33 'line1\n',
34
35 'line1\n')
36
37 yield (validate,
38 'line1\n'
39 'line2\n',
40
41 'line1\n'
42 'line2\n')
43
44def test_yes():
45
46 yield (validate,
47 'if TRUE:\n'
48 ' line1\n'
49 'line2\n'
50 'line3\n',
51
52 'line1\n'
53 'line2\n'
54 'line3\n')
55
56 yield (validate,
57 'if TRUE:\n'
58 ' line1\n'
59 ' line2\n'
60 'line3\n',
61
62 'line1\n'
63 'line2\n'
64 'line3\n')
65
66 yield (validate,
67 'if TRUE:\n'
68 ' line1\n'
69 ' line2\n'
70 ' line3\n',
71
72 'line1\n'
73 'line2\n'
74 'line3\n')
75
76 yield (validate,
77 'line1\n'
78 'if TRUE:\n'
79 ' line2\n'
80 'line3\n',
81
82 'line1\n'
83 'line2\n'
84 'line3\n')
85
86 yield (validate,
87 'line1\n'
88 'if TRUE:\n'
89 ' line2\n'
90 ' line3\n',
91
92 'line1\n'
93 'line2\n'
94 'line3\n')
95
96 yield (validate,
97 'line1\n'
98 'line2\n'
99 'if TRUE:\n'
100 ' line3\n',
101
102 'line1\n'
103 'line2\n'
104 'line3\n')
105
106 yield (validate,
107 'if TRUE:\n'
108 ' line1\n'
109 'if TRUE:\n'
110 ' line2\n'
111 'line3\n',
112
113 'line1\n'
114 'line2\n'
115 'line3\n')
116
117 yield (validate,
118 'if TRUE:\n'
119 ' line1\n'
120 'line2\n'
121 'if TRUE:\n'
122 ' line3\n',
123
124 'line1\n'
125 'line2\n'
126 'line3\n')
127
128 yield (validate,
129 'if TRUE:\n'
130 ' line1\n'
131 'if TRUE:\n'
132 ' line2\n'
133 'if TRUE:\n'
134 ' line3\n',
135
136 'line1\n'
137 'line2\n'
138 'line3\n')
139
140 yield (validate,
141 'line1\n'
142 'if TRUE:\n'
143 ' line2\n'
144 'if TRUE:\n'
145 ' line3\n',
146
147 'line1\n'
148 'line2\n'
149 'line3\n')
150
151def test_no():
152
153 yield (validate,
154 'if FALSE:\n'
155 ' line1\n'
156 'line2\n'
157 'line3\n',
158
159 'line2\n'
160 'line3\n')
161
162 yield (validate,
163 'if FALSE:\n'
164 ' line1\n'
165 ' line2\n'
166 'line3\n',
167
168 'line3\n')
169
170 yield (validate,
171 'if FALSE:\n'
172 ' line1\n'
173 ' line2\n'
174 ' line3\n',
175
176 '')
177
178 yield (validate,
179 'line1\n'
180 'if FALSE:\n'
181 ' line2\n'
182 'line3\n',
183
184 'line1\n'
185 'line3\n')
186
187 yield (validate,
188 'line1\n'
189 'if FALSE:\n'
190 ' line2\n'
191 ' line3\n',
192
193 'line1\n')
194
195 yield (validate,
196 'line1\n'
197 'line2\n'
198 'if FALSE:\n'
199 ' line3\n',
200
201 'line1\n'
202 'line2\n')
203
204 yield (validate,
205 'if FALSE:\n'
206 ' line1\n'
207 'if FALSE:\n'
208 ' line2\n'
209 'line3\n',
210
211 'line3\n')
212
213 yield (validate,
214 'if FALSE:\n'
215 ' line1\n'
216 'line2\n'
217 'if FALSE:\n'
218 ' line3\n',
219
220 'line2\n')
221
222 yield (validate,
223 'if FALSE:\n'
224 ' line1\n'
225 'if FALSE:\n'
226 ' line2\n'
227 'if FALSE:\n'
228 ' line3\n',
229
230 '')
231
232 yield (validate,
233 'line1\n'
234 'if FALSE:\n'
235 ' line2\n'
236 'if FALSE:\n'
237 ' line3\n',
238
239 'line1\n')
240
241def test_unknown():
242
243 yield (validate,
244 'line1\n'
245 'if UNKNOWN:\n'
246 ' line2\n'
247 'line3\n',
248
249 'line1\n'
250 'if UNKNOWN:\n'
251 ' line2\n'
252 'line3\n')
253
254 yield (validate,
255 'if UNKNOWN:\n'
256 ' line1\n'
257 'if UNKNOWN:\n'
258 ' line2\n'
259 'if UNKNOWN:\n'
260 ' line3\n',
261
262 'if UNKNOWN:\n'
263 ' line1\n'
264 'if UNKNOWN:\n'
265 ' line2\n'
266 'if UNKNOWN:\n'
267 ' line3\n')
268
269def test_yes_else():
270
271 yield (validate,
272 'if TRUE:\n'
273 ' line1\n'
274 'else:\n'
275 ' line2\n'
276 'line3\n',
277
278 'line1\n'
279 'line3\n')
280
281 yield (validate,
282 'if TRUE:\n'
283 ' line1\n'
284 ' line2\n'
285 'else:\n'
286 ' line3\n',
287
288 'line1\n'
289 'line2\n')
290
291 yield (validate,
292 'line1\n'
293 'if TRUE:\n'
294 ' line2\n'
295 'else:\n'
296 ' line3\n',
297
298 'line1\n'
299 'line2\n')
300
301 yield (validate,
302 'if TRUE:\n'
303 ' line1\n'
304 'if TRUE:\n'
305 ' line2\n'
306 'else:\n'
307 ' line3\n',
308
309 'line1\n'
310 'line2\n')
311
312 yield (validate,
313 'if TRUE:\n'
314 ' line1\n'
315 'else:\n'
316 ' line2\n'
317 'if TRUE:\n'
318 ' line3\n',
319
320 'line1\n'
321 'line3\n')
322
323def test_no_else():
324
325 yield (validate,
326 'if FALSE:\n'
327 ' line1\n'
328 'else:\n'
329 ' line2\n'
330 'line3\n',
331
332 'line2\n'
333 'line3\n')
334
335 yield (validate,
336 'if FALSE:\n'
337 ' line1\n'
338 ' line2\n'
339 'else:\n'
340 ' line3\n',
341
342 'line3\n')
343
344 yield (validate,
345 'line1\n'
346 'if FALSE:\n'
347 ' line2\n'
348 'else:\n'
349 ' line3\n',
350
351 'line1\n'
352 'line3\n')
353
354 yield (validate,
355 'if FALSE:\n'
356 ' line1\n'
357 'if FALSE:\n'
358 ' line2\n'
359 'else:\n'
360 ' line3\n',
361
362 'line3\n')
363
364 yield (validate,
365 'if FALSE:\n'
366 ' line1\n'
367 'else:\n'
368 ' line2\n'
369 'if FALSE:\n'
370 ' line3\n',
371
372 'line2\n')
373
374def test_unknown_else():
375
376 yield (validate,
377 'line1\n'
378 'if UNKNOWN:\n'
379 ' line2\n'
380 'else:\n'
381 ' line3\n'
382 'line4\n',
383
384 'line1\n'
385 'if UNKNOWN:\n'
386 ' line2\n'
387 'else:\n'
388 ' line3\n'
389 'line4\n')
390
391def test_elif():
392
393 yield (validate,
394 'line1\n'
395 'if TRUE:\n'
396 ' line2\n'
397 'elif TRUE:\n'
398 ' line3\n'
399 'elif TRUE:\n'
400 ' line4\n'
401 'else:\n'
402 ' line5\n'
403 'line6\n',
404
405 'line1\n'
406 'line2\n'
407 'line6\n')
408
409 yield (validate,
410 'line1\n'
411 'if TRUE:\n'
412 ' line2\n'
413 'elif TRUE:\n'
414 ' line3\n'
415 'elif FALSE:\n'
416 ' line4\n'
417 'else:\n'
418 ' line5\n'
419 'line6\n',
420
421 'line1\n'
422 'line2\n'
423 'line6\n')
424
425 yield (validate,
426 'line1\n'
427 'if TRUE:\n'
428 ' line2\n'
429 'elif TRUE:\n'
430 ' line3\n'
431 'elif UNKNOWN:\n'
432 ' line4\n'
433 'else:\n'
434 ' line5\n'
435 'line6\n',
436
437 'line1\n'
438 'line2\n'
439 'line6\n')
440
441 yield (validate,
442 'line1\n'
443 'if TRUE:\n'
444 ' line2\n'
445 'elif FALSE:\n'
446 ' line3\n'
447 'elif TRUE:\n'
448 ' line4\n'
449 'else:\n'
450 ' line5\n'
451 'line6\n',
452
453 'line1\n'
454 'line2\n'
455 'line6\n')
456
457 yield (validate,
458 'line1\n'
459 'if TRUE:\n'
460 ' line2\n'
461 'elif FALSE:\n'
462 ' line3\n'
463 'elif FALSE:\n'
464 ' line4\n'
465 'else:\n'
466 ' line5\n'
467 'line6\n',
468
469 'line1\n'
470 'line2\n'
471 'line6\n')
472
473 yield (validate,
474 'line1\n'
475 'if TRUE:\n'
476 ' line2\n'
477 'elif FALSE:\n'
478 ' line3\n'
479 'elif UNKNOWN:\n'
480 ' line4\n'
481 'else:\n'
482 ' line5\n'
483 'line6\n',
484
485 'line1\n'
486 'line2\n'
487 'line6\n')
488
489 yield (validate,
490 'line1\n'
491 'if TRUE:\n'
492 ' line2\n'
493 'elif UNKNOWN:\n'
494 ' line3\n'
495 'elif TRUE:\n'
496 ' line4\n'
497 'else:\n'
498 ' line5\n'
499 'line6\n',
500
501 'line1\n'
502 'line2\n'
503 'line6\n')
504
505 yield (validate,
506 'line1\n'
507 'if TRUE:\n'
508 ' line2\n'
509 'elif UNKNOWN:\n'
510 ' line3\n'
511 'elif FALSE:\n'
512 ' line4\n'
513 'else:\n'
514 ' line5\n'
515 'line6\n',
516
517 'line1\n'
518 'line2\n'
519 'line6\n')
520
521 yield (validate,
522 'line1\n'
523 'if TRUE:\n'
524 ' line2\n'
525 'elif UNKNOWN:\n'
526 ' line3\n'
527 'elif UNKNOWN:\n'
528 ' line4\n'
529 'else:\n'
530 ' line5\n'
531 'line6\n',
532
533 'line1\n'
534 'line2\n'
535 'line6\n')
536
537 yield (validate,
538 'line1\n'
539 'if FALSE:\n'
540 ' line2\n'
541 'elif TRUE:\n'
542 ' line3\n'
543 'elif TRUE:\n'
544 ' line4\n'
545 'else:\n'
546 ' line5\n'
547 'line6\n',
548
549 'line1\n'
550 'line3\n'
551 'line6\n')
552
553 yield (validate,
554 'line1\n'
555 'if FALSE:\n'
556 ' line2\n'
557 'elif TRUE:\n'
558 ' line3\n'
559 'elif FALSE:\n'
560 ' line4\n'
561 'else:\n'
562 ' line5\n'
563 'line6\n',
564
565 'line1\n'
566 'line3\n'
567 'line6\n')
568
569 yield (validate,
570 'line1\n'
571 'if FALSE:\n'
572 ' line2\n'
573 'elif TRUE:\n'
574 ' line3\n'
575 'elif UNKNOWN:\n'
576 ' line4\n'
577 'else:\n'
578 ' line5\n'
579 'line6\n',
580
581 'line1\n'
582 'line3\n'
583 'line6\n')
584
585 yield (validate,
586 'line1\n'
587 'if FALSE:\n'
588 ' line2\n'
589 'elif FALSE:\n'
590 ' line3\n'
591 'elif TRUE:\n'
592 ' line4\n'
593 'else:\n'
594 ' line5\n'
595 'line6\n',
596
597 'line1\n'
598 'line4\n'
599 'line6\n')
600
601 yield (validate,
602 'line1\n'
603 'if FALSE:\n'
604 ' line2\n'
605 'elif FALSE:\n'
606 ' line3\n'
607 'elif FALSE:\n'
608 ' line4\n'
609 'else:\n'
610 ' line5\n'
611 'line6\n',
612
613 'line1\n'
614 'line5\n'
615 'line6\n')
616
617 yield (validate,
618 'line1\n'
619 'if FALSE:\n'
620 ' line2\n'
621 'elif FALSE:\n'
622 ' line3\n'
623 'elif UNKNOWN:\n'
624 ' line4\n'
625 'else:\n'
626 ' line5\n'
627 'line6\n',
628
629 'line1\n'
630 'if UNKNOWN:\n'
631 ' line4\n'
632 'else:\n'
633 ' line5\n'
634 'line6\n')
635
636 yield (validate,
637 'line1\n'
638 'if FALSE:\n'
639 ' line2\n'
640 'elif UNKNOWN:\n'
641 ' line3\n'
642 'elif TRUE:\n'
643 ' line4\n'
644 'else:\n'
645 ' line5\n'
646 'line6\n',
647
648 'line1\n'
649 'if UNKNOWN:\n'
650 ' line3\n'
651 'else:\n'
652 ' line4\n'
653 'line6\n')
654
655 yield (validate,
656 'line1\n'
657 'if FALSE:\n'
658 ' line2\n'
659 'elif UNKNOWN:\n'
660 ' line3\n'
661 'elif FALSE:\n'
662 ' line4\n'
663 'else:\n'
664 ' line5\n'
665 'line6\n',
666
667 'line1\n'
668 'if UNKNOWN:\n'
669 ' line3\n'
670 'else:\n'
671 ' line5\n'
672 'line6\n')
673
674 yield (validate,
675 'line1\n'
676 'if FALSE:\n'
677 ' line2\n'
678 'elif UNKNOWN:\n'
679 ' line3\n'
680 'elif UNKNOWN:\n'
681 ' line4\n'
682 'else:\n'
683 ' line5\n'
684 'line6\n',
685
686 'line1\n'
687 'if UNKNOWN:\n'
688 ' line3\n'
689 'elif UNKNOWN:\n'
690 ' line4\n'
691 'else:\n'
692 ' line5\n'
693 'line6\n')
694
695 yield (validate,
696 'line1\n'
697 'if UNKNOWN:\n'
698 ' line2\n'
699 'elif TRUE:\n'
700 ' line3\n'
701 'elif TRUE:\n'
702 ' line4\n'
703 'else:\n'
704 ' line5\n'
705 'line6\n',
706
707 'line1\n'
708 'if UNKNOWN:\n'
709 ' line2\n'
710 'else:\n'
711 ' line3\n'
712 'line6\n')
713
714 yield (validate,
715 'line1\n'
716 'if UNKNOWN:\n'
717 ' line2\n'
718 'elif TRUE:\n'
719 ' line3\n'
720 'elif FALSE:\n'
721 ' line4\n'
722 'else:\n'
723 ' line5\n'
724 'line6\n',
725
726 'line1\n'
727 'if UNKNOWN:\n'
728 ' line2\n'
729 'else:\n'
730 ' line3\n'
731 'line6\n')
732
733 yield (validate,
734 'line1\n'
735 'if UNKNOWN:\n'
736 ' line2\n'
737 'elif TRUE:\n'
738 ' line3\n'
739 'elif UNKNOWN:\n'
740 ' line4\n'
741 'else:\n'
742 ' line5\n'
743 'line6\n',
744
745 'line1\n'
746 'if UNKNOWN:\n'
747 ' line2\n'
748 'else:\n'
749 ' line3\n'
750 'line6\n')
751
752 yield (validate,
753 'line1\n'
754 'if UNKNOWN:\n'
755 ' line2\n'
756 'elif FALSE:\n'
757 ' line3\n'
758 'elif TRUE:\n'
759 ' line4\n'
760 'else:\n'
761 ' line5\n'
762 'line6\n',
763
764 'line1\n'
765 'if UNKNOWN:\n'
766 ' line2\n'
767 'else:\n'
768 ' line4\n'
769 'line6\n')
770
771 yield (validate,
772 'line1\n'
773 'if UNKNOWN:\n'
774 ' line2\n'
775 'elif FALSE:\n'
776 ' line3\n'
777 'elif FALSE:\n'
778 ' line4\n'
779 'else:\n'
780 ' line5\n'
781 'line6\n',
782
783 'line1\n'
784 'if UNKNOWN:\n'
785 ' line2\n'
786 'else:\n'
787 ' line5\n'
788 'line6\n')
789
790 yield (validate,
791 'line1\n'
792 'if UNKNOWN:\n'
793 ' line2\n'
794 'elif FALSE:\n'
795 ' line3\n'
796 'elif UNKNOWN:\n'
797 ' line4\n'
798 'else:\n'
799 ' line5\n'
800 'line6\n',
801
802 'line1\n'
803 'if UNKNOWN:\n'
804 ' line2\n'
805 'elif UNKNOWN:\n'
806 ' line4\n'
807 'else:\n'
808 ' line5\n'
809 'line6\n')
810
811 yield (validate,
812 'line1\n'
813 'if UNKNOWN:\n'
814 ' line2\n'
815 'elif UNKNOWN:\n'
816 ' line3\n'
817 'elif TRUE:\n'
818 ' line4\n'
819 'else:\n'
820 ' line5\n'
821 'line6\n',
822
823 'line1\n'
824 'if UNKNOWN:\n'
825 ' line2\n'
826 'elif UNKNOWN:\n'
827 ' line3\n'
828 'else:\n'
829 ' line4\n'
830 'line6\n')
831
832 yield (validate,
833 'line1\n'
834 'if UNKNOWN:\n'
835 ' line2\n'
836 'elif UNKNOWN:\n'
837 ' line3\n'
838 'elif FALSE:\n'
839 ' line4\n'
840 'else:\n'
841 ' line5\n'
842 'line6\n',
843
844 'line1\n'
845 'if UNKNOWN:\n'
846 ' line2\n'
847 'elif UNKNOWN:\n'
848 ' line3\n'
849 'else:\n'
850 ' line5\n'
851 'line6\n')
852
853 yield (validate,
854 'line1\n'
855 'if UNKNOWN:\n'
856 ' line2\n'
857 'elif UNKNOWN:\n'
858 ' line3\n'
859 'elif UNKNOWN:\n'
860 ' line4\n'
861 'else:\n'
862 ' line5\n'
863 'line6\n',
864
865 'line1\n'
866 'if UNKNOWN:\n'
867 ' line2\n'
868 'elif UNKNOWN:\n'
869 ' line3\n'
870 'elif UNKNOWN:\n'
871 ' line4\n'
872 'else:\n'
873 ' line5\n'
874 'line6\n')
875
876def test_nesting():
877
878 yield (validate,
879 'line1\n'
880 'if TRUE:\n'
881 ' line2\n'
882 ' if TRUE:\n'
883 ' line3\n'
884 ' else:\n'
885 ' line4\n'
886 ' line5\n'
887 'else:\n'
888 ' line6\n'
889 'line7\n',
890
891 'line1\n'
892 'line2\n'
893 'line3\n'
894 'line5\n'
895 'line7\n')
896
897 yield (validate,
898 'line1\n'
899 'if TRUE:\n'
900 ' line2\n'
901 ' if FALSE:\n'
902 ' line3\n'
903 ' else:\n'
904 ' line4\n'
905 ' line5\n'
906 'else:\n'
907 ' line6\n'
908 'line7\n',
909
910 'line1\n'
911 'line2\n'
912 'line4\n'
913 'line5\n'
914 'line7\n')
915
916 yield (validate,
917 'line1\n'
918 'if TRUE:\n'
919 ' line2\n'
920 ' if UNKNOWN:\n'
921 ' line3\n'
922 ' else:\n'
923 ' line4\n'
924 ' line5\n'
925 'else:\n'
926 ' line6\n'
927 'line7\n',
928
929 'line1\n'
930 'line2\n'
931 'if UNKNOWN:\n'
932 ' line3\n'
933 'else:\n'
934 ' line4\n'
935 'line5\n'
936 'line7\n')
937
938 yield (validate,
939 'line1\n'
940 'if FALSE:\n'
941 ' line2\n'
942 ' if TRUE:\n'
943 ' line3\n'
944 ' else:\n'
945 ' line4\n'
946 ' line5\n'
947 'else:\n'
948 ' line6\n'
949 'line7\n',
950
951 'line1\n'
952 'line6\n'
953 'line7\n')
954
955 yield (validate,
956 'line1\n'
957 'if FALSE:\n'
958 ' line2\n'
959 ' if FALSE:\n'
960 ' line3\n'
961 ' else:\n'
962 ' line4\n'
963 ' line5\n'
964 'else:\n'
965 ' line6\n'
966 'line7\n',
967
968 'line1\n'
969 'line6\n'
970 'line7\n')
971
972 yield (validate,
973 'line1\n'
974 'if FALSE:\n'
975 ' line2\n'
976 ' if UNKNOWN:\n'
977 ' line3\n'
978 ' else:\n'
979 ' line4\n'
980 ' line5\n'
981 'else:\n'
982 ' line6\n'
983 'line7\n',
984
985 'line1\n'
986 'line6\n'
987 'line7\n')
988
989 yield (validate,
990 'line1\n'
991 'if UNKNOWN:\n'
992 ' line2\n'
993 ' if TRUE:\n'
994 ' line3\n'
995 ' else:\n'
996 ' line4\n'
997 ' line5\n'
998 'else:\n'
999 ' line6\n'
1000 'line7\n',
1001
1002 'line1\n'
1003 'if UNKNOWN:\n'
1004 ' line2\n'
1005 ' line3\n'
1006 ' line5\n'
1007 'else:\n'
1008 ' line6\n'
1009 'line7\n')
1010
1011 yield (validate,
1012 'line1\n'
1013 'if UNKNOWN:\n'
1014 ' line2\n'
1015 ' if FALSE:\n'
1016 ' line3\n'
1017 ' else:\n'
1018 ' line4\n'
1019 ' line5\n'
1020 'else:\n'
1021 ' line6\n'
1022 'line7\n',
1023
1024 'line1\n'
1025 'if UNKNOWN:\n'
1026 ' line2\n'
1027 ' line4\n'
1028 ' line5\n'
1029 'else:\n'
1030 ' line6\n'
1031 'line7\n')
1032
1033 yield (validate,
1034 'line1\n'
1035 'if UNKNOWN:\n'
1036 ' line2\n'
1037 ' if UNKNOWN:\n'
1038 ' line3\n'
1039 ' else:\n'
1040 ' line4\n'
1041 ' line5\n'
1042 'else:\n'
1043 ' line6\n'
1044 'line7\n',
1045
1046 'line1\n'
1047 'if UNKNOWN:\n'
1048 ' line2\n'
1049 ' if UNKNOWN:\n'
1050 ' line3\n'
1051 ' else:\n'
1052 ' line4\n'
1053 ' line5\n'
1054 'else:\n'
1055 ' line6\n'
1056 'line7\n')
1057
1058def test_regression():
1059
1060 yield (validate,
1061 'if TRUE:\n'
1062 ' line1\n'
1063 'else:\n'
1064 ' line2\n'
1065 ' if FALSE:\n'
1066 ' line3\n'
1067 ' else:\n'
1068 ' line4\n'
1069 ' line5\n'
1070 'line6\n',
1071
1072 'line1\n'
1073 'line6\n')