Test.pm provides perl script testing base class

This commit is contained in:
Jed Reynolds
2019-11-25 13:15:43 -08:00
parent 0eaac34317
commit 50c859d487

61
LANforge/Test.pm Normal file
View File

@@ -0,0 +1,61 @@
# test utilities for LANforge scripts
package LANforge::Test;
use strict;
use warnings;
use diagnostics;
use Carp;
use Test2::V0;
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
$SIG{ __WARN__ } = sub { Carp::confess( @_ ) };
# Un-buffer output
$| = 1;
use Data::Dumper;
if (defined $ENV{'DEBUG'}) {
use Data::Dumper;
use diagnostics;
use Carp;
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
}
require Exporter;
our @EXPORT_OK=qw(new test);
our $FAIL = 0;
our $OK = 1;
sub new {
my $class = shift;
my $self = {};
my %parm = @_;
$self->{'Name'} = $parm{'Name'};
$self->{'Desc'} = $parm{'Desc'};
$self->{'Errors'} = [];
$self->{'ExpectedNumber'} = 1;
$self->{'Test'} = undef;
if (defined $parm{'Test'}) {
$self->{'Test'} = $parm{'Test'};
}
if (defined $parm{'ExpectedNumber'}) {
$self->{'ExpectedNumber'} = $parm{'ExpectedNumber'};
}
bless $self, $class;
return $self;
}
sub test {
my $self = shift;
if (! (defined $self->{'Test'})) {
return $::FAIL;
}
return &{$self->{'Test'}}();
}
sub test_err {
my $self = shift;
for my $e (@_) {
my $ref = "".(caller(1))[3].":".(caller(1))[2]."";
push (@{$self->{'Errors'}}, "$ref: $e");
}
}
1;