fix $rs->populate([]) to be a no-op rather than an exception
Matt S Trout [Fri, 15 Jul 2011 10:49:30 +0000 (10:49 +0000)]
Changes
lib/DBIx/Class/ResultSet.pm
t/101populate_rs.t

diff --git a/Changes b/Changes
index d8613d7..9d03176 100644 (file)
--- a/Changes
+++ b/Changes
@@ -2,6 +2,7 @@ Revision history for DBIx::Class
 
     * Fixes
         - Fix spurious test failures caused by use of Data::Compare
+        - Fix $rs->populate([]) to be a no-op rather than an exception
 
 0.08193 2011-07-14 17:00 (UTC)
     * New Features / Changes
index bf4b1d8..4c5b961 100644 (file)
@@ -1972,6 +1972,8 @@ sub populate {
   # cruft placed in standalone method
   my $data = $self->_normalize_populate_args(@_);
 
+  return unless @$data;
+
   if(defined wantarray) {
     my @created;
     foreach my $item (@$data) {
@@ -2076,7 +2078,10 @@ sub _normalize_populate_args {
   my ($self, $arg) = @_;
 
   if (ref $arg eq 'ARRAY') {
-    if (ref $arg->[0] eq 'HASH') {
+    if (!@$arg) {
+      return [];
+    }
+    elsif (ref $arg->[0] eq 'HASH') {
       return $arg;
     }
     elsif (ref $arg->[0] eq 'ARRAY') {
index a2a2615..6caf01e 100644 (file)
@@ -686,4 +686,6 @@ ARRAYREF_OF_ARRAYREF_STYLE: {
   }
 }
 
+ok(eval { $art_rs->populate([]); 1 }, "Empty populate runs but does nothing");
+
 done_testing;