Cleaner error message for using source() without required argument
Maik Hentsche [Mon, 14 Jun 2010 08:32:20 +0000 (10:32 +0200)]
Changes
lib/DBIx/Class.pm
lib/DBIx/Class/Schema.pm
t/101source.t [new file with mode: 0644]

diff --git a/Changes b/Changes
index 18ed595..c4256b9 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
 Revision history for DBIx::Class
 
+    * Fixes
+        - Throw comprehensible exception on erroneous $schema->source()
+          invocation
+
 0.08126_01 2011-01-14 14:00 (UTC)
     * New Features / Changes
         - Schema/resultsource instances are now crossreferenced via a new
index 20e38a3..acf2959 100644 (file)
@@ -266,6 +266,8 @@ brunov: Bruno Vecchi <vecchi.b@gmail.com>
 
 caelum: Rafael Kitover <rkitover@cpan.org>
 
+caldrin: Maik Hentsche <maik.hentsche@amd.com>
+
 castaway: Jess Robinson
 
 claco: Christopher H. Laco
index 8270c27..4abd9dd 100644 (file)
@@ -587,7 +587,13 @@ source name.
 =cut
 
 sub source {
-  my ($self, $moniker) = @_;
+  my $self = shift;
+
+  $self->throw_exception("source() expects a source name")
+    unless @_;
+
+  my $moniker = shift;
+
   my $sreg = $self->source_registrations;
   return $sreg->{$moniker} if exists $sreg->{$moniker};
 
diff --git a/t/101source.t b/t/101source.t
new file mode 100644 (file)
index 0000000..477a4dd
--- /dev/null
@@ -0,0 +1,14 @@
+use warnings;
+use strict;
+
+use Test::More;
+use Test::Exception;
+
+use lib qw(t/lib);
+use DBICTest;
+
+my $schema = DBICTest->init_schema;
+
+throws_ok {$schema->source()} qr/\Qsource() expects a source name/, 'Empty args for source caught';
+
+done_testing();