summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2013-04-10 14:33:08 -0700
committerJeff McCune <jeff@puppetlabs.com>2013-04-10 14:33:10 -0700
commit435226abfdf001bf2475be56d77027c638e93b70 (patch)
tree1becf927a199a41b4ecb28d8c8832c32851f1d65
parentf28550e78996f908b076cdc9aebcbe584c777cd0 (diff)
downloadpuppet-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.rb8
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