[Bast-commits] r5037 - DBIx-Class/0.08/trunk/t

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Sat Nov 1 14:23:15 GMT 2008


Author: ribasushi
Date: 2008-11-01 14:23:15 +0000 (Sat, 01 Nov 2008)
New Revision: 5037

Modified:
   DBIx-Class/0.08/trunk/t/64db.t
Log:
TODOify a test broken by design, which exposes a bug in virtually all DBD::SQLite versions

Modified: DBIx-Class/0.08/trunk/t/64db.t
===================================================================
--- DBIx-Class/0.08/trunk/t/64db.t	2008-11-01 00:42:56 UTC (rev 5036)
+++ DBIx-Class/0.08/trunk/t/64db.t	2008-11-01 14:23:15 UTC (rev 5037)
@@ -7,7 +7,7 @@
 
 my $schema = DBICTest->init_schema();
 
-plan tests => 3;
+plan tests => 4;
 
 # add some rows inside a transaction and commit it
 # XXX: Is storage->dbh the only way to get a dbh?
@@ -34,33 +34,61 @@
 ($artist) = $schema->resultset("Artist")->search( artistid => 25 );
 is($artist, undef, "Rollback ok");
 
-my $type_info = $schema->storage->columns_info_for('artist');
+is_deeply (
+  get_storage_column_info ($schema->storage, 'collection'),
+  {
+    collectionid => {
+      data_type => 'INTEGER',
+      is_nullable => 0,
+    },
+    name => {
+      data_type => 'varchar',
+      is_nullable => 0,
+    },
+  },
+  'Correctly retrieve column info (all columns non-nullable)'
+);
 
-# I know this is gross but SQLite reports the size differently from release
-# to release. At least this way the test still passes.
-# Also it seems that some SQLite releases report stuff that isn't there as
-# undef. So strip them out.
-for my $col (keys %$type_info) {
-  for my $type (keys %{$type_info->{$col}}) {
-    if ($type eq 'size' or not defined $type_info->{$col}{$type} ) {
-      delete $type_info->{$col}{$type};
-    }
-  }
-}
+TODO: {
+  local $TODO = 'All current versions of SQLite seem to mis-report is_nullable';
 
-my $test_type_info = {
-    'artistid' => {
-        'data_type' => 'INTEGER',
-        'is_nullable' => 0,
+  is_deeply (
+    get_storage_column_info ($schema->storage, 'artist'),
+    {
+      'artistid' => {
+          'data_type' => 'INTEGER',
+          'is_nullable' => 0,
+      },
+      'name' => {
+          'data_type' => 'varchar',
+          'is_nullable' => 1,
+      },
+      'rank' => {
+          'data_type' => 'integer',
+          'is_nullable' => 0,
+      },
     },
-    'name' => {
-        'data_type' => 'varchar',
-        'is_nullable' => 0,
-    },
-    'rank' => {
-        'data_type' => 'integer',
-        'is_nullable' => 0,
-    },
+    'Correctly retrieve column info (mixed null and non-null columns)'
+  );
 };
-is_deeply($type_info, $test_type_info, 'columns_info_for - column data types');
 
+
+sub get_storage_column_info {
+  my ($storage, $table) = @_;
+
+  my $type_info = $storage->columns_info_for($table);
+
+  # I know this is gross but SQLite reports the size differently from release
+  # to release. At least this way the test still passes.
+  # Also it seems that some SQLite releases report stuff that isn't there as
+  # undef. So strip them out.
+  for my $col (keys %$type_info) {
+    for my $type (keys %{$type_info->{$col}}) {
+      if ($type eq 'size' or not defined $type_info->{$col}{$type} ) {
+        delete $type_info->{$col}{$type};
+      }
+    }
+  }
+
+  return $type_info;
+}




More information about the Bast-commits mailing list