DBIx-TempDB
view release on metacpan or search on metacpan
lib/DBIx/TempDB/Util.pm view on Meta::CPAN
$url = URI::db->new($url);
$url->dbname($database_name);
$url->query(undef);
$dsn = $url->dbi_dsn;
@userinfo = ($url->user, $url->password);
$opt{AutoCommit} //= 1;
$opt{AutoInactiveDestroy} //= 1;
$opt{PrintError} //= 0;
$opt{RaiseError} //= 1;
$opt{mysql_enable_utf8} //= 1;
return $dsn, @userinfo[0, 1], \%opt;
}
sub _dsn_for_pg {
my ($url, $database_name) = @_;
my %opt = %{$url->query_form_hash};
my ($dsn, @userinfo);
$url = URI::db->new($url);
t/dsn-for.t view on Meta::CPAN
'postgres', undef, {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1}
],
'postgresql://pg:s3cret@localhost?AutoInactiveDestroy=0',
[
'dbi:Pg:host=localhost', 'pg', 's3cret',
{AutoCommit => 1, AutoInactiveDestroy => 0, PrintError => 0, RaiseError => 1}
],
'mysql://root@127.0.0.1',
[
'dbi:mysql:host=127.0.0.1', 'root', undef,
{AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
],
'mysql://u1:s3cret@localhost?PrintError=1',
[
'dbi:mysql:host=localhost', 'u1', 's3cret',
{AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 1, RaiseError => 1, mysql_enable_utf8 => 1}
],
'mysql://x:y@example.com:2345/aiaiai',
[
'dbi:mysql:host=example.com;port=2345;database=aiaiai',
'x', 'y', {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
],
);
while (@tests) {
my $url = shift @tests;
my $exp = shift @tests;
is_deeply [dsn_for($url)], $exp, $url;
is_deeply [dsn_for(URI::db->new($url))], $exp, $url;
}
t/mysql-offline.t view on Meta::CPAN
use DBIx::TempDB;
my $tmpdb = DBIx::TempDB->new('mysql://example.com', auto_create => 0, database_name => 'foo');
is $tmpdb->url, 'mysql://example.com', 'url';
is_deeply(
[$tmpdb->dsn],
[
'dbi:mysql:host=example.com;database=foo',
undef, undef, {AutoCommit => 1, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
],
'dsn for foo'
);
$tmpdb = DBIx::TempDB->new('mysql://u:p@127.0.0.1:1234?AutoCommit=0', auto_create => 0, database_name => 'yikes');
is_deeply(
[$tmpdb->dsn],
[
'dbi:mysql:host=127.0.0.1;port=1234;database=yikes',
'u', 'p', {AutoCommit => 0, AutoInactiveDestroy => 1, PrintError => 0, RaiseError => 1, mysql_enable_utf8 => 1}
],
'dsn for yikes'
);
done_testing;
( run in 0.263 second using v1.01-cache-2.11-cpan-00829025b61 )