Un fuck by reverse merge acrosss the entire repos - svn merge -r 10977:10972 .
Tomas Doran [Wed, 29 Jul 2009 21:54:10 +0000 (21:54 +0000)]
Changes
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Model/DBIC/Schema.pm
t/07connect_info.t
t/08helper.t

diff --git a/Changes b/Changes
index c07873f..d885aac 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 Revision history for Perl extension Catalyst::Model::DBIC::Schema
 
 0.26  As yet unreleased
+    - fix loading connect_info from schema-defined connection (RT 48084)
     - Fix missing dep on Catalyst::Helper that made tests fail (RT 47449)
 
 0.25  Fri Jun 19 08:35:38 PDT 2009
index b078a33..4d01ea1 100644 (file)
@@ -189,7 +189,12 @@ sub BUILD {
 
             $helper->{loader_args} = $self->_build_helper_loader_args;
 
-            if (first { /^dbi:/i } @args) {
+            my $dbi_dsn_part;
+            if (first { ($dbi_dsn_part) = /^(dbi):/i } @args) {
+                die
+qq{DSN must start with 'dbi:' not '$dbi_dsn_part' (case matters!)}
+                    if $dbi_dsn_part ne 'dbi';
+
                 $helper->{setup_connect_info} = 1;
 
                 $helper->{connect_info} =
@@ -269,7 +274,7 @@ sub _read_loader_args {
 
     my %loader_args;
 
-    while (@$args && $args->[0] !~ /^dbi:/) {
+    while (@$args && $args->[0] !~ /^dbi:/i) {
         my ($key, $val) = split /=/, shift(@$args), 2;
 
         if ($self->_is_struct($val)) {
index dece52f..cfdb5e4 100644 (file)
@@ -442,7 +442,7 @@ has schema_class => (
 
 has storage_type => (is => 'rw', isa => Str);
 
-has connect_info => (is => 'ro', isa => ConnectInfo, coerce => 1);
+has connect_info => (is => 'rw', isa => ConnectInfo, coerce => 1);
 
 has model_name => (
     is => 'ro',
index 0e0ed70..e49dba1 100644 (file)
@@ -47,7 +47,7 @@ my @invalid = (
         { pg_enable_utf8 => 1 }, { AutoCommit => 1 }, { auto_savepoint => 1 }],
 );
 
-plan tests => @tests / 2 + @invalid + 1;
+plan tests => @tests / 2 + @invalid + 1 + 1;
 
 # ignore redefined warnings, and uninitialized warnings from old
 # ::Storage::DBI::Replicated
@@ -88,6 +88,14 @@ is_deeply $m->replicants, [
     map $tests[$_], grep $_ % 2, 0 .. $#tests
 ], 'replicant connect_infos coerced correctly';
 
+{
+    ASchemaClass->connection( @{$tests[0]} );
+    my $m = instance();
+
+    is_deeply $m->connect_info, $tests[1],
+        'connect_info coerced correctly when defining connection in the schema class';
+}
+
 sub instance {
     Catalyst::Model::DBIC::Schema->new({
         schema_class => 'ASchemaClass',
index e7b2a9d..066a69d 100644 (file)
@@ -10,7 +10,7 @@ use Catalyst::Helper::Model::DBIC::Schema;
 use Storable 'dclone';
 eval "use Catalyst::Helper";
 plan skip_all => 'Catalyst::Helper required for tests' if $@;
-plan tests => 40;
+plan tests => 41;
 
 my $helper      = Catalyst::Helper->new;
 $helper->{base} = $Bin;
@@ -26,6 +26,9 @@ my $i;
 $i = instance(schema_class => 'ASchemaClass');
 is $i->old_schema, 1, '->load_classes detected correctly';
 
+throws_ok { $i = instance(args => [$static, 'DbI:SQLite:myapp.db']) }
+    qr/case matters/i, "wrong case for 'dbi:' DSN part";
+
 $i = instance(args => ['traits=Caching']);
 is_deeply $i->traits, ['Caching'], 'one trait';
 is $i->helper->{traits}, "['Caching']", 'one trait as string';