Silence a couple of compile warnings.
[p5sagit/p5-mst-13.2.git] / lib / Test / Harness / Results.pm
CommitLineData
5b1ebecd 1# -*- Mode: cperl; cperl-indent-level: 4 -*-
2package Test::Harness::Results;
3
4use strict;
5use vars qw($VERSION);
6$VERSION = '0.01';
7
8=head1 NAME
9
10Test::Harness::Results - object for tracking results from a single test file
11
12=head1 SYNOPSIS
13
14One Test::Harness::Results object represents the results from one
15test file getting analyzed.
16
17=head1 CONSTRUCTION
18
19=head2 new()
20
21 my $results = new Test::Harness::Results;
22
23Create a test point object. Typically, however, you'll not create
24one yourself, but access a Results object returned to you by
25Test::Harness::Results.
26
27=cut
28
29sub new {
30 my $class = shift;
31 my $self = bless {}, $class;
32
33 return $self;
34}
35
36=head1 ACCESSORS
37
38The following data points are defined:
39
40 passing true if the whole test is considered a pass
41 (or skipped), false if its a failure
42
43 exit the exit code of the test run, if from a file
44 wait the wait code of the test run, if from a file
45
46 max total tests which should have been run
47 seen total tests actually seen
48 skip_all if the whole test was skipped, this will
49 contain the reason.
50
51 ok number of tests which passed
52 (including todo and skips)
53
54 todo number of todo tests seen
55 bonus number of todo tests which
56 unexpectedly passed
57
58 skip number of tests skipped
59
60So a successful test should have max == seen == ok.
61
62
63There is one final item, the details.
64
65 details an array ref reporting the result of
66 each test looks like this:
67
68 $results{details}[$test_num - 1] =
69 { ok => is the test considered ok?
70 actual_ok => did it literally say 'ok'?
71 name => name of the test (if any)
72 diagnostics => test diagnostics (if any)
73 type => 'skip' or 'todo' (if any)
74 reason => reason for the above (if any)
75 };
76
77Element 0 of the details is test #1. I tried it with element 1 being
78#1 and 0 being empty, this is less awkward.
79
80
81Each of the following fields has a getter and setter method.
82
83=over 4
84
85=item * wait
86
87=item * exit
88
89=cut
90
91sub set_wait { my $self = shift; $self->{wait} = shift }
92sub wait {
93 my $self = shift;
94 return $self->{wait} || 0;
95}
96
97sub set_skip_all { my $self = shift; $self->{skip_all} = shift }
98sub skip_all {
99 my $self = shift;
100 return $self->{skip_all};
101}
102
103sub inc_max { my $self = shift; $self->{max} += (@_ ? shift : 1) }
104sub max {
105 my $self = shift;
106 return $self->{max} || 0;
107}
108
109sub set_passing { my $self = shift; $self->{passing} = shift }
110sub passing {
111 my $self = shift;
112 return $self->{passing} || 0;
113}
114
115sub inc_ok { my $self = shift; $self->{ok} += (@_ ? shift : 1) }
116sub ok {
117 my $self = shift;
118 return $self->{ok} || 0;
119}
120
121sub set_exit { my $self = shift; $self->{exit} = shift }
122sub exit {
123 my $self = shift;
124 return $self->{exit} || 0;
125}
126
127sub inc_bonus { my $self = shift; $self->{bonus}++ }
128sub bonus {
129 my $self = shift;
130 return $self->{bonus} || 0;
131}
132
133sub set_skip_reason { my $self = shift; $self->{skip_reason} = shift }
134sub skip_reason {
135 my $self = shift;
136 return $self->{skip_reason} || 0;
137}
138
139sub inc_skip { my $self = shift; $self->{skip}++ }
140sub skip {
141 my $self = shift;
142 return $self->{skip} || 0;
143}
144
145sub inc_todo { my $self = shift; $self->{todo}++ }
146sub todo {
147 my $self = shift;
148 return $self->{todo} || 0;
149}
150
151sub inc_seen { my $self = shift; $self->{seen}++ }
152sub seen {
153 my $self = shift;
154 return $self->{seen} || 0;
155}
156
157sub set_details {
158 my $self = shift;
159 my $index = shift;
160 my $details = shift;
161
162 my $array = ($self->{details} ||= []);
163 $array->[$index-1] = $details;
164}
165
166sub details {
167 my $self = shift;
168 return $self->{details} || [];
169}
170
1711;