App-BoolFindGrep
view release on metacpan or search on metacpan
t/app-boolfindgrep.t view on Meta::CPAN
#/usr/bin/env perl
use common::sense;
use warnings FATAL => q(all);
use English qw[-no_match_vars];
use File::Basename;
use File::Path qw[remove_tree];
use File::Spec::Functions;
use IO::File;
use List::Util qw[first];
use Test::More;
use Time::Piece;
use Time::Seconds;
my $basename = basename($0);
my $tmpdir = first { defined && -d $_ && -w $_ }
@ENV{qw[TMDIR TMP_DIR]},
q(/tmp);
$tmpdir = catdir( $tmpdir, $basename );
if ( -d $tmpdir ) {
chmod oct q(0770), $tmpdir;
remove_tree $tmpdir or die $!;
}
mkdir $tmpdir, oct q(0770) or die $!;
my @tmpfile;
my $dt = Time::Piece->strptime( q(1970-01-01), q(%Y-%m-%d) );
my @day = ( 0 .. 59 );
my @sep = (qw[_ -]);
my @suffix = (qw[dat tmp txt]);
foreach my $day (@day) {
$dt += ONE_DAY;
my $datetime = $dt->strftime(q(%Y-%m-%d));
foreach my $sep (@sep) {
foreach my $suffix (@suffix) {
my $filename = qq(test${sep}${datetime}.${suffix});
$filename = catfile( $tmpdir, $filename );
my $fh = IO::File->new( $filename, q(w) );
if ( defined $fh ) {
push @tmpfile, $filename;
$fh->close();
}
}
}
} ## end foreach my $day (@day)
if ( @tmpfile != @day * @sep * @suffix ) {
rmdir $tmpdir;
BAIL_OUT(q(Can't create files to test.));
}
my $class = q(App::BoolFindGrep);
use_ok($class) || say q(Bail out!);
my @test = (
{ literal => [
[ q(test_) => @day * @suffix, ], #
[ q(.tmp) => @day * @sep, ], #
[ q(-1970-) => @day * @suffix, ], #
],
},
{ glob => [
[ q(*) => 0 + @tmpfile, ], #
[ sprintf( q(test[%s]*), join q(), @sep ) => 0 + @tmpfile, ], #
[ q(*.tmp) => @day * @sep, ], #
[ sprintf( q(*.{%s}), join q(,), @suffix ) => 0 + @tmpfile, ], #
[ sprintf( q([%s]1970-??-[0-9][0-9].*), join q(), @sep ) => 0
+ @tmpfile,
],
],
},
{ regexp => [
[ q(.*) => 0 + @tmpfile, ], #
[ q(1970[\d-]+) => 0 + @tmpfile, ], #
[ q(dat|tmp|txt) => 0 + @tmpfile, ], #
],
},
);
( run in 0.732 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )