Firebird: fix test cleanup, add ODBC wrapper
Rafael Kitover [Thu, 4 Feb 2010 16:24:51 +0000 (16:24 +0000)]
lib/DBIx/Class/Storage/DBI/ODBC/Firebird.pm [new file with mode: 0644]
t/750firebird.t

diff --git a/lib/DBIx/Class/Storage/DBI/ODBC/Firebird.pm b/lib/DBIx/Class/Storage/DBI/ODBC/Firebird.pm
new file mode 100644 (file)
index 0000000..adfc559
--- /dev/null
@@ -0,0 +1,28 @@
+package DBIx::Class::Storage::DBI::ODBC::Firebird;
+
+use strict;
+use warnings;
+use base qw/DBIx::Class::Storage::DBI::InterBase/;
+use mro 'c3';
+
+1;
+
+=head1 NAME
+
+DBIx::Class::Storage::DBI::ODBC::Firebird - Driver for using the Firebird RDBMS
+through ODBC
+
+=head1 SYNOPSIS
+
+All functionality is provided by L<DBIx::Class::Storage::DBI::Interbase>, see
+that module for details.
+
+=head1 AUTHOR
+
+See L<DBIx::Class/AUTHOR> and L<DBIx::Class/CONTRIBUTORS>.
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself.
+
+=cut
index 1e1f72b..44efe7c 100644 (file)
@@ -5,6 +5,7 @@ use Test::More;
 use Test::Exception;
 use lib qw(t/lib);
 use DBICTest;
+use Scope::Guard ();
 
 # tests stolen from 749sybase_asa.t
 
@@ -34,8 +35,9 @@ foreach my $info (@info) {
 
   push @handles_to_clean, $dbh;
 
-  eval { $dbh->do("DROP TABLE artist") };
+  my $sg = Scope::Guard->new(\&cleanup);
 
+  eval { $dbh->do("DROP TABLE artist") };
   $dbh->do(<<EOF);
   CREATE TABLE artist (
     artistid INT PRIMARY KEY,
@@ -44,7 +46,9 @@ foreach my $info (@info) {
     rank INT DEFAULT 13
   )
 EOF
+  eval { $dbh->do("DROP GENERATOR gen_artist_artistid") };
   $dbh->do('CREATE GENERATOR gen_artist_artistid');
+  eval { $dbh->do("DROP TRIGGER artist_bi") };
   $dbh->do(<<EOF);
   CREATE TRIGGER artist_bi FOR artist
   ACTIVE BEFORE INSERT POSITION 0
@@ -153,8 +157,16 @@ EOF
 done_testing;
 
 # clean up our mess
-END {
+
+sub cleanup {
   foreach my $dbh (@handles_to_clean) {
-    eval { $dbh->do("DROP TABLE $_") } for qw/artist bindtype_test/;
+    eval { $dbh->do('DROP TRIGGER artist_bi') };
+    diag $@ if $@;
+    eval { $dbh->do('DROP GENERATOR gen_artist_artistid') };
+    diag $@ if $@;
+    foreach my $table (qw/artist bindtype_test/) {
+      $dbh->do("DROP TABLE $table");
+      diag $@ if $@;
+    }
   }
 }