added check to skip tests that break on SQLite < 3.2.6 due to SQLite not understandin...
Scotty Allen [Mon, 13 Feb 2006 16:28:12 +0000 (16:28 +0000)]
t/run/16joins.tl

index a3c9383..962ee48 100644 (file)
@@ -2,6 +2,7 @@ sub run_tests {
 my $schema = shift;
 
 use IO::File;
+use version;
 
 BEGIN {
     eval "use DBD::SQLite";
@@ -10,6 +11,9 @@ BEGIN {
         : ( tests => 41 );
 }
 
+my $is_broken_sqlite = version->new($schema->storage->dbh->get_info(18)) lt '3.2.6' &&
+                       $schema->storage->dbh->get_info(17) eq 'SQLite';
+
 # test the abstract join => SQL generator
 my $sa = new DBIC::SQL::Abstract;
 
@@ -222,7 +226,11 @@ $rs = $schema->resultset("CD")->search(
   { group_by => [qw/ title me.cdid /] }
 );
 
-cmp_ok( $rs->count, '==', 5, "count() ok after group_by on main pk" );
+SKIP: {
+    skip "SQLite < 3.2.6 doesn't understand COUNT(DISTINCT())", 1
+        if $is_broken_sqlite;
+    cmp_ok( $rs->count, '==', 5, "count() ok after group_by on main pk" );
+}
 
 cmp_ok( scalar $rs->all, '==', 5, "all() returns same count as count() after group_by on main pk" );
 
@@ -231,7 +239,11 @@ $rs = $schema->resultset("CD")->search(
   { join => [qw/ artist /], group_by => [qw/ artist.name /] }
 );
 
-cmp_ok( $rs->count, '==', 3, "count() ok after group_by on related column" );
+SKIP: {
+    skip "SQLite < 3.2.6 doesn't understand COUNT(DISTINCT())", 1
+        if $is_broken_sqlite;
+    cmp_ok( $rs->count, '==', 3, "count() ok after group_by on related column" );
+}
 
 cmp_ok( scalar $rs->all, '==', 3, "all() returns same count as count() after group_by on related column" );
 
@@ -240,7 +252,12 @@ $rs = $schema->resultset("Artist")->search(
           'cds_2.title' => 'Forkful of bees' },
         { join => [ 'cds', 'cds' ] });
 
-cmp_ok($rs->count, '==', 1, "single artist returned from multi-join");
+SKIP: {
+    skip "SQLite < 3.2.6 doesn't understand COUNT(DISTINCT())", 1
+        if $is_broken_sqlite;
+    cmp_ok($rs->count, '==', 1, "single artist returned from multi-join");
+}
+
 is($rs->next->name, 'Caterwauler McCrae', "Correct artist returned");
 
 my $queries;