require './test.pl';
}
+use warnings;
+no warnings "once";
+
my $Is_VMS = $^O eq 'VMS';
use Carp qw(carp cluck croak confess);
-plan tests => 37;
+plan tests => 39;
ok 1;
ok(1);
# test for caller_info API
-my $eval = "use Carp::Heavy; return Carp::caller_info(0);";
+my $eval = "use Carp; return Carp::caller_info(0);";
my %info = eval($eval);
is($info{sub_name}, "eval '$eval'", 'caller_info API');
-# test for '...::CARP_NOT used only once' warning from Carp::Heavy
+# test for '...::CARP_NOT used only once' warning from Carp
my $warning;
eval {
BEGIN {
- $^W = 1;
local $SIG{__WARN__} =
sub { if( defined $^S ){ warn $_[0] } else { $warning = $_[0] } }
}
package Z;
BEGIN { eval { Carp::croak() } }
};
-ok !$warning, q/'...::CARP_NOT used only once' warning from Carp::Heavy/;
+ok !$warning, q/'...::CARP_NOT used only once' warning from Carp/;
# Test the location of error messages.
like(A::short(), qr/^Error at C/, "Short messages skip carped package");
cluck_undef (0, "undef", 2, undef, 4);
+# check that Carp respects CORE::GLOBAL::caller override after Carp
+# has been compiled
+{
+ my $accum = '';
+ local *CORE::GLOBAL::caller = sub {
+ local *__ANON__="fakecaller";
+ my @c=CORE::caller(@_);
+ $c[0] ||= 'undef';
+ $accum .= "@c[0..3]\n";
+ return CORE::caller(($_[0]||0)+1);
+ };
+ eval "scalar caller()";
+ like( $accum, qr/main::fakecaller/, "test CORE::GLOBAL::caller override in eval");
+ $accum = '';
+ A::long();
+ like( $accum, qr/main::fakecaller/, "test CORE::GLOBAL::caller override in Carp");
+}
+
# line 1 "A"
package A;
sub short {