--FILE-- abc
no warnings ;
print "ok1\n" if !warnings::enabled('all') ;
-print "ok2\n" if warnings::enabled("syntax") ;
+print "ok2\n" if !warnings::enabled("syntax") ;
1;
--FILE--
use warnings 'syntax' ;
use warnings 'syntax' ;
print "ok1\n" if ! warnings::enabled('all') ;
print "ok2\n" if ! warnings::enabled("syntax") ;
-print "ok3\n" if warnings::enabled("io") ;
+print "ok3\n" if ! warnings::enabled("io") ;
1;
--FILE--
use warnings 'io' ;
--FILE-- def.pm
use warnings 'syntax' ;
print "ok4\n" if !warnings::enabled('all') ;
-print "ok5\n" if warnings::enabled("io") ;
+print "ok5\n" if !warnings::enabled("io") ;
use abc ;
1;
--FILE--
--FILE--
use warnings 'syntax' ;
use abc ;
-eval { abc::check() ; };
+eval {
+ abc::check() ;
+};
print $@ ;
EXPECT
ok1
--FILE--
use warnings 'syntax' ;
use abc ;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+ } ;
print $@ ;
EXPECT
ok1
--FILE--
use warnings 'syntax' ;
require "abc" ;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+ } ;
print $@ ;
EXPECT
ok1
--FILE--
use warnings 'syntax' ;
require "abc" ;
-eval { use warnings 'io' ; abc::check() ; };
+eval {
+ use warnings 'io' ;
+ abc::check() ;
+};
abc::check() ;
print $@ ;
EXPECT
# check warnings::warn
use warnings ;
-eval { warnings::warn() } ;
+eval {
+ warnings::warn()
+ } ;
print $@ ;
-eval { warnings::warn("fred", "joe") } ;
+eval {
+ warnings::warn("fred", "joe")
+ } ;
print $@ ;
EXPECT
-Usage: warnings::warn([category,] 'message') at - line 4
-unknown warnings category 'fred' at - line 6
+Usage: warnings::warn([category,] 'message') at - line 5
+Unknown warnings category 'fred' at - line 9
########
# check warnings::warnif
use warnings ;
-eval { warnings::warnif() } ;
+eval {
+ warnings::warnif()
+} ;
print $@ ;
-eval { warnings::warnif("fred", "joe") } ;
+eval {
+ warnings::warnif("fred", "joe")
+} ;
print $@ ;
EXPECT
-Usage: warnings::warnif([category,] 'message') at - line 4
-unknown warnings category 'fred' at - line 6
+Usage: warnings::warnif([category,] 'message') at - line 5
+Unknown warnings category 'fred' at - line 9
########
--FILE-- abc.pm
--FILE--
use warnings qw( FATAL deprecated ) ;
use abc;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+ } ;
print "[[$@]]\n";
EXPECT
-hello at - line 3
- eval {...} called at - line 3
+hello at - line 4
[[]]
########
--FILE--
use warnings qw( FATAL io ) ;
use abc;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+} ;
print "[[$@]]\n";
EXPECT
-[[hello at - line 3
- eval {...} called at - line 3
+[[hello at - line 4
]]
########
-W
--FILE--
use abc;
use warnings qw( FATAL deprecated ) ;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+ } ;
print "[[$@]]\n";
EXPECT
-hello at - line 3
- eval {...} called at - line 3
+hello at - line 4
[[]]
########
--FILE--
use abc;
use warnings qw( FATAL abc ) ;
-eval { abc::check() ; } ;
+eval {
+ abc::check() ;
+ } ;
print "[[$@]]\n";
EXPECT
-[[hello at - line 3
- eval {...} called at - line 3
+[[hello at - line 4
]]
########
-W
ok3
ok4
my message 1 at abc.pm line 5
- abc::in1() called at - line 3
my message 2 at abc.pm line 5
- abc::in1() called at - line 3
my message 3 at abc.pm line 5
- abc::in1() called at - line 3
########
--FILE-- def.pm
my message 1 at - line 8
my message 2 at - line 8
my message 4 at - line 8
+########
+
+--FILE--
+# test for bug [perl #15395]
+my ( $warn_cat, # warning category we'll try to control
+ $warn_msg, # the error message to catch
+);
+
+package SomeModule;
+use warnings::register;
+
+BEGIN {
+ $warn_cat = __PACKAGE__;
+ $warn_msg = 'from ' . __PACKAGE__;
+}
+
+# a sub that generates a random warning
+sub gen_warning {
+ warnings::warnif( $warn_msg );
+}
+
+package ClientModule;
+# use SomeModule; (would go here)
+our @CARP_NOT = ( $warn_cat ); # deliver warnings to *our* client
+
+# call_warner provokes a warning. It is delivered to its caller,
+# who should also be able to control it
+sub call_warner {
+ SomeModule::gen_warning();
+}
+
+# user
+
+package main;
+my $warn_line = __LINE__ + 3; # this line should be in the error message
+eval {
+ use warnings FATAL => $warn_cat; # we want to know if this works
+ ClientModule::call_warner();
+};
+
+# have we caught an error, and is it the one we generated?
+print "ok1\n" if $@ =~ /$warn_msg/;
+
+# does it indicate the right line?
+print "ok2\n" if $@ =~ /line $warn_line/;
+EXPECT
+ok1
+ok2