From: Jeff McCune Date: Wed, 10 Apr 2013 21:33:08 +0000 (-0700) Subject: (maint) Add the behavior for count() with arrays and hashes X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=435226abfdf001bf2475be56d77027c638e93b70;p=puppet-stdlib.git (maint) Add the behavior for count() with arrays and hashes 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. --- diff --git a/spec/unit/puppet/parser/functions/count_spec.rb b/spec/unit/puppet/parser/functions/count_spec.rb index 5e4a8b9..2453815 100644 --- a/spec/unit/puppet/parser/functions/count_spec.rb +++ b/spec/unit/puppet/parser/functions/count_spec.rb @@ -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