diff options
author | Jeff McCune <jeff@puppetlabs.com> | 2013-04-10 14:33:08 -0700 |
---|---|---|
committer | Jeff McCune <jeff@puppetlabs.com> | 2013-04-10 14:33:10 -0700 |
commit | 435226abfdf001bf2475be56d77027c638e93b70 (patch) | |
tree | 1becf927a199a41b4ecb28d8c8832c32851f1d65 | |
parent | f28550e78996f908b076cdc9aebcbe584c777cd0 (diff) | |
download | puppet-stdlib-435226abfdf001bf2475be56d77027c638e93b70.tar.gz puppet-stdlib-435226abfdf001bf2475be56d77027c638e93b70.tar.bz2 |
(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.
-rw-r--r-- | spec/unit/puppet/parser/functions/count_spec.rb | 8 |
1 files changed, 6 insertions, 2 deletions
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 |