Apache-Logmonster
view release on metacpan or search on metacpan
t/Utility.t view on Meta::CPAN
use English qw( -no_match_vars );
use Test::More;
if ( $OSNAME =~ /cygwin|win32|windows/i ) {
plan skip_all => "no windows support";
};
my $deprecated = 0; # run the deprecated tests.
my $network = 0; # run tests that require network
$network = 1 if $OSNAME =~ /freebsd|darwin/;
my $r;
use_ok('Apache::Logmonster');
use_ok('Apache::Logmonster::Utility');
# let the testing begin
my $monster = Apache::Logmonster->new();
my $log = my $util = Apache::Logmonster::Utility->new();
ok( defined $util, 'get Apache::Logmonster::Utility object' );
isa_ok( $util, 'Apache::Logmonster::Utility' );
# for internal use
if ( -e "Utility.t" ) { chdir "../"; }
# we need this stuff during subsequent tests
my $debug = 0;
my ($cwd) = cwd =~ /^([\/\w\-\s\.]+)$/; # get our current directory
print "\t\twd: $cwd\n" if $debug;
my $tmp = "$cwd/t/trash";
mkdir $tmp, 0755;
if ( ! -d $tmp ) {
$util->mkdir_system( dir => $tmp, fatal => 0 );
};
skip "$tmp dir creation failed!\n", 2 if ( ! -d $tmp );
ok( -d $tmp, "temp dir: $tmp" );
ok( $util->syscmd( "cp TODO $tmp/", fatal => 0 ), 'cp TODO' );
# ask - asks a question and retrieves the answer
SKIP: {
skip "annoying", 4 if 1 == 1;
skip "ask is an interactive only feature", 4 unless $util->is_interactive;
ok( $r = $util->ask( 'test yes ask',
default => 'yes',
timeout => 5
),
'ask, proper args'
);
is( lc($r), "yes", 'ask' );
ok( $r = $util->ask( 'any (non empty) answer' ), 'ask, tricky' );
# multiline prompt
ok( $r = $util->ask( 'test any (non empty) answer',
default => 'just hit enter',
),
'ask, multiline'
);
# default password prompt
ok( $r = $util->ask( 'type a secret word',
password => 1,
default => 'secret',
),
'ask, password'
);
}
# extract_archive
my $gzip = $util->find_bin( "gzip", fatal => 0 );
my $tar = $util->find_bin( "tar", fatal => 0 );
my $star = $util->find_bin( "star", fatal => 0 );
SKIP: {
skip "gzip or tar is missing!\n", 6 unless ( -x $gzip and -x $tar and -d $tmp );
ok( $util->syscmd( "$tar -cf $tmp/test.tar TODO", fatal => 0),
"tar -cf test.tar"
);
ok( $util->syscmd( "$gzip -f $tmp/test.tar", fatal => 0), 'gzip test.tar'
);
my $archive = "$tmp/test.tar.gz";
ok( -e $archive, 'temp archive exists' );
ok( $util->extract_archive( $archive, fatal => 0 ), 'extract_archive +');
ok( !$util->extract_archive( "$archive.fizzlefuzz", fatal => 0 ), 'extract_archive -');
# clean up behind the tests
ok( $util->file_delete( $archive, fatal => 0 ), 'file_delete' );
}
$log->dump_audit(quiet=>1);
$log->{last_error} = scalar @{$log->{errors}};
# TODO: { my $why = "extract_archive, requires a valid archive to expand";
# this is how to run them but not count them as failures
# local $TODO = $why if (! -e $archive);
# this way to skip them entirely and mark as TODO
# todo_skip $why, 3 if (! -e $archive); #}
# cwd_source_dir
# dir already exists
ok( $util->cwd_source_dir( $tmp ), 'cwd_source_dir' );
# clean up after previous runs
if ( -f "$tmp/foo" ) {
ok( $util->file_delete( "$tmp/foo", fatal => 0 ), 'file_delete' );
}
# a dir to create
ok( $util->cwd_source_dir( "$tmp/foo" ), 'cwd_source_dir' );
print "\t\t wd: " . cwd . "\n" if $debug;
# go back to our previous working directory
chdir($cwd) or die;
print "\t\t wd: " . cwd . "\n" if $debug;
# chown_system
my $sudo_bin = $util->find_bin( 'sudo', fatal => 0 );
if ( $UID == 0 && $sudo_bin && -x $sudo_bin ) {
# avoid the possiblity of a sudo call in testing
ok( $util->chown_system( $tmp, user => $<, fatal => 0), 'chown_system');
}
( run in 0.584 second using v1.01-cache-2.11-cpan-f56aa216473 )