1package Test::NoWarnings::Warning; 2 3use 5.006; 4use strict; 5use Carp (); 6 7use vars qw{$VERSION}; 8BEGIN { 9 $VERSION = '1.04'; 10 11 # Optional stacktrace support 12 eval "require Devel::StackTrace"; 13} 14 15sub new { 16 my $class = shift; 17 bless { @_ }, $class; 18} 19 20sub getTrace { 21 $_[0]->{Trace}; 22} 23 24sub fillTrace { 25 my $self = shift; 26 $self->{Trace} = Devel::StackTrace->new( 27 ignore_class => [__PACKAGE__, @_], 28 ) if $Devel::StackTrace::VERSION; 29} 30 31sub getCarp { 32 $_[0]->{Carp}; 33} 34 35sub fillCarp { 36 my $self = shift; 37 my $msg = shift; 38 $Carp::Internal{ __PACKAGE__ . "" }++; 39 local $Carp::CarpLevel = $Carp::CarpLevel + 1; 40 $self->{Carp} = Carp::longmess($msg); 41 $Carp::Internal{ __PACKAGE__ . "" }--; 42} 43 44sub getMessage { 45 $_[0]->{Message}; 46} 47 48sub setMessage { 49 $_[0]->{Message} = $_[1]; 50} 51 52sub fillTest { 53 my $self = shift; 54 my $builder = shift; 55 my $prev_test = $builder->current_test; 56 $self->{Test} = $prev_test; 57 my @tests = $builder->details; 58 my $prev_test_name = $prev_test ? $tests[$prev_test - 1]->{name} : ""; 59 $self->{TestName} = $prev_test_name; 60} 61 62sub getTest { 63 $_[0]->{Test}; 64} 65 66sub getTestName { 67 $_[0]->{TestName}; 68} 69 70sub toString { 71 my $self = shift; 72 return <<EOM; 73 Previous test $self->{Test} '$self->{TestName}' 74 $self->{Carp} 75EOM 76} 77 781; 79