[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