File Coverage

blib/lib/Test/Run/Obj/Error.pm
Criterion Covered Total %
statement 56 56 100.0
branch 1 2 50.0
condition n/a
subroutine 19 19 100.0
pod 3 3 100.0
total 79 80 98.7


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             Test::Run::Obj::Error - an error class hierarchy for Test::Run.
4              
5             =head1 DESCRIPTION
6              
7             This module provides an error class hieararchy for Test::Run. This is used
8             for throwing exceptions that should be handled programatically.
9              
10             =head1 METHODS
11             =cut
12              
13              
14             package Test::Run::Obj::Error;
15              
16 16     16   145676 use strict;
  16         54  
  16         703  
17 16     16   101 use warnings;
  16         49  
  16         783  
18              
19 16     16   959 use Moose;
  16         479277  
  16         261  
20              
21 16     16   158105 use Test::Run::Base::Struct;
  16         133  
  16         705  
22              
23 16     16   114 use Scalar::Util ();
  16         31  
  16         440  
24              
25 16     16   102 use vars qw(@ISA @fields);
  16         31  
  16         1281  
26              
27 16     16   103 use MRO::Compat;
  16         34  
  16         1470  
28              
29              
30             sub _polymorphic_stringify
31             {
32 24     24   4756 my $self = shift;
33 24         108 return $self->stringify(@_);
34             }
35              
36             use overload
37 16         204 '""' => \&_polymorphic_stringify,
38             'fallback' => 1
39 16     16   104 ;
  16         29  
40              
41             extends(qw(Test::Run::Base::Struct));
42              
43             has 'package' => (is => "rw", isa => "Str");
44             has 'file' => (is => "rw", isa => "Str");
45             has 'line' => (is => "rw", isa => "Num");
46             has 'text' => (is => "rw", isa => "Str");
47              
48             =head2 BUILD
49              
50             For Moose.
51              
52             =cut
53              
54             sub BUILD
55             {
56 11     11 1 131 my $self = shift;
57              
58 11         134 my ($pkg,$file,$line) = caller(1);
59 11         659 $self->package($pkg);
60 11         424 $self->file($file);
61 11         460 $self->line($line);
62             }
63              
64             =head2 $self->stringify()
65              
66             Stringifies the error. Returns the text() field by default.
67              
68             =cut
69              
70             sub stringify
71             {
72 25     25 1 40 my $self = shift;
73 25         747 return $self->text();
74             }
75              
76             1;
77              
78             package Test::Run::Obj::Error::TestsFail;
79              
80 16     16   4651 use vars qw(@ISA);
  16         104  
  16         1313  
81              
82             @ISA = (qw(Test::Run::Obj::Error));
83              
84             package Test::Run::Obj::Error::TestsFail::NoTestsRun;
85              
86 16     16   137 use vars qw(@ISA);
  16         110  
  16         1022  
87              
88             @ISA = (qw(Test::Run::Obj::Error::TestsFail));
89              
90             package Test::Run::Obj::Error::TestsFail::Other;
91              
92 16     16   208 use vars qw(@ISA);
  16         92  
  16         1174  
93              
94             @ISA = (qw(Test::Run::Obj::Error::TestsFail));
95              
96             package Test::Run::Obj::Error::TestsFail::NoOutput;
97              
98 16     16   89 use vars qw(@ISA);
  16         52  
  16         1006  
99              
100             @ISA = (qw(Test::Run::Obj::Error::TestsFail));
101              
102             package Test::Run::Obj::Error::TestsFail::Bailout;
103              
104 16     16   118 use Moose;
  16         31  
  16         174  
105              
106              
107             extends(qw(Test::Run::Obj::Error::TestsFail));
108              
109             has 'bailout_reason' => (is => "rw", isa => "Str");
110              
111             sub stringify
112             {
113 8     8 1 20 my $self = shift;
114 8 50       449 return "FAILED--Further testing stopped" .
115             ($self->bailout_reason() ?
116             (": " . $self->bailout_reason() . "\n") :
117             ".\n"
118             );
119             }
120              
121             package Test::Run::Obj::Error::Straps;
122              
123 16     16   128271 use vars qw(@ISA);
  16         33  
  16         1321  
124              
125             @ISA = (qw(Test::Run::Obj::Error));
126              
127             package Test::Run::Obj::Error::Straps::CannotRunPerl;
128              
129 16     16   116 use vars qw(@ISA);
  16         28  
  16         1465  
130              
131             @ISA = (qw(Test::Run::Obj::Error::Straps));
132              
133             1;
134              
135             =head1 LICENSE
136              
137             This file is licensed under the MIT X11 License:
138              
139             http://www.opensource.org/licenses/mit-license.php
140              
141             =cut
142