Skip to content

Commit

Permalink
fix(actions):
Browse files Browse the repository at this point in the history
  • Loading branch information
henrikstranneheim committed Dec 14, 2020
1 parent fedb6de commit a5b3400
Show file tree
Hide file tree
Showing 10 changed files with 349 additions and 1,121 deletions.
156 changes: 38 additions & 118 deletions t/gnu_ln.t
@@ -1,88 +1,44 @@
#!/usr/bin/env perl

use Modern::Perl qw{ 2018 };
use warnings qw{FATAL utf8};
use autodie;
use 5.026; #Require at least perl 5.18
use utf8;
use open qw{ :encoding(UTF-8) :std };
use charnames qw{ :full :short };
use 5.026;
use Carp;
use English qw{-no_match_vars};
use Params::Check qw{check allow last_error};

use FindBin qw{$Bin}; #Find directory of script
use File::Basename qw{dirname basename};
use File::Spec::Functions qw{catdir catfile};
use Getopt::Long;
use charnames qw{ :full :short };
use English qw{ -no_match_vars };
use File::Basename qw{ dirname };
use File::Spec::Functions qw{ catdir catfile };
use FindBin qw{ $Bin };
use open qw{ :encoding(UTF-8) :std };
use Params::Check qw{ allow check last_error };
use Test::More;
use Readonly;
use utf8;
use warnings qw{ FATAL utf8 };

## CPANM
use autodie qw{ :all };
use Modern::Perl qw{ 2018 };

## MIPs lib/
use lib catdir( dirname($Bin), 'lib' );
use MIP::Script::Utils qw{help};

our $USAGE = build_usage( {} );

my $VERBOSE = 1;

## Constants
Readonly my $SPACE => q{ };
Readonly my $NEWLINE => qq{\n};

###User Options
GetOptions(
q{h|help} => sub {
done_testing();
say {*STDOUT} $USAGE;
exit;
}, #Display help text
q{v|version} => sub {
done_testing();
say {*STDOUT} $NEWLINE . basename($PROGRAM_NAME) . $SPACE . $NEWLINE;
exit;
}, #Display version number
q{vb|verbose} => $VERBOSE,
)
or (
done_testing(),
help(
{
USAGE => $USAGE,
exit_code => 1,
}
)
);
use lib catdir( dirname($Bin), q{lib} );
use MIP::Constants qw{ $COMMA $SPACE };
use MIP::Test::Commands qw{ test_function };

BEGIN {

### Check all internal dependency modules and imports
##Modules with import
my %perl_module;

$perl_module{'MIP::Script::Utils'} = [qw{help}];

PERL_MODULES:
while ( my ( $module, $module_import ) = each %perl_module ) {
use_ok( $module, @{$module_import} )
or BAIL_OUT q{Cannot load } . $module;
}
use MIP::Test::Fixtures qw{ test_import };

##Modules
my @modules = (q{MIP::Program::Gnu::Coreutils});
### Check all internal dependency modules and imports
## Modules with import
my %perl_module = ( q{MIP::Program::Gnu::Coreutils} => [qw{ gnu_ln }], );

MODULES:
for my $module (@modules) {
require_ok($module) or BAIL_OUT q{Cannot load } . $module;
}
test_import( { perl_module_href => \%perl_module, } );
}

use MIP::Program::Gnu::Coreutils qw{gnu_ln};
use MIP::Test::Commands qw{test_function};
use MIP::Program::Gnu::Coreutils qw{ gnu_ln };

diag( q{Test gnu_ln }
. $MIP::Program::Gnu::Coreutils::VERSION
. q{, Perl }
diag( q{Test gnu_ln from MODULE.pm}
. $COMMA
. $SPACE . q{Perl}
. $SPACE
. $PERL_VERSION
. $SPACE
. $EXECUTABLE_NAME );
Expand All @@ -91,6 +47,10 @@ diag( q{Test gnu_ln }
my @function_base_commands = qw{ ln };

my %base_argument = (
filehandle => {
input => undef,
expected_output => \@function_base_commands,
},
stderrfile_path => {
input => q{stderrfile.test},
expected_output => q{2> stderrfile.test},
Expand All @@ -103,10 +63,6 @@ my %base_argument = (
input => q{stdoutfile.test},
expected_output => q{> stdoutfile.test},
},
filehandle => {
input => undef,
expected_output => \@function_base_commands,
},
);

## Can be duplicated with %base and/or %specific to enable testing of each individual argument
Expand All @@ -122,14 +78,14 @@ my %required_argument = (
);

my %specific_argument = (
symbolic => {
input => 1,
expected_output => q{--symbolic},
},
force => {
input => 1,
expected_output => q{--force},
},
symbolic => {
input => 1,
expected_output => q{--symbolic},
},
);

## Coderef - enables generalized use of generate call
Expand All @@ -139,51 +95,15 @@ my $module_function_cref = \&gnu_ln;
my @arguments = ( \%required_argument, \%specific_argument );

foreach my $argument_href (@arguments) {
my @commands = test_function(
test_function(
{
argument_href => $argument_href,
required_argument_href => \%required_argument,
module_function_cref => $module_function_cref,
function_base_commands_ref => \@function_base_commands,
do_test_base_command => 1,
module_function_cref => $module_function_cref,
required_argument_href => \%required_argument,
}
);
}

done_testing();

######################
####SubRoutines#######
######################

sub build_usage {

##build_usage

##Function : Build the USAGE instructions
##Returns : ""
##Arguments: $program_name
## : $program_name => Name of the script

my ($arg_href) = @_;

## Default(s)
my $program_name;

my $tmpl = {
program_name => {
default => basename($PROGRAM_NAME),
strict_type => 1,
store => \$program_name,
},
};

check( $tmpl, $arg_href, 1 ) or croak qw(Could not parse arguments!);

return <<"END_USAGE";
$program_name [options]
-vb/--verbose Verbose
-h/--help Display this help message
-v/--version Display version
END_USAGE
}
146 changes: 36 additions & 110 deletions t/gnu_wait.t
@@ -1,90 +1,56 @@
#!/usr/bin/env perl

use Modern::Perl qw{ 2018 };
use warnings qw(FATAL utf8);
use autodie;
use 5.026; #Require at least perl 5.18
use utf8;
use open qw( :encoding(UTF-8) :std );
use charnames qw( :full :short );
use 5.026;
use Carp;
use English qw(-no_match_vars);
use Params::Check qw(check allow last_error);

use FindBin qw($Bin); #Find directory of script
use File::Basename qw(dirname basename);
use File::Spec::Functions qw(catfile catdir devnull);
use Getopt::Long;
use charnames qw{ :full :short };
use English qw{ -no_match_vars };
use File::Basename qw{ dirname };
use File::Spec::Functions qw{ catdir };
use FindBin qw{ $Bin };
use open qw{ :encoding(UTF-8) :std };
use Params::Check qw{ allow check last_error };
use Test::More;
use utf8;
use warnings qw{ FATAL utf8 };

## Third party module(s)
use List::Util qw(any);
## CPANM
use autodie qw{ :all };
use Modern::Perl qw{ 2018 };

## MIPs lib/
use lib catdir( dirname($Bin), 'lib' );
use MIP::Script::Utils qw(help);
use MIP::Test::Writefile qw(test_write_to_file);

our $USAGE = build_usage( {} );

my $VERBOSE = 1;

###User Options
GetOptions(
'h|help' => sub {
done_testing();
print {*STDOUT} $USAGE, "\n";
exit;
}, #Display help text
'v|version' => sub {
done_testing();
print {*STDOUT} "\n" . basename($PROGRAM_NAME) . q{ }, "\n\n";
exit;
}, #Display version number
'vb|verbose' => $VERBOSE,
)
or (
done_testing(),
help(
{
USAGE => $USAGE,
exit_code => 1,
}
)
);
use lib catdir( dirname($Bin), q{lib} );
use MIP::Constants qw{ $COMMA $SPACE };
use MIP::Test::Commands qw{ test_function };

BEGIN {

### Check all internal dependency modules and imports
##Modules with import
my %perl_module;

$perl_module{'MIP::Script::Utils'} = [qw(help)];
use MIP::Test::Fixtures qw{ test_import };

while ( my ( $module, $module_import ) = each %perl_module ) {

use_ok( $module, @{$module_import} )
or BAIL_OUT q{Cannot load } . $module;
}

##Modules
my @modules = ('MIP::Program::Gnu::Bash');

for my $module (@modules) {
### Check all internal dependency modules and imports
## Modules with import
my %perl_module = ( q{MIP::Program::Gnu::Bash} => [qw{ gnu_wait }], );

require_ok($module) or BAIL_OUT q{Cannot load } . $module;
}
test_import( { perl_module_href => \%perl_module, } );
}

use MIP::Program::Gnu::Bash qw(gnu_wait);
use MIP::Test::Commands qw(test_function);
use MIP::Program::Gnu::Bash qw{ gnu_wait };

diag("Test gnu_wait $MIP::Program::Gnu::Bash::VERSION, Perl $^V, $EXECUTABLE_NAME");
diag( q{Test gnu_wait from Bash.pm}
. $COMMA
. $SPACE . q{Perl}
. $SPACE
. $PERL_VERSION
. $SPACE
. $EXECUTABLE_NAME );

## Base arguments
my @function_base_commands = 'wait';
my @function_base_commands = qw{ wait };

my %base_argument = (
filehandle => {
input => undef,
expected_output => q{wait},
},
stderrfile_path => {
input => q{stderrfile.test},
expected_output => q{2> stderrfile.test},
Expand All @@ -93,10 +59,6 @@ my %base_argument = (
input => q{stderrfile.test},
expected_output => q{2>> stderrfile.test},
},
filehandle => {
input => undef,
expected_output => q{wait},
},
);

## Specific arguments
Expand All @@ -115,49 +77,13 @@ my @arguments = ( \%base_argument, \%specific_argument );

foreach my $argument_href (@arguments) {

my @commands = test_function(
test_function(
{
argument_href => $argument_href,
module_function_cref => $module_function_cref,
function_base_commands_ref => \@function_base_commands,
module_function_cref => $module_function_cref,
}
);
}

done_testing();

######################
####SubRoutines#######
######################

sub build_usage {

##build_usage

##Function : Build the USAGE instructions
##Returns : ""
##Arguments: $program_name
## : $program_name => Name of the script

my ($arg_href) = @_;

## Default(s)
my $program_name;

my $tmpl = {
program_name => {
default => basename($PROGRAM_NAME),
strict_type => 1,
store => \$program_name,
},
};

check( $tmpl, $arg_href, 1 ) or croak qw(Could not parse arguments!);

return <<"END_USAGE";
$program_name [options]
-vb/--verbose Verbose
-h/--help Display this help message
-v/--version Display version
END_USAGE
}

0 comments on commit a5b3400

Please sign in to comment.