This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix handling of registered warning categories
[perl5.git] / t / lib / warnings / 9enabled
1 Check warnings::enabled & warnings::warn
2
3 __END__
4
5 --FILE-- abc0.pm
6 package abc0 ;
7 use warnings "io" ;
8 print "ok1\n" if ! warnings::enabled('all') ;
9 print "ok2\n" if ! warnings::enabled("io") ;
10 1;
11 --FILE--
12 no warnings;
13 use abc0 ;
14 EXPECT
15 ok1
16 ok2
17 ########
18
19 --FILE-- abc1.pm
20 package abc1 ;
21 no warnings ;
22 print "ok1\n" if !warnings::enabled('all') ;
23 print "ok2\n" if warnings::enabled("syntax") ;
24 1;
25 --FILE--
26 use warnings 'syntax' ;
27 use abc1 ;
28 EXPECT
29 ok1
30 ok2
31 ########
32
33 --FILE-- abc2.pm
34 package abc2 ;
35 use warnings 'syntax' ;
36 print "ok1\n" if   warnings::enabled('io') ;
37 print "ok2\n" if ! warnings::enabled("syntax") ;
38 1;
39 --FILE--
40 use warnings 'io' ;
41 use abc2 ;
42 EXPECT
43 ok1
44 ok2
45 ########
46
47 --FILE-- abc3
48 no warnings ;
49 print "ok1\n" if !warnings::enabled('all') ;
50 print "ok2\n" if !warnings::enabled("syntax") ;
51 1;
52 --FILE--
53 use warnings 'syntax' ;
54 require "abc3" ;
55 EXPECT
56 ok1
57 ok2
58 ########
59
60 --FILE-- abc4
61 use warnings 'syntax' ;
62 print "ok1\n" if ! warnings::enabled('all') ;
63 print "ok2\n" if ! warnings::enabled("syntax") ;
64 print "ok3\n" if ! warnings::enabled("io") ;
65 1;
66 --FILE--
67 use warnings 'io' ;
68 require "abc4" ;
69 EXPECT
70 ok1
71 ok2
72 ok3
73 ########
74
75 --FILE-- abc5.pm
76 package abc5 ;
77 no warnings ;
78 sub check {
79   print "ok1\n" if !warnings::enabled('all') ;
80   print "ok2\n" if warnings::enabled("syntax") ;
81 }
82 1;
83 --FILE--
84 use warnings 'syntax' ;
85 use abc5 ;
86 abc5::check() ;
87 EXPECT
88 ok1
89 ok2
90 ########
91
92 --FILE-- abc6.pm
93 package abc6 ;
94 use warnings 'io' ;
95 sub check {
96   print "ok1\n" if ! warnings::enabled('all') ;
97   print "ok2\n" if   warnings::enabled("syntax") ;
98   print "ok3\n" if ! warnings::enabled("io") ;
99 }
100 1;
101 --FILE--
102 use warnings 'syntax' ;
103 use abc6 ;
104 abc6::check() ;
105 EXPECT
106 ok1
107 ok2
108 ok3
109 ########
110
111 --FILE-- abc7
112 package abc7 ;
113 no warnings ;
114 sub check {
115   print "ok1\n" if !warnings::enabled('all') ;
116   print "ok2\n" if warnings::enabled("syntax") ;
117 }
118 1;
119 --FILE--
120 use warnings 'syntax' ;
121 require "abc7" ;
122 abc7::check() ;
123 EXPECT
124 ok1
125 ok2
126 ########
127
128 --FILE-- abc8
129 package abc8 ;
130 use warnings 'io' ;
131 sub check {
132   print "ok1\n" if ! warnings::enabled('all') ;
133   print "ok2\n" if   warnings::enabled("syntax") ;
134   print "ok3\n" if ! warnings::enabled("io") ;
135 }
136 1;
137 --FILE--
138 use warnings 'syntax' ;
139 require "abc8" ;
140 abc8::check() ;
141 EXPECT
142 ok1
143 ok2
144 ok3
145 ########
146
147 --FILE-- abc9.pm
148 package abc9 ;
149 use warnings "io" ;
150 print "ok1\n" if ! warnings::enabled('all') ;
151 print "ok2\n" if ! warnings::enabled("io") ;
152 1;
153 --FILE-- def.pm
154 package def;
155 no warnings;
156 use abc9 ;
157 1;
158 --FILE--
159 use warnings;
160 use def ;
161 EXPECT
162 ok1
163 ok2
164 ########
165
166 --FILE-- abc10.pm
167 package abc10 ;
168 no warnings ;
169 print "ok1\n" if ! warnings::enabled('all') ;
170 print "ok2\n" if warnings::enabled("syntax") ;
171 print "ok3\n" if !warnings::enabled("io") ;
172 1;
173 --FILE-- def.pm
174 use warnings 'syntax' ;
175 print "ok4\n" if !warnings::enabled('all') ;
176 print "ok5\n" if !warnings::enabled("io") ;
177 use abc10 ;
178 1;
179 --FILE--
180 use warnings 'io' ;
181 use def ;
182 EXPECT
183 ok1
184 ok2
185 ok3
186 ok4
187 ok5
188 ########
189
190 --FILE-- abc11.pm
191 package abc11 ;
192 no warnings ;
193 sub check {
194   print "ok1\n" if !warnings::enabled('all') ;
195   print "ok2\n" if warnings::enabled("syntax") ;
196 }
197 1;
198 --FILE--
199 use warnings 'syntax' ;
200 use abc11 ;
201 eval {
202   abc11::check() ;
203 };
204 print $@ ;
205 EXPECT
206 ok1
207 ok2
208 ########
209
210 --FILE-- abc12.pm
211 package abc12 ;
212 use warnings 'io' ;
213 sub check {
214   print "ok1\n" if ! warnings::enabled('all') ;
215   print "ok2\n" if   warnings::enabled("syntax") ;
216   print "ok3\n" if ! warnings::enabled("io") ;
217 }
218 1;
219 --FILE--
220 use warnings 'syntax' ;
221 use abc12 ;
222 eval {
223   abc12::check() ;
224   } ;
225 print $@ ;
226 EXPECT
227 ok1
228 ok2
229 ok3
230 ########
231
232 --FILE-- abc13
233 package abc13 ;
234 no warnings ;
235 sub check {
236   print "ok1\n" if !warnings::enabled('all') ;
237   print "ok2\n" if warnings::enabled("syntax") ;
238 }
239 1;
240 --FILE--
241 use warnings 'syntax' ;
242 require "abc13" ;
243 eval {
244   abc13::check() ;
245   } ;
246 print $@ ;
247 EXPECT
248 ok1
249 ok2
250 ########
251
252 --FILE-- abc14
253 package abc14 ;
254 use warnings 'io' ;
255 sub check {
256   print "ok1\n" if !warnings::enabled('all') ;
257   print "ok2\n" if warnings::enabled("syntax") ;
258   print "ok3\n" if warnings::enabled("io") ;
259 }
260 1;
261 --FILE--
262 use warnings 'syntax' ;
263 require "abc14" ;
264 eval {
265   use warnings 'io' ;
266   abc14::check() ;
267 };
268 abc14::check() ;
269 print $@ ;
270 EXPECT
271 ok1
272 ok2
273 ok3
274 ok1
275 ok2
276 ########
277
278 --FILE-- abc15.pm
279 package abc15 ;
280 use warnings 'io' ;
281 sub check {
282   print "ok1\n" if ! warnings::enabled('all') ;
283   print "ok2\n" if  warnings::enabled("syntax") ;
284   print "ok3\n" if ! warnings::enabled("io") ;
285 }
286 1;
287 --FILE--
288 use warnings 'syntax' ;
289 use abc15 ;
290 sub fred { abc15::check() }
291 fred() ;
292 EXPECT
293 ok1
294 ok2
295 ok3
296 ########
297
298 --FILE-- abc16.pm
299 package abc16 ;
300 use warnings 'io' ;
301 sub check {
302   print "ok1\n" if  ! warnings::enabled('all') ;
303 }
304 1;
305 --FILE--
306 use warnings 'syntax' ;
307 use abc16 ;
308 sub fred { no warnings ; abc16::check() }
309 fred() ;
310 EXPECT
311 ok1
312 ########
313
314 --FILE-- abc17.pm
315 package abc17 ;
316 use warnings 'misc' ;
317 sub check {
318   print "ok1\n" if  ! warnings::enabled('all') ;
319   print "ok2\n" if  warnings::enabled("syntax") ;
320   print "ok3\n" if  warnings::enabled("io") ;
321   print "ok4\n" if  ! warnings::enabled("misc") ;
322 }
323 1;
324 --FILE--
325 use warnings 'syntax' ;
326 use abc17 ;
327 sub fred { use warnings 'io'  ; abc17::check() }
328 fred() ;
329 EXPECT
330 ok1
331 ok2
332 ok3
333 ok4
334 ########
335
336 # check warnings::warn
337 use warnings ;
338 eval {
339     warnings::warn()
340   } ;
341 print $@ ;
342 eval {
343   warnings::warn("fred", "joe")
344   } ;
345 print $@ ;
346 EXPECT
347 Usage: warnings::warn([category,] 'message') at - line 5.
348 Unknown warnings category 'fred' at - line 9.
349 ########
350
351 # check warnings::warnif
352 use warnings ;
353 eval {
354   warnings::warnif()
355 } ;
356 print $@ ;
357 eval {
358   warnings::warnif("fred", "joe")
359 } ;
360 print $@ ;
361 EXPECT
362 Usage: warnings::warnif([category,] 'message') at - line 5.
363 Unknown warnings category 'fred' at - line 9.
364 ########
365
366 --FILE-- abc18.pm
367 package abc18 ;
368 use warnings 'misc' ;
369 sub check { warnings::warn("io", "hello") }
370 1;
371 --FILE--
372 use warnings "io" ;
373 use abc18;
374 abc18::check() ;
375 EXPECT
376 hello at - line 3.
377 ########
378
379 --FILE-- abc19.pm
380 package abc19 ;
381 use warnings 'misc' ;
382 sub check { warnings::warn("misc", "hello") }
383 1;
384 --FILE--
385 use warnings "io" ;
386 use abc19;
387 abc19::check() ;
388 EXPECT
389 hello at - line 3.
390 ########
391
392 --FILE-- abc20.pm
393 package abc20 ;
394 use warnings 'misc' ;
395 sub check { warnings::warn("io", "hello") }
396 1;
397 --FILE--
398 use warnings qw( FATAL deprecated ) ;
399 use abc20;
400 eval {
401     abc20::check() ;
402   } ;
403 print "[[$@]]\n";
404 EXPECT
405 hello at - line 4.
406 [[]]
407 ########
408
409 --FILE-- abc21.pm
410 package abc21 ;
411 use warnings 'misc' ;
412 sub check { warnings::warn("io", "hello") }
413 1;
414 --FILE--
415 use warnings qw( FATAL io ) ;
416 use abc21;
417 eval {
418   abc21::check() ;
419 } ;
420 print "[[$@]]\n";
421 EXPECT
422 [[hello at - line 4.
423 ]]
424 ########
425 -W
426 --FILE-- abc22.pm
427 package abc22 ;
428 use warnings "io" ;
429 print "ok1\n" if warnings::enabled("io") ;
430 print "ok2\n" if warnings::enabled("all") ;
431 1;
432 --FILE--
433 no warnings;
434 use abc22 ;
435 EXPECT
436 ok1
437 ok2
438 ########
439 -X
440 --FILE-- abc23.pm
441 package abc23 ;
442 use warnings "io" ;
443 print "ok1\n" if !warnings::enabled("io") ;
444 print "ok2\n" if !warnings::enabled("all") ;
445 1;
446 --FILE--
447 use warnings;
448 use abc23 ;
449 EXPECT
450 ok1
451 ok2
452 ########
453
454 --FILE-- abc24.pm
455 package abc24 ;
456 no warnings ;
457 sub check {
458   print "ok\n" if ! warnings::enabled() ;
459 }
460 1;
461 --FILE--
462 use warnings 'syntax' ;
463 use abc24 ;
464 abc24::check() ;
465 EXPECT
466 package 'abc24' not registered for warnings at abc24.pm line 4.
467 ########
468
469 --FILE-- abc25.pm
470 package abc25 ;
471 no warnings ;
472 sub check {
473   warnings::warn("fred") ;
474 }
475 1;
476 --FILE--
477 use warnings 'syntax' ;
478 use abc25 ;
479 abc25::check() ;
480 EXPECT
481 package 'abc25' not registered for warnings at abc25.pm line 4.
482 ########
483
484 --FILE-- abc26.pm
485 package abc26 ;
486 no warnings ;
487 sub check {
488   warnings::warnif("fred") ;
489 }
490 1;
491 --FILE--
492 use warnings 'syntax' ;
493 use abc26 ;
494 abc26::check() ;
495 EXPECT
496 package 'abc26' not registered for warnings at abc26.pm line 4.
497 ########
498
499 --FILE-- abc27.pm
500 package abc27 ;
501 use warnings 'io' ;
502 use warnings::register ;
503 sub check {
504   print "ok1\n" if  warnings::enabled ;
505   print "ok2\n" if  warnings::enabled("syntax") ;
506   print "ok3\n" if !warnings::enabled("io") ;
507 }
508 1;
509 --FILE--
510 use warnings 'syntax' ;
511 use abc27 ;
512 use warnings 'abc27' ;
513 abc27::check() ;
514 EXPECT
515 ok1
516 ok2
517 ok3
518 ########
519
520 --FILE-- abc28.pm
521 package abc28 ;
522 use warnings 'io' ;
523 use warnings::register ;
524 sub check {
525   print "ok1\n" if !warnings::enabled ;
526   print "ok2\n" if  warnings::enabled("syntax") ;
527   print "ok3\n" if !warnings::enabled("io") ;
528 }
529 1;
530 --FILE--
531 use warnings 'syntax' ;
532 use abc28 ;
533 abc28::check() ;
534 EXPECT
535 ok1
536 ok2
537 ok3
538 ########
539
540 --FILE-- abc29.pm
541 package abc29 ;
542 no warnings ;
543 use warnings::register ;
544 sub check {
545   print "ok1\n" if warnings::enabled ;
546   print "ok2\n" if warnings::enabled("syntax") ;
547 }
548 1;
549 --FILE--
550 use warnings 'syntax' ;
551 use abc29 ;
552 use warnings 'abc29' ;
553 eval { abc29::check() ; };
554 print $@ ;
555 EXPECT
556 ok1
557 ok2
558 ########
559
560 --FILE-- abc30.pm
561 package abc30 ;
562 use warnings 'io' ;
563 use warnings::register ;
564 sub check {
565   print "ok1\n" if !warnings::enabled ;
566   print "ok2\n" if  warnings::enabled("syntax") ;
567   print "ok3\n" if !warnings::enabled("io") ;
568 }
569 1;
570 --FILE--
571 use warnings 'syntax' ;
572 use abc30 ;
573 eval { abc30::check() ; } ;
574 print $@ ;
575 EXPECT
576 ok1
577 ok2
578 ok3
579 ########
580
581 --FILE-- abc31.pm
582 package abc31 ;
583 use warnings 'io' ;
584 use warnings::register ;
585 sub check {
586   print "ok1\n" if  warnings::enabled ;
587   print "ok2\n" if  warnings::enabled("syntax") ;
588   print "ok3\n" if !warnings::enabled("io") ;
589 }
590 1;
591 --FILE--
592 use warnings 'syntax' ;
593 use abc31 ;
594 use warnings 'abc31' ;
595 sub fred { abc31::check() }
596 fred() ;
597 EXPECT
598 ok1
599 ok2
600 ok3
601 ########
602
603 --FILE-- abc32.pm
604 package abc32 ;
605 use warnings 'io' ;
606 use warnings::register ;
607 sub check {
608   print "ok1\n" if  ! warnings::enabled ;
609 }
610 1;
611 --FILE--
612 use warnings 'syntax' ;
613 use abc32 ;
614 sub fred { no warnings ; abc32::check() }
615 fred() ;
616 EXPECT
617 ok1
618 ########
619
620 --FILE-- abc33.pm
621 package abc33 ;
622 use warnings 'misc' ;
623 use warnings::register;
624 sub check {
625   print "ok1\n" if  warnings::enabled ;
626   print "ok2\n" if  warnings::enabled("syntax") ;
627   print "ok3\n" if  warnings::enabled("io") ;
628   print "ok4\n" if  ! warnings::enabled("misc") ;
629 }
630 1;
631 --FILE--
632 use warnings 'syntax' ;
633 use abc33 ;
634 use warnings 'abc33' ;
635 sub fred { use warnings 'io'  ; abc33::check() }
636 fred() ;
637 EXPECT
638 ok1
639 ok2
640 ok3
641 ok4
642 ########
643
644 --FILE-- abc34.pm
645 package abc34 ;
646 use warnings 'misc' ;
647 use warnings::register;
648 sub check { warnings::warn("hello") }
649 1;
650 --FILE--
651 use abc34;
652 use warnings "abc34" ;
653 abc34::check() ;
654 EXPECT
655 hello at - line 3.
656 ########
657
658 --FILE-- abc35.pm
659 package abc35 ;
660 use warnings::register;
661 sub check { warnings::warn("hello") }
662 1;
663 --FILE--
664 use abc35;
665 abc35::check() ;
666 EXPECT
667 hello at - line 2.
668 ########
669
670 --FILE-- abc36.pm
671 package abc36 ;
672 use warnings::register ;
673 sub check { warnings::warn("hello") }
674 1;
675 --FILE--
676 use abc36;
677 use warnings qw( FATAL deprecated ) ;
678 eval {
679     abc36::check() ;
680   } ;
681 print "[[$@]]\n";
682 EXPECT
683 hello at - line 4.
684 [[]]
685 ########
686
687 --FILE-- abc37.pm
688 package abc37 ;
689 use warnings::register ;
690 sub check { warnings::warn("hello") }
691 1;
692 --FILE--
693 use abc37;
694 use warnings qw( FATAL abc37 ) ;
695 eval {
696   abc37::check() ;
697   } ;
698 print "[[$@]]\n";
699 EXPECT
700 [[hello at - line 4.
701 ]]
702 ########
703 -W
704 --FILE-- abc38.pm
705 package abc38 ;
706 use warnings "io" ;
707 use warnings::register ;
708 sub check {
709   print "ok1\n" if warnings::enabled() ;
710   print "ok2\n" if warnings::enabled("io") ;
711   print "ok3\n" if warnings::enabled("all") ;
712 }
713 1;
714 --FILE--
715 no warnings;
716 use abc38 ;
717 abc38::check() ;
718 EXPECT
719 ok1
720 ok2
721 ok3
722 ########
723 -X
724 --FILE-- abc39.pm
725 package abc39 ;
726 use warnings "io" ;
727 use warnings::register ;
728 sub check {
729   print "ok1\n" if !warnings::enabled() ;
730   print "ok2\n" if !warnings::enabled("io") ;
731   print "ok3\n" if !warnings::enabled("all") ;
732 }
733 1;
734 --FILE--
735 no warnings;
736 use abc39 ;
737 abc39::check() ;
738 EXPECT
739 ok1
740 ok2
741 ok3
742 ########
743
744 --FILE-- abc40.pm
745 package abc40 ;
746 use warnings "io" ;
747 use warnings::register ;
748 sub check {
749   print "ok1\n" if warnings::enabled() ;
750   print "ok2\n" if warnings::enabled("io") ;
751   print "ok3\n" if warnings::enabled("all") ;
752 }
753 1;
754 --FILE--
755 use warnings 'all';
756 use abc40 ;
757 abc40::check() ;
758 EXPECT
759 ok1
760 ok2
761 ok3
762 ########
763
764 --FILE-- abc41.pm
765 package abc41 ;
766 use warnings "io" ;
767 use warnings::register ;
768 sub check {
769   print "ok1\n" if !warnings::enabled() ;
770   print "ok2\n" if !warnings::enabled("io") ;
771   print "ok3\n" if !warnings::enabled("all") ;
772 }
773 1;
774 --FILE--
775 use abc41 ;
776 no warnings ;
777 abc41::check() ;
778 EXPECT
779 ok1
780 ok2
781 ok3
782 ########
783
784 --FILE-- abc42.pm
785 package abc42 ;
786 use warnings "io" ;
787 use warnings::register ;
788 sub check {
789   print "ok1\n" if !warnings::enabled() ;
790   print "ok2\n" if !warnings::enabled("io") ;
791   print "ok3\n" if !warnings::enabled("all") ;
792   warnings::warnif("my message 1") ;
793   warnings::warnif('abc42', "my message 2") ;
794   warnings::warnif('io', "my message 3") ;
795   warnings::warnif('all', "my message 4") ;
796 }
797 1;
798 --FILE--
799 use abc42 ;
800 use warnings 'abc42';
801 no warnings ;
802 abc42::check() ;
803 EXPECT
804 ok1
805 ok2
806 ok3
807 ########
808
809 --FILE-- abc43.pm
810 package abc43 ;
811 use warnings "io" ;
812 use warnings::register ;
813 sub check {
814   print "abc43 self" . (warnings::enabled() ? "" : " not") . " enabled\n" ;
815   print "abc43 def"  . (warnings::enabled('def') ? "" : " not") . " enabled\n" ;
816   print "abc43 all"  . (warnings::enabled('all') ? "" : " not") . " enabled\n" ;
817 }
818 1;
819 --FILE-- def.pm
820 package def ;
821 use warnings "io" ;
822 use warnings::register ;
823 sub check {
824   print "def self" . (warnings::enabled() ? "" : " not") . " enabled\n" ;
825   print "def abc43"  . (warnings::enabled('abc43') ? "" : " not") . " enabled\n" ;
826   print "def all"  . (warnings::enabled('all') ? "" : " not") . " enabled\n" ;
827 }
828 1;
829 --FILE--
830 use abc43 ;
831 use def ;
832 use warnings 'abc43';
833 abc43::check() ;
834 def::check() ;
835 no warnings 'abc43'  ;
836 use warnings 'def'  ;
837 abc43::check() ;
838 def::check() ;
839 use warnings 'abc43'  ;
840 use warnings 'def'  ;
841 abc43::check() ;
842 def::check() ;
843 no warnings 'abc43'  ;
844 no warnings 'def'  ;
845 abc43::check() ;
846 def::check() ;
847 use warnings;
848 abc43::check() ;
849 def::check() ;
850 no warnings 'abc43' ;
851 abc43::check() ;
852 def::check() ;
853 EXPECT
854 abc43 self enabled
855 abc43 def not enabled
856 abc43 all not enabled
857 def self not enabled
858 def abc43 enabled
859 def all not enabled
860 abc43 self not enabled
861 abc43 def enabled
862 abc43 all not enabled
863 def self enabled
864 def abc43 not enabled
865 def all not enabled
866 abc43 self enabled
867 abc43 def enabled
868 abc43 all not enabled
869 def self enabled
870 def abc43 enabled
871 def all not enabled
872 abc43 self not enabled
873 abc43 def not enabled
874 abc43 all not enabled
875 def self not enabled
876 def abc43 not enabled
877 def all not enabled
878 abc43 self enabled
879 abc43 def enabled
880 abc43 all enabled
881 def self enabled
882 def abc43 enabled
883 def all enabled
884 abc43 self not enabled
885 abc43 def enabled
886 abc43 all enabled
887 def self enabled
888 def abc43 not enabled
889 def all enabled
890 ########
891 -w
892 --FILE-- abc44.pm
893 package abc44 ;
894 no warnings ;
895 use warnings::register ;
896 sub check {
897   print "ok1\n" if warnings::enabled() ;
898   print "ok2\n" if warnings::enabled("io") ;
899   print "ok3\n" if warnings::enabled("all") ;
900 }
901 1;
902 --FILE--
903 use abc44 ;
904 abc44::check() ;
905 EXPECT
906 ok1
907 ok2
908 ok3
909 ########
910 -w
911 --FILE-- abc45.pm
912 package abc45 ;
913 no warnings ;
914 use warnings::register ;
915 sub check {
916   print "ok1\n" if !warnings::enabled() ;
917   print "ok2\n" if !warnings::enabled("io") ;
918   print "ok3\n" if !warnings::enabled("all") ;
919 }
920 1;
921 --FILE--
922 use abc45 ;
923 use warnings 'abc45';
924 no warnings ;
925 abc45::check() ;
926 EXPECT
927 ok1
928 ok2
929 ok3
930 ########
931
932 --FILE-- abc46.pm
933 package abc46 ;
934 no warnings ;
935 use warnings::register ;
936 sub check {
937   print "ok1\n" if !warnings::enabled() ;
938   print "ok2\n" if !warnings::enabled("io") ;
939   print "ok3\n" if !warnings::enabled("all") ;
940   warnings::warnif("my message 1") ;
941   warnings::warnif('abc46', "my message 2") ;
942   warnings::warnif('io', "my message 3") ;
943   warnings::warnif('all', "my message 4") ;
944 }
945 1;
946 --FILE--
947 use abc46 ;
948 use warnings 'abc46';
949 no warnings ;
950 BEGIN { $^W = 1 ; }
951 abc46::check() ;
952 EXPECT
953 ok1
954 ok2
955 ok3
956 ########
957
958 --FILE-- abc47.pm
959 package abc47 ;
960 no warnings ;
961 use warnings::register ;
962 sub check {
963   print "ok1\n" if !warnings::enabled() ;
964   print "ok2\n" if !warnings::enabled("io") ;
965   print "ok3\n" if !warnings::enabled("all") ;
966 }
967 1;
968 --FILE--
969 use abc47 ;
970 use warnings 'abc47';
971 no warnings ;
972 $^W = 1 ;
973 abc47::check() ;
974 EXPECT
975 ok1
976 ok2
977 ok3
978 ########
979
980 --FILE-- abc48.pm
981 $| = 1;
982 package abc48 ;
983 no warnings ;
984 use warnings::register ;
985 sub check {
986   print "ok1\n" if  warnings::enabled() ;
987   print "ok2\n" if !warnings::enabled("io") ;
988   print "ok3\n" if !warnings::enabled("all") ;
989   print "ok4\n" if  warnings::enabled("abc48") ;
990   warnings::warn("my message 1") ;
991   warnings::warnif("my message 2") ;
992   warnings::warnif('abc48', "my message 3") ;
993   warnings::warnif('io', "my message 4") ;
994   warnings::warnif('all', "my message 5") ;
995 }
996 sub in2 { no warnings ; check() }
997 sub in1 { no warnings ; in2() }
998 1;
999 --FILE--
1000 use abc48 ;
1001 use warnings 'abc48';
1002 abc48::in1() ;
1003 EXPECT
1004 ok1
1005 ok2
1006 ok3
1007 ok4
1008 my message 1 at - line 3.
1009 my message 2 at - line 3.
1010 my message 3 at - line 3.
1011 ########
1012
1013 --FILE-- def.pm
1014 package def ;
1015 no warnings ;
1016 use warnings::register ;
1017 sub check {
1018   print "ok1\n" if  warnings::enabled() ;
1019   print "ok2\n" if !warnings::enabled("io") ;
1020   print "ok3\n" if !warnings::enabled("all") ;
1021   print "ok4\n" if  warnings::enabled("def") ;
1022   warnings::warn("my message 1") ;
1023   warnings::warnif("my message 2") ;
1024   warnings::warnif('def', "my message 3") ;
1025   warnings::warnif('io', "my message 4") ;
1026   warnings::warnif('all', "my message 5") ;
1027 }
1028 sub in2 { no warnings ; check() }
1029 sub in1 { no warnings ; in2() }
1030 1;
1031 --FILE-- abc49.pm
1032 $| = 1;
1033 package abc49 ;
1034 use def ;
1035 use warnings 'def';
1036 sub in1 { def::in1() ; }
1037 1;
1038 --FILE--
1039 use abc49 ;
1040 no warnings;
1041 abc49::in1() ;
1042 EXPECT
1043 ok1
1044 ok2
1045 ok3
1046 ok4
1047 my message 1 at abc49.pm line 5.
1048 my message 2 at abc49.pm line 5.
1049 my message 3 at abc49.pm line 5.
1050 ########
1051
1052 --FILE-- def.pm
1053 $| = 1;
1054 package def ;
1055 no warnings ;
1056 use warnings::register ;
1057 require Exporter;
1058 @ISA = qw( Exporter ) ;
1059 @EXPORT = qw( in1 ) ;
1060 sub check {
1061   print "ok1\n" if  warnings::enabled() ;
1062   print "ok2\n" if !warnings::enabled("io") ;
1063   print "ok3\n" if !warnings::enabled("all") ;
1064   print "ok4\n" if  warnings::enabled("abc50") ;
1065   print "ok5\n" if !warnings::enabled("def") ;
1066   warnings::warn("my message 1") ;
1067   warnings::warnif("my message 2") ;
1068   warnings::warnif('abc50', "my message 3") ;
1069   warnings::warnif('def', "my message 4") ;
1070   warnings::warnif('io', "my message 5") ;
1071   warnings::warnif('all', "my message 6") ;
1072 }
1073 sub in2 { no warnings ; check() }
1074 sub in1 { no warnings ; in2() }
1075 1;
1076 --FILE-- abc50.pm
1077 package abc50 ;
1078 use warnings::register ;
1079 use def ;
1080 #@ISA = qw(def) ;
1081 1;
1082 --FILE--
1083 use abc50 ;
1084 no warnings;
1085 use warnings 'abc50';
1086 abc50::in1() ;
1087 EXPECT
1088 ok2
1089 ok3
1090 ok4
1091 ok5
1092 my message 1 at - line 4.
1093 my message 3 at - line 4.
1094 ########
1095
1096 --FILE-- def.pm
1097 package def ;
1098 no warnings ;
1099 use warnings::register ;
1100
1101 sub new
1102 {
1103     my $class = shift ;
1104     bless [], $class ;
1105 }
1106
1107 sub check
1108 {
1109   my $self = shift ;
1110   print "ok1\n" if !warnings::enabled() ;
1111   print "ok2\n" if !warnings::enabled("io") ;
1112   print "ok3\n" if !warnings::enabled("all") ;
1113   print "ok4\n" if  warnings::enabled("abc51") ;
1114   print "ok5\n" if !warnings::enabled("def") ;
1115   print "ok6\n" if  warnings::enabled($self) ;
1116
1117   warnings::warn("my message 1") ;
1118   warnings::warn($self, "my message 2") ;
1119
1120   warnings::warnif("my message 3") ;
1121   warnings::warnif('abc51', "my message 4") ;
1122   warnings::warnif('def', "my message 5") ;
1123   warnings::warnif('io', "my message 6") ;
1124   warnings::warnif('all', "my message 7") ;
1125   warnings::warnif($self, "my message 8") ;
1126 }
1127 sub in2
1128 {
1129   no warnings ;
1130   my $self = shift ;
1131   $self->check() ;
1132 }
1133 sub in1
1134 {
1135   no warnings ;
1136   my $self = shift ;
1137   $self->in2();
1138 }
1139 1;
1140 --FILE-- abc51.pm
1141 $| = 1;
1142 package abc51 ;
1143 use warnings::register ;
1144 use def ;
1145 @ISA = qw(def) ;
1146 sub new
1147 {
1148     my $class = shift ;
1149     bless [], $class ;
1150 }
1151
1152 1;
1153 --FILE--
1154 use abc51 ;
1155 no warnings;
1156 use warnings 'abc51';
1157 $a = new abc51 ;
1158 $a->in1() ;
1159 print "**\n";
1160 $b = new def ;
1161 $b->in1() ;
1162 EXPECT
1163 ok1
1164 ok2
1165 ok3
1166 ok4
1167 ok5
1168 ok6
1169 my message 1 at - line 5.
1170 my message 2 at - line 5.
1171 my message 4 at - line 5.
1172 my message 8 at - line 5.
1173 **
1174 ok1
1175 ok2
1176 ok3
1177 ok4
1178 ok5
1179 my message 1 at - line 8.
1180 my message 2 at - line 8.
1181 my message 4 at - line 8.
1182 ########
1183
1184 --FILE-- abc52.pm
1185 package abc52 ;
1186 use warnings::register ('foo', 'bar');
1187 sub check {
1188     warnings::warnif('abc52', "hello");
1189     warnings::warnif('abc52::foo', "hello foo");
1190     warnings::warnif('abc52::bar', "hello bar");
1191 }
1192 1;
1193 --FILE--
1194 use abc52;
1195 use warnings("abc52", "abc52::bar");
1196 abc52::check() ;
1197 EXPECT
1198 hello at - line 3.
1199 hello bar at - line 3.
1200 ########
1201
1202 --FILE--
1203 # test for bug [perl #15395]
1204 my ( $warn_cat, # warning category we'll try to control
1205      $warn_msg, # the error message to catch
1206 );
1207
1208 package SomeModule;
1209 use warnings::register;
1210
1211 BEGIN {
1212     $warn_cat = __PACKAGE__;
1213     $warn_msg = 'from ' . __PACKAGE__;
1214 }
1215
1216 # a sub that generates a random warning
1217 sub gen_warning {
1218     warnings::warnif( $warn_msg );
1219 }
1220
1221 package ClientModule;
1222 # use SomeModule; (would go here)
1223 our @CARP_NOT = ( $warn_cat ); # deliver warnings to *our* client
1224
1225 # call_warner provokes a warning.  It is delivered to its caller,
1226 # who should also be able to control it
1227 sub call_warner {
1228     SomeModule::gen_warning();
1229 }
1230
1231 # user
1232
1233 package main;
1234 my $warn_line = __LINE__ + 3; # this line should be in the error message
1235 eval {
1236     use warnings FATAL => $warn_cat; # we want to know if this works
1237     ClientModule::call_warner();
1238 };
1239
1240 # have we caught an error, and is it the one we generated?
1241 print "ok1\n" if $@ =~ /$warn_msg/;
1242
1243 # does it indicate the right line?
1244 print "ok2\n" if $@ =~ /line $warn_line/;
1245 EXPECT
1246 ok1
1247 ok2
1248 ########
1249
1250 --FILE-- fatal1.pm
1251 package fatal1 ;
1252 no warnings ;
1253 print "ok1\n" if !warnings::fatal_enabled('all') ;
1254 print "ok2\n" if !warnings::fatal_enabled("syntax") ;
1255 1;
1256 --FILE--
1257 use fatal1 ;
1258 EXPECT
1259 ok1
1260 ok2
1261 ########
1262
1263 --FILE-- fatal2.pm
1264 package  fatal2;
1265 no warnings ;
1266 print "ok1\n" if !warnings::fatal_enabled('all') ;
1267 print "ok2\n" if warnings::fatal_enabled("syntax") ;
1268 1;
1269 --FILE--
1270 use warnings FATAL => 'syntax' ;
1271 use fatal2 ;
1272 EXPECT
1273 ok1
1274 ok2
1275 ########
1276
1277 --FILE-- fatal3.pm
1278 package fatal3 ;
1279 no warnings ;
1280 print "ok1\n" if warnings::fatal_enabled('all') ;
1281 print "ok2\n" if warnings::fatal_enabled("syntax") ;
1282 1;
1283 --FILE--
1284 use warnings FATAL => 'all' ;
1285 use fatal3 ;
1286 EXPECT
1287 ok1
1288 ok2
1289 ########
1290
1291 --FILE-- fatal4.pm
1292 package fatal4 ;
1293 no warnings ;
1294 print "ok1\n" if warnings::fatal_enabled('all') ;
1295 print "ok2\n" if warnings::fatal_enabled("void") ;
1296 print "ok3\n" if !warnings::fatal_enabled("syntax") ;
1297 1;
1298 --FILE--
1299 use warnings FATAL => 'all', NONFATAL => 'syntax' ;
1300 use fatal4 ;
1301 EXPECT
1302 ok1
1303 ok2
1304 ok3
1305 ########
1306 { Quux::quux(); }
1307 { no warnings; Quux::quux(); }
1308 { no warnings; use warnings "void"; Quux::quux(); }
1309 { use warnings; Quux::quux(); }
1310 { use warnings; no warnings "void"; Quux::quux(); }
1311 use warnings ();
1312 BEGIN { warnings::register_categories(qw(wibble wobble wabble wubble)); }
1313 package Quux {
1314   sub quux {
1315     warnings::warnif($_, "My $_ is flanged")
1316       foreach qw(wibble wobble wabble wubble);
1317     ();
1318   }
1319 }
1320 { Quux::quux(); }
1321 { no warnings; Quux::quux(); }
1322 { no warnings; use warnings "void"; Quux::quux(); }
1323 { use warnings; Quux::quux(); }
1324 { use warnings; no warnings "void"; Quux::quux(); }
1325 { no warnings; use warnings qw(wibble wabble); Quux::quux(); }
1326 { no warnings; use warnings qw(wobble wubble); Quux::quux(); }
1327 { use warnings; no warnings qw(wibble wabble); Quux::quux(); }
1328 { use warnings; no warnings qw(wobble wubble); Quux::quux(); }
1329 EXPECT
1330 My wibble is flanged at - line 4.
1331 My wobble is flanged at - line 4.
1332 My wabble is flanged at - line 4.
1333 My wubble is flanged at - line 4.
1334 My wibble is flanged at - line 5.
1335 My wobble is flanged at - line 5.
1336 My wabble is flanged at - line 5.
1337 My wubble is flanged at - line 5.
1338 My wibble is flanged at - line 18.
1339 My wobble is flanged at - line 18.
1340 My wabble is flanged at - line 18.
1341 My wubble is flanged at - line 18.
1342 My wibble is flanged at - line 19.
1343 My wobble is flanged at - line 19.
1344 My wabble is flanged at - line 19.
1345 My wubble is flanged at - line 19.
1346 My wibble is flanged at - line 20.
1347 My wabble is flanged at - line 20.
1348 My wobble is flanged at - line 21.
1349 My wubble is flanged at - line 21.
1350 My wobble is flanged at - line 22.
1351 My wubble is flanged at - line 22.
1352 My wibble is flanged at - line 23.
1353 My wabble is flanged at - line 23.