changing the module name.
This commit is contained in:
parent
886a2b8b19
commit
f56a78841f
@ -1,4 +1,4 @@
|
||||
package Owl::TestRunner v0.0.1;
|
||||
package LPSC::Builder::TestRunner;
|
||||
|
||||
use v5.30.0;
|
||||
|
||||
@ -16,8 +16,6 @@ use Capture::Tiny qw/tee_merged/;
|
||||
use Term::ANSIColor qw/color/;
|
||||
|
||||
my $db_file = path($0)->parent->child('test.db');
|
||||
my %test_files_success_status;
|
||||
tie %test_files_success_status, 'DB_File', $db_file;
|
||||
|
||||
my @errors;
|
||||
|
||||
@ -33,8 +31,8 @@ my $ERROR_CODE_SOME_TEST_FAILED = 500;
|
||||
);
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $self = bless {}, $class;
|
||||
my $class = shift;
|
||||
my $self = bless {}, $class;
|
||||
|
||||
my %params = $validator->(@_);
|
||||
|
||||
@ -45,85 +43,88 @@ my $ERROR_CODE_SOME_TEST_FAILED = 500;
|
||||
return $self;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub _options {
|
||||
my $self = shift;
|
||||
if ( !defined $self->{options} ) {
|
||||
$self->{options} = {};
|
||||
$self->_getopt;
|
||||
$self->_getopt;
|
||||
}
|
||||
return $self->{options};
|
||||
}
|
||||
|
||||
sub _getopt {
|
||||
my $self = shift;
|
||||
my ($opt, $usage) = describe_options(
|
||||
'./test_runner.pl %o',
|
||||
[ 'clean|c', "Cleans the previously succeded tests", ],
|
||||
[ 'halt|h', "Halts on error", ],
|
||||
[],
|
||||
[ 'help', "print usage message and exit", { shortcircuit => 1 } ],
|
||||
);
|
||||
|
||||
print($usage->text), die if $opt->help;
|
||||
my $options = $self->_options;
|
||||
$options->{halt} = $opt->halt;
|
||||
$options->{clean} = $opt->clean;
|
||||
my ( $opt, $usage ) = describe_options(
|
||||
'./test_runner.pl %o',
|
||||
[ 'clean|c', "Cleans the previously succeded tests", ],
|
||||
[ 'halt|h', "Halts on error", ],
|
||||
[],
|
||||
[ 'help', "print usage message and exit", { shortcircuit => 1 } ],
|
||||
);
|
||||
|
||||
print( $usage->text ), die if $opt->help;
|
||||
my $options = $self->_options;
|
||||
$options->{halt} = $opt->halt;
|
||||
$options->{clean} = $opt->clean;
|
||||
}
|
||||
|
||||
sub run {
|
||||
my $self = shift;
|
||||
if ($self->_options->{clean}) {
|
||||
%test_files_success_status = ();
|
||||
}
|
||||
for my $test_file (@{$self->{test_files}}) {
|
||||
if ($self->_test_already_succeded($test_file)) {
|
||||
say omited() . "$test_file last test was successful.";
|
||||
next;
|
||||
}
|
||||
my $return_code;
|
||||
my ($merged) = tee_merged {
|
||||
$return_code = system $test_file;
|
||||
};
|
||||
$test_files_success_status{$test_file} = !$return_code;
|
||||
if ($return_code) {
|
||||
push @errors, error() . "File $test_file\n" . $merged;
|
||||
if ($self->_options->{halt}) {
|
||||
$self->show_errors;
|
||||
}
|
||||
}
|
||||
}
|
||||
$self->show_errors;
|
||||
my $self = shift;
|
||||
if ( $self->_options->{clean} ) {
|
||||
%test_files_success_status = ();
|
||||
}
|
||||
for my $test_file ( @{ $self->{test_files} } ) {
|
||||
if ( $self->_test_already_succeded($test_file) ) {
|
||||
say omited() . "$test_file last test was successful.";
|
||||
next;
|
||||
}
|
||||
my $return_code;
|
||||
my ($merged) = tee_merged {
|
||||
$return_code = system $test_file;
|
||||
};
|
||||
my %test_files_success_status;
|
||||
tie %test_files_success_status, 'DB_File', $db_file;
|
||||
$test_files_success_status{$test_file} = !$return_code;
|
||||
if ($return_code) {
|
||||
push @errors, error() . "File $test_file\n" . $merged;
|
||||
if ( $self->_options->{halt} ) {
|
||||
$self->show_errors;
|
||||
}
|
||||
}
|
||||
}
|
||||
$self->show_errors;
|
||||
}
|
||||
|
||||
sub show_errors {
|
||||
for my $error (@errors) {
|
||||
say $error;
|
||||
}
|
||||
if (@errors) {
|
||||
exit $ERROR_CODE_SOME_TEST_FAILED;
|
||||
}
|
||||
exit 0;
|
||||
for my $error (@errors) {
|
||||
say $error;
|
||||
}
|
||||
if (@errors) {
|
||||
exit $ERROR_CODE_SOME_TEST_FAILED;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
sub omited {
|
||||
return color('blue').'[[OMITED]] '.reset_color();
|
||||
return color('blue') . '[[OMITED]] ' . reset_color();
|
||||
}
|
||||
|
||||
sub error {
|
||||
return color('red').'[[ERROR]] '.reset_color();
|
||||
return color('red') . '[[ERROR]] ' . reset_color();
|
||||
}
|
||||
|
||||
sub reset_color {
|
||||
return color('reset');
|
||||
return color('reset');
|
||||
}
|
||||
|
||||
sub _test_already_succeded {
|
||||
my $self = shift;
|
||||
my $self = shift;
|
||||
|
||||
my $test = shift;
|
||||
|
||||
return $test_files_success_status{$test};
|
||||
my $test = shift;
|
||||
my %test_files_success_status;
|
||||
tie %test_files_success_status, 'DB_File', $db_file;
|
||||
|
||||
return $test_files_success_status{$test};
|
||||
}
|
||||
1;
|
||||
|
Loading…
Reference in New Issue
Block a user