|
Packit |
be8974 |
# driver.pm - common test driver code
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
use Test::More ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
BEGIN {
|
|
Packit |
be8974 |
*CORE::GLOBAL::syswrite =
|
|
Packit |
be8974 |
sub($$$;$) { my( $h, $b, $s, $o ) = @_; CORE::syswrite $h, $b, $s, $o} ;
|
|
Packit |
be8974 |
# sub(*\$$;$) { my( $h, $b, $s, $o ) = @_; CORE::syswrite $h, $b, $s, $o } ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
*CORE::GLOBAL::sysread =
|
|
Packit |
be8974 |
sub($$$;$) { my( $h, $b, $s, $o ) = @_; CORE::sysread $h, $b, $s, $o } ;
|
|
Packit |
be8974 |
# sub(*\$$;$) { my( $h, $b, $s, $o ) = @_; CORE::sysread $h, $b, $s, $o } ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
*CORE::GLOBAL::rename =
|
|
Packit |
be8974 |
sub($$) { my( $old, $new ) = @_; CORE::rename $old, $new } ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
*CORE::GLOBAL::sysopen =
|
|
Packit |
be8974 |
sub($$$;$) { my( $h, $n, $m, $p ) = @_; CORE::sysopen $h, $n, $m, $p } ;
|
|
Packit |
be8974 |
# sub(*$$;$) { my( $h, $n, $m, $p ) = @_; CORE::sysopen $h, $n, $m, $p } ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
sub test_driver {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
my( $tests ) = @_ ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
use Data::Dumper ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
# plan for one expected ok() call per test
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
plan( tests => scalar @{$tests} ) ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
# loop over all the tests
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
foreach my $test ( @{$tests} ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
#print Dumper $test ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if ( $test->{skip} ) {
|
|
Packit |
be8974 |
ok( 1, "SKIPPING $test->{name}" ) ;
|
|
Packit |
be8974 |
next ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
my $override = $test->{override} ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
# run any setup sub before this test. this can is used to modify the
|
|
Packit |
be8974 |
# object for this test or create test files and data.
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if( my $pretest = $test->{pretest} ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
$pretest->($test) ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if( my $sub = $test->{sub} ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
my $args = $test->{args} ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
local( $^W ) ;
|
|
Packit |
be8974 |
local *{"CORE::GLOBAL::$override"} = sub {}
|
|
Packit |
be8974 |
if $override ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
$test->{result} = eval { $sub->( @{$args} ) } ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if ( $@ ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
# if we had an error and expected it, we pass this test
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if ( $test->{error} &&
|
|
Packit |
be8974 |
$@ =~ /$test->{error}/ ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
$test->{ok} = 1 ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
else {
|
|
Packit |
be8974 |
print "unexpected error: $@\n" ;
|
|
Packit |
be8974 |
$test->{ok} = 0 ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
if( my $posttest = $test->{posttest} ) {
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
$posttest->($test) ;
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
ok( $test->{ok}, $test->{name} ) if exists $test->{ok} ;
|
|
Packit |
be8974 |
is( $test->{result}, $test->{expected}, $test->{name} ) if
|
|
Packit |
be8974 |
exists $test->{expected} ;
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
}
|
|
Packit |
be8974 |
|
|
Packit |
be8974 |
1 ;
|