And more fail fixes (this time db2)
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / lib / dbixcsl_common_tests.pm
index 1f439ed..e19c3d8 100644 (file)
@@ -17,7 +17,9 @@ use List::MoreUtils 'apply';
 use DBIx::Class::Schema::Loader::Optional::Dependencies ();
 use namespace::clean;
 
-my $DUMP_DIR = './t/_common_dump';
+use dbixcsl_test_dir qw/$tdir/;
+
+my $DUMP_DIR = "$tdir/common_dump";
 rmtree $DUMP_DIR;
 
 sub new {
@@ -44,7 +46,7 @@ sub new {
     # Optional extra tables and tests
     $self->{extra} ||= {};
 
-    $self->{date_datatype} ||= 'DATE';
+    $self->{basic_date_datatype} ||= 'DATE';
 
     # Not all DBS do SQL-standard CURRENT_TIMESTAMP
     $self->{default_function} ||= "current_timestamp";
@@ -928,7 +930,7 @@ sub test_schema {
         find $find_cb, $DUMP_DIR;
 
 #        system "rm -f /tmp/before_rescan/* /tmp/after_rescan/*";
-#        system "cp t/_common_dump/DBIXCSL_Test/Schema/*.pm /tmp/before_rescan";
+#        system "cp $tdir/common_dump/DBIXCSL_Test/Schema/*.pm /tmp/before_rescan";
 
         my $before_digest = $digest->b64digest;
 
@@ -1167,6 +1169,8 @@ sub create {
 
     $self->{_created} = 1;
 
+    $self->drop_tables;
+
     my $make_auto_inc = $self->{auto_inc_cb} || sub {};
     @statements = (
         qq{
@@ -1229,7 +1233,7 @@ sub create {
         qq{
             CREATE TABLE loader_test36 (
                 id INTEGER NOT NULL PRIMARY KEY,
-                a_date $self->{date_datatype},
+                a_date $self->{basic_date_datatype},
                 b_char_as_data VARCHAR(100),
                 c_char_as_data VARCHAR(100)
             ) $self->{innodb}
@@ -1603,7 +1607,6 @@ sub create {
     );
 
     $self->drop_tables;
-    $self->drop_tables; # twice for good measure
 
     my $dbh = $self->dbconnect(1);
 
@@ -1644,6 +1647,7 @@ sub drop_tables {
     my $self = shift;
 
     my @tables = qw/
+        loader_test1
         loader_test1s
         loader_test2
         LOADER_test23
@@ -1713,18 +1717,21 @@ sub drop_tables {
     my $drop_fk =
         q{ALTER TABLE loader_test10 DROP CONSTRAINT loader_test11_fk};
 
-    my $dbh = $self->dbconnect(0);
+    # For some reason some tests do this twice (I guess dependency issues?)
+    # do it twice for all drops
+    for (1,2) {
+      my $dbh = $self->dbconnect(0);
 
-    {
+      {
         local $SIG{__WARN__} = sub {}; # postgres notices
         $dbh->do($_) for @{ $self->{extra}{pre_drop_ddl} || [] };
-    }
+      }
 
-    $dbh->do("DROP TABLE $_") for @{ $self->{extra}{drop} || [] };
+      $dbh->do("DROP TABLE $_") for @{ $self->{extra}{drop} || [] };
 
-    my $drop_auto_inc = $self->{auto_inc_drop_cb} || sub {};
+      my $drop_auto_inc = $self->{auto_inc_drop_cb} || sub {};
 
-    unless($self->{skip_rels}) {
+      unless($self->{skip_rels}) {
         $dbh->do("DROP TABLE $_") for (@tables_reltests);
         $dbh->do("DROP TABLE $_") for (@tables_reltests);
         if($self->{vendor} =~ /mysql/i) {
@@ -1742,24 +1749,20 @@ sub drop_tables {
         unless($self->{no_implicit_rels}) {
             $dbh->do("DROP TABLE $_") for (@tables_implicit_rels);
         }
-    }
-    $dbh->do($_) for map { $drop_auto_inc->(@$_) } @tables_auto_inc;
-    $dbh->do("DROP TABLE $_") for (@tables, @tables_rescan);
+      }
+      $dbh->do($_) for map { $drop_auto_inc->(@$_) } @tables_auto_inc;
+      $dbh->do("DROP TABLE $_") for (@tables, @tables_rescan);
 
-    foreach my $data_type_table (@{ $self->{data_type_tests}{table_names} || [] }) {
+      foreach my $data_type_table (@{ $self->{data_type_tests}{table_names} || [] }) {
         $dbh->do("DROP TABLE $data_type_table");
-    }
-
-    my ($oqt, $cqt) = $self->get_oqt_cqt(always => 1);
+      }
 
-    $dbh->do("DROP TABLE ${oqt}${_}${cqt}") for @tables_preserve_case_tests;
+      my ($oqt, $cqt) = $self->get_oqt_cqt(always => 1);
 
-    $dbh->disconnect;
+      $dbh->do("DROP TABLE ${oqt}${_}${cqt}") for @tables_preserve_case_tests;
 
-# fixup for Firebird
-    $dbh = $self->dbconnect(0);
-    $dbh->do('DROP TABLE loader_test2');
-    $dbh->disconnect;
+      $dbh->disconnect;
+    }
 }
 
 sub _custom_column_info {
@@ -1838,7 +1841,7 @@ sub setup_data_type_tests {
             my @size = split /,/, $size;
 
             # some DBs don't like very long column names
-            if ($self->{vendor} =~ /^(?:firebird|sqlanywhere|oracle)\z/i) {
+            if ($self->{vendor} =~ /^(?:firebird|sqlanywhere|oracle|db2)\z/i) {
                 my ($col_def, $default) = $type_alias =~ /^(.*)(default.*)?\z/i;
 
                 $type_alias = substr $col_def, 0, 15;
@@ -1882,8 +1885,8 @@ sub setup_data_type_tests {
 sub DESTROY {
     my $self = shift;
     unless ($ENV{SCHEMA_LOADER_TESTS_NOCLEANUP}) {
-       $self->drop_tables if $self->{_created};
-       rmtree $DUMP_DIR
+      $self->drop_tables if $self->{_created};
+      rmtree $DUMP_DIR
     }
 }