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