DBD-Firebird
view release on metacpan or search on metacpan
t/TestFirebirdEmbedded.pm view on Meta::CPAN
package TestFirebirdEmbedded;
#
# Helper file for the DBD::FirebirdEmbedded tests
#
use strict;
use warnings;
use Carp;
use DBI 1.43; # minimum version for 'parse_dsn'
use File::Spec;
use File::Basename;
use File::Path qw(remove_tree);
use File::Temp qw(tempdir);
use Test::More;
use base qw(Exporter TestFirebird);
our @EXPORT = qw(find_new_table);
sub import {
my $me = shift;
TestFirebird->import;
$me->export_to_level(1,undef, qw(find_new_table));
}
use constant is_embedded => 1;
use constant dbd => 'DBD::FirebirdEmbedded';
use DBD::FirebirdEmbedded;
sub check_credentials {
# this is embedded, nothing to check, we don't need credentials
}
sub read_cached_configs {
my $self = shift;
$self->SUPER::read_cached_configs;
unless ($self->{firebird_lock_dir}) {
my $dir = tempdir( 'dbd-fb.XXXXXXXX', CLEANUP => 0, TMPDIR => 1 );
note "created $dir\n";
open( my $fh, '>>', $self->test_conf )
or die "Unable to open " . $self->test_conf . " for appending: $!";
print $fh qq(firebird_lock_dir:=$dir\n);
close($fh) or die "Error closing " . $self->test_conf . ": $!\n";
$self->{firebird_lock_dir} = $dir;
}
# this is embedded, no server involved
$ENV{FIREBIRD_LOCK} = $self->{firebird_lock_dir};
# no authentication either
delete $ENV{ISC_USER};
delete $ENV{ISC_PASSWORD};
delete $ENV{DBI_USER};
delete $ENV{DBI_PASS};
delete $self->{user};
delete $self->{pass};
delete $self->{host};
if (DBD::FirebirdEmbedded->fb_api_ver >= 30) {
$self->{user} = 'SYSDBA';
$self->{pass} = 'any';
}
$self->{tdsn} = $self->get_dsn;
$self->{path} = $self->get_path;
}
sub save_configs {
# do nothing as we don't want embedded testing to fiddle with the
# carefuly created configs
# embedded overrides are implanted already
}
sub get_dsn {
my $self = shift;
return join( ';',
"dbi:FirebirdEmbedded:db=" . $self->get_path,
"ib_dialect=3",
'ib_charset=' . $self->get_charset );
}
sub check_dsn {
return shift->get_dsn;
}
sub get_path {
my $self = shift;
( run in 2.186 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )