]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
(maint) Add the behavior for count() with arrays and hashes
authorJeff McCune <jeff@puppetlabs.com>
Wed, 10 Apr 2013 21:33:08 +0000 (14:33 -0700)
committerJeff McCune <jeff@puppetlabs.com>
Wed, 10 Apr 2013 21:33:10 +0000 (14:33 -0700)
Without this patch the expected behavior of the count() function when
dealing with an out of bound array index and with a hash key that does
not exist is implicitly encoded in the spec examples.  This is a problem
because the expected behavior is not clear for something similar to the
following example:

    node default {
      $ary = [ 1, 2, 3 ]
      $ary_undef = $ary[100]
      $hsh = { 'one' => 1 }
      $hsh_undef = $hsh['dne']
      $count = count(['hi', $ary_undef, $hsh_undef])
      notice "Count is ${count}"
    }

This patch addresses the problem by making the expected behavior
explicit in the examples.

spec/unit/puppet/parser/functions/count_spec.rb

index 5e4a8b954153e131400c7798cb70e793cd48bc67..2453815c26d8216ff4e36305b994de782b6cd0c7 100644 (file)
@@ -21,7 +21,11 @@ describe "the count function" do
     scope.function_count([["1", "2", "2"], "2"]).should(eq(2))
   end
 
-  it "should not count :undef, nil or empty strings" do
-    scope.function_count([["foo","bar",:undef,nil,""]]).should(eq(2))
+  it "should not count nil or empty strings" do
+    scope.function_count([["foo","bar",nil,""]]).should(eq(2))
+  end
+
+  it 'does not count an undefined hash key or an out of bound array index (which are both :undef)' do
+    expect(scope.function_count([["foo",:undef,:undef]])).to eq(1)
   end
 end