Commit | Line | Data |
3fea05b9 |
1 | use strict; |
2 | |
3 | package Test::NoWarnings::Warning; |
4 | |
5 | use Carp; |
6 | |
7 | my $has_st = eval "require Devel::StackTrace" || 0; |
8 | |
9 | sub new |
10 | { |
11 | my $pkg = shift; |
12 | |
13 | my %args = @_; |
14 | |
15 | my $self = bless \%args, $pkg; |
16 | |
17 | return $self; |
18 | } |
19 | |
20 | sub getTrace |
21 | { |
22 | my $self = shift; |
23 | |
24 | return $self->{Trace}; |
25 | } |
26 | |
27 | sub fillTrace |
28 | { |
29 | my $self = shift; |
30 | $self->{Trace} = Devel::StackTrace->new( |
31 | ignore_class => [__PACKAGE__, @_], |
32 | ) if $has_st; |
33 | } |
34 | |
35 | sub getCarp |
36 | { |
37 | my $self = shift; |
38 | |
39 | return $self->{Carp}; |
40 | } |
41 | |
42 | sub fillCarp |
43 | { |
44 | my $self = shift; |
45 | |
46 | my $msg = shift; |
47 | |
48 | $Carp::Internal{__PACKAGE__.""}++; |
49 | local $Carp::CarpLevel = $Carp::CarpLevel + 1; |
50 | $self->{Carp} = Carp::longmess($msg); |
51 | $Carp::Internal{__PACKAGE__.""}--; |
52 | } |
53 | |
54 | sub getMessage |
55 | { |
56 | my $self = shift; |
57 | |
58 | return $self->{Message}; |
59 | } |
60 | |
61 | sub setMessage |
62 | { |
63 | my $self = shift; |
64 | |
65 | $self->{Message} = shift; |
66 | } |
67 | |
68 | sub fillTest |
69 | { |
70 | my $self = shift; |
71 | |
72 | my $builder = shift; |
73 | |
74 | my $prev_test = $builder->current_test; |
75 | $self->{Test} = $prev_test; |
76 | |
77 | my @tests = $builder->details; |
78 | my $prev_test_name = $prev_test ? $tests[$prev_test - 1]->{name} : ""; |
79 | $self->{TestName} = $prev_test_name; |
80 | } |
81 | |
82 | sub getTest |
83 | { |
84 | my $self = shift; |
85 | |
86 | return $self->{Test}; |
87 | } |
88 | |
89 | sub getTestName |
90 | { |
91 | my $self = shift; |
92 | |
93 | return $self->{TestName}; |
94 | } |
95 | |
96 | sub toString |
97 | { |
98 | my $self = shift; |
99 | |
100 | return <<EOM; |
101 | Previous test $self->{Test} '$self->{TestName}' |
102 | $self->{Carp} |
103 | EOM |
104 | } |
105 | |
106 | 1; |