Badger
view release on metacpan or search on metacpan
lib/Badger/Test/Manager.pm view on Meta::CPAN
my $self = shift->prototype;
my $msg = shift || $self->test_name;
return $self->error_msg('no_plan')
unless $self->{ plan };
$self->{ tested }++;
$self->{ skipped }++;
return $self->test_msg( skip_one => $self->{ count }++, $msg );
}
sub skip_some {
my ($self, $n, $msg) = @_;
$n = int $n;
return unless $n > 0;
while ($n--) {
$self->skip($msg);
}
}
sub skip_rest {
my $self = shift->prototype;
my $msg = shift;
my $plan = $self->{ plan };
while ($self->{ tested } < $plan) {
$self->skip($msg);
}
exit;
}
sub skip_all ($;$) {
my $self = shift->prototype;
$self->test_msg( skip_all => shift || $self->{ reason } );
exit;
}
sub result {
my $self = shift->prototype;
my $ok = shift;
return $self->error_msg('no_plan')
unless $self->{ plan };
if ($ok) {
$self->{ passed }++;
return $self->test_msg( ok => @_ );
}
else {
$self->{ failed }++;
return $self->test_msg( not_ok => @_ );
}
}
sub test_msg {
my $self = shift;
print $self->message(@_);
}
sub test_name ($) {
my $self = shift->prototype;
my ($pkg, $file, $line) = caller(2);
$self->message( name => $self->{ count }, $file, $line );
}
sub different {
my ($self, $expect, $result) = @_;
my ($pad_exp, $pad_res) = ($expect, $result);
for ($pad_exp, $pad_res) {
s/\n/\n# |/g;
}
my $msg = $self->message( not_eq => $pad_exp, $pad_res );
return $msg
unless $CAN_DIFF;
my $diffs = diff( map { [ split(/\n/) ] } $expect, $result );
my $n = 0;
my $m = scalar @$diffs;
foreach my $hunk (@$diffs) {
$msg .= $self->message( hunk => ++$n, $m );
foreach my $delta (@$hunk) {
$msg .= $self->message( delta => @$delta );
}
# $msg .= "\n";
}
return $msg;
}
sub colour {
my $self = shift->prototype;
my $ansi = ANSI_colours;
# enable colour mode by inserting ANSI escapes into $MESSAGES
if (@_ && ($self->{ colour } = shift)) {
foreach my $col (keys %$SCHEME) {
my $code = $ansi->{ $col }
|| $self->error("Invalid colour name in \$SCHEME: $col\n");
$MESSAGES->{ $_ } = ANSI_escape($code, $MESSAGES->{ $_ })
for split(/\s+/, $SCHEME->{ $col });
}
Badger::Debug->enable_colour;
}
return $self->{ colour };
}
sub flush {
my $self = shift->prototype;
my $results = shift || $self->{ results };
return unless @$results;
$self->{ plan } ||= @$results;
while (@$results) {
my $test = shift @$results;
$self->result(@$test);
}
}
sub summary {
my $self = shift->prototype;
return @_
( run in 0.700 second using v1.01-cache-2.11-cpan-5a3173703d6 )