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