Further delay empty weakregistry assertions
[dbsrgits/DBIx-Class.git] / t / cdbi / testlib / MyBase.pm
1 package # hide from PAUSE
2     MyBase;
3
4 use warnings;
5 use strict;
6
7 use DBI;
8
9 use lib 't/lib';
10 use DBICTest;
11
12 use base qw(DBIx::Class::CDBICompat);
13
14 our $dbh;
15
16 my $err;
17 if (! $ENV{DBICTEST_MYSQL_DSN} ) {
18   $err = 'Set $ENV{DBICTEST_MYSQL_DSN}, _USER and _PASS to run this test';
19 }
20 elsif ( ! DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_mysql') ) {
21   $err = 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_mysql')
22 }
23
24 if ($err) {
25   my $t = eval { Test::Builder->new };
26   if ($t and ! $t->current_test) {
27     $t->skip_all ($err);
28   }
29   else {
30     die "$err\n";
31   }
32 }
33
34 my @connect = (@ENV{map { "DBICTEST_MYSQL_${_}" } qw/DSN USER PASS/}, { PrintError => 0});
35 # this is only so we grab a lock on mysql
36 {
37   my $x = DBICTest::Schema->connect(@connect);
38 }
39
40 $dbh = DBI->connect(@connect) or die DBI->errstr;
41 my @table;
42
43 END {
44   $dbh->do("DROP TABLE $_") for @table;
45   undef $dbh;
46 }
47
48 __PACKAGE__->connection(@connect);
49
50 sub set_table {
51   my $class = shift;
52   $class->table($class->create_test_table);
53 }
54
55 sub create_test_table {
56   my $self   = shift;
57   my $table  = $self->next_available_table;
58   my $create = sprintf "CREATE TABLE $table ( %s )", $self->create_sql;
59   push @table, $table;
60   $dbh->do($create);
61   return $table;
62 }
63
64 sub next_available_table {
65   my $self   = shift;
66   my @tables = sort @{
67     $dbh->selectcol_arrayref(
68       qq{
69     SHOW TABLES
70   }
71     )
72     };
73   my $table = $tables[-1] || "aaa";
74   return "z$table";
75 }
76
77 1;