Don't warn when reregistering a source under the same name
Dagfinn Ilmari Mannsåker [Sat, 18 Apr 2009 18:38:44 +0000 (18:38 +0000)]
lib/DBIx/Class.pm
lib/DBIx/Class/Schema.pm
t/100extra_source.t

index e18801a..5a64365 100644 (file)
@@ -241,6 +241,8 @@ gphat: Cory G Watson <gphat@cpan.org>
 
 groditi: Guillermo Roditi <groditi@cpan.org>
 
+ilmari: Dagfinn Ilmari MannsE<aring>ker <ilmari@ilmari.org>
+
 jesper: Jesper Krogh
 
 jgoulah: John Goulah <jgoulah@cpan.org>
index 4254b1e..1c4dd0e 100644 (file)
@@ -1279,7 +1279,8 @@ sub _register_source {
 
   if ($source->result_class) {
     my %map = %{$self->class_mappings};
-    if (exists $map{$source->result_class}) {
+    if (exists $map{$source->result_class}
+            && $map{$source->result_class} ne $moniker) {
       warn $source->result_class . ' already has a source, use register_extra_source for additional sources';
     }
     $map{$source->result_class} = $moniker;
index 5c531fd..c5c19bb 100644 (file)
@@ -12,7 +12,7 @@ use DBICTest;
     use base qw/DBIx::Class::ResultSource::Table/;
 }
 
-plan tests => 3;
+plan tests => 4;
 
 my $schema = DBICTest->init_schema();
 my $artist_source = $schema->source('Artist');
@@ -36,6 +36,12 @@ local $SIG{__WARN__} = sub { $warn = shift };
 }
 
 {
+  my $source = $schema->source('DBICTest::Artist');
+  $schema->register_source($source->source_name, $source);
+  is($warn, '', "regregistering an existing source under the same name causes no errors");
+}
+
+{
   my $new_source_name = 'Artist->preview(artist_preview)';
   $schema->register_source( $new_source_name => $new_source );