From: Rafael Kitover Date: Fri, 17 Jul 2009 19:35:29 +0000 (+0000) Subject: detect wrong case for "dbi:" DSN part in DBIC helper X-Git-Tag: v0.26~2^2~1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a4803ca6e4b559c289671a01ea9a978eebea06f1;hp=2a969b063ea6ab41d6fde9b56d07a532ee80c3f0;p=catagits%2FCatalyst-Model-DBIC-Schema.git detect wrong case for "dbi:" DSN part in DBIC helper --- diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index b078a33..4d01ea1 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -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)) { diff --git a/t/08helper.t b/t/08helper.t index e7b2a9d..066a69d 100644 --- a/t/08helper.t +++ b/t/08helper.t @@ -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';