package Foorum::TestTheSchwartz;
use strict;
use warnings;
use base qw/Exporter/;
use Test::More;
use FindBin qw/$Bin/;
use DBI;
our @EXPORT = ( @Test::More::EXPORT, 'run_test' );
eval 'require DBD::SQLite'; ## no critic (ProhibitStringyEval)
plan skip_all => 'this test requires DBD::SQLite' if $@;
eval 'require File::Temp'; ## no critic (ProhibitStringyEval)
plan skip_all => 'this test requires File::Temp' if $@;
eval 'require TheSchwartz::Moosified;'; ## no critic (ProhibitStringyEval)
plan skip_all => 'this test requires TheSchwartz::Moosified' if $@;
sub run_test {
my $code = shift;
my $db_file = File::Spec->catfile( $Bin, '..', 'lib', 'Foorum',
'theschwartz.db' );
my $dbh
= DBI->connect( "dbi:SQLite:dbname=$db_file", '', '',
{ RaiseError => 1 } )
or die $DBI::err;
# work around for DBD::SQLite's resource leak
tie my %blackhole, 'Foorum::TestTheSchwartz::Blackhole';
$dbh->{CachedKids} = \%blackhole;
$code->($dbh); # do test
$dbh->disconnect;
}
{
package Foorum::TestTheSchwartz::Blackhole;
use base qw/Tie::Hash/;
sub TIEHASH { bless {}, shift }
sub STORE { } # nop
sub FETCH { } # nop
}
1;