Alzabo
view release on metacpan or search on metacpan
t/lib/Alzabo/Test/Utils.pm view on Meta::CPAN
my $class = shift;
my %c = $class->test_config;
return sort keys %c;
}
sub rdbms_count
{
my $class = shift;
return scalar $class->rdbms_names;
}
sub test_config
{
my $build = Module::Build->current;
my $tests = $build->notes('test_config');
return map { $_->{rdbms} => $_ } @$tests;
}
sub mysql_test_config
{
my $class = shift;
my %t = $class->test_config;
return $t{mysql};
}
sub pg_test_config
{
my $class = shift;
my %t = $class->test_config;
return $t{pg};
}
sub test_config_for
{
my $class = shift;
my $rdbms = shift;
my $meth = "${rdbms}_test_config";
return $class->$meth();
}
sub connect_params_for
{
my $class = shift;
my $config = $class->test_config_for( shift );
return ( map { defined $config->{$_}
? ( $_ => $config->{$_} )
: () }
qw( user password host port )
);
}
sub cleanup
{
my $class = shift;
$class->remove_schema_dir;
$class->remove_all_schemas;
}
sub remove_schema_dir
{
my $class = shift;
my $dir = $class->_schema_dir;
Test::More::diag( "Removing test schema directory: $dir" );
File::Path::rmtree( $dir, $Test::Harness::verbose, 0 );
}
sub remove_all_schemas
{
my $class = shift;
$class->remove_schema($_) foreach 'mysql', 'pg';
}
sub remove_schema
{
my $class = shift;
my $rdbms = shift;
my $meth = "remove_${rdbms}_schema";
$class->$meth();
}
sub remove_mysql_schema
{
my $class = shift;
my $config = $class->mysql_test_config();
return unless keys %$config;
Test::More::diag( "Removing MySQL database $config->{schema_name}" );
my $s = $class->_load_or_create( name => $config->{schema_name},
rdbms => 'MySQL' );
delete @{ $config }{ 'schema_name', 'rdbms' };
eval { $s->drop( %$config ) };
eval { $s->drop( %$config, schema_name => $s->name . '_2' ) };
$s->delete if $s->is_saved;
}
( run in 0.477 second using v1.01-cache-2.11-cpan-5735350b133 )