1 package # Hide from PAUSE
5 use warnings FATAL => 'all';
14 use File::Temp qw( tempfile tempdir );
15 use Fcntl qw( :flock );
17 my $parent = $ENV{WORK_DIR} || File::Spec->tmpdir;
18 my $dir = tempdir( CLEANUP => 1, DIR => $parent );
21 my ($fh, $filename) = tempfile( 'tmpXXXX', DIR => $dir, UNLINK => 1 );
23 # This is because tempfile() returns a flock'ed $fh on MacOSX.
26 return ($fh, $filename);
31 my ($fh, $filename) = new_fh();
36 unless ( $ENV{NO_TEST_FILE} ) {
37 push @reset_funcs, undef;
43 if ( $ENV{TEST_SQLITE} ) {
44 (undef, my $filename) = new_fh();
45 # $filename = 'test.db';
46 push @reset_funcs, sub {
48 my $dbh = DBI->connect(
49 "dbi:SQLite:dbname=$filename", '', '',
52 my $filename = 'etc/sqlite_tables.sql';
53 open my $fh, '<', $filename
54 or die "Cannot open '$filename' for reading: $!\n";
58 foreach my $line ( split ';', $sql ) {
59 $dbh->do( "$line" ) if $line =~ /\S/;
64 dsn => "dbi:SQLite:dbname=$filename",
71 if ( $ENV{TEST_MYSQL_DSN} ) {
72 push @reset_funcs, sub {
74 my $dbh = DBI->connect(
76 $ENV{TEST_MYSQL_USER},
77 $ENV{TEST_MYSQL_PASS},
80 my $filename = 'etc/mysql_tables.sql';
81 open my $fh, '<', $filename
82 or die "Cannot open '$filename' for reading: $!\n";
86 foreach my $line ( split ';', $sql ) {
87 $dbh->do( "$line" ) if $line =~ /\S/;
92 dsn => $ENV{TEST_MYSQL_DSN},
93 user => $ENV{TEST_MYSQL_USER},
94 password => $ENV{TEST_MYSQL_PASS},
100 return unless @extra_args;
101 my @these_args = @{ shift @extra_args };
102 if ( my $reset = shift @reset_funcs ) {
106 DBM::Deep->new( @these_args, @args, @_ )