Code-Statistics
view release on metacpan or search on metacpan
t/lib/ShellTest.pm view on Meta::CPAN
use strict;
use warnings;
package ShellTest;
use parent 'Test::Class::TestGroup';
use Test::More;
use Test::BinRegression;
use File::Slurp 'read_file';
use Code::Statistics::App;
sub make_fixture : Test(setup) {
my ( $self ) = @_;
$self->{basic_collect_args} = [ qw(
collect
--dirs=data/shelltest/basic_collect
--relative_paths
--foreign_paths=Unix
--conf_file=data/config/shelltestrc
--global_conf_file=data/config/does_not_exist
) ];
return;
}
sub basic_collect : TestGroup {
my ( $self ) = @_;
local @ARGV = @{ $self->{basic_collect_args} };
$self->check_codestat_shell_app_against( "data/json/basic_collect.json" );
ok( -e 'codestat.out', 'output file is generated' );
ok_regression(
sub { $self->get_codestat_out_file },
"data/json/basic_collect.json",
'dumped file matches expected output'
);
@ARGV = qw( report --quiet --file_ignore=;Ignored );
$self->check_codestat_shell_app_against( "data/json/basic_report.json" );
unlink( 'codestat.out' );
return;
}
sub nodump_collect : TestGroup {
my ( $self ) = @_;
local @ARGV = (
@{$self->{basic_collect_args}},
qw( --no_dump )
);
$self->check_codestat_shell_app_against( "data/json/basic_collect.json" );
ok( !-e 'codestat.out', '--no_dump does not generate a file' );
return;
}
sub check_codestat_shell_app_against {
my ( $self, $file ) = @_;
ok_regression(
sub {
my $result = Code::Statistics::App->run;
if ( grep { $_ eq 'report' } @ARGV ) {
$result =~ s/2.62\n/2.63\n/;
$result =~ s/^(ccomp: 3.66)\d+/$1/m;
$result =~ s/^(ccomp: 2.71)\d+/$1/m;
$result =~ s/^(ccomp: 1.61)\d+/$1/m;
$result =~ s/^(lines: 6.47)\d+/$1/m;
$result =~ s/^(lines: 4.30)\d+/$1/m;
$result =~ s/^(sdepth: 5.42)\d+/$1/m;
$result =~ s/^(size: 69.42)\d+/$1/m;
$result =~ s/^(size: 44.30)\d+/$1/m;
}
return $result;
},
$file,
'returned string matches expected output',
'binmode',
);
return;
}
sub get_codestat_out_file {
my $result = read_file('codestat.out');
return $result;
}
1;
( run in 0.642 second using v1.01-cache-2.11-cpan-437f7b0c052 )