summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/parser/functions/member.rb3
-rwxr-xr-xspec/acceptance/member_spec.rb28
2 files changed, 30 insertions, 1 deletions
diff --git a/lib/puppet/parser/functions/member.rb b/lib/puppet/parser/functions/member.rb
index 43d76af..11a1d24 100644
--- a/lib/puppet/parser/functions/member.rb
+++ b/lib/puppet/parser/functions/member.rb
@@ -32,8 +32,9 @@ Would return: false
item = arguments[1]
+
raise(Puppet::ParseError, 'member(): You must provide item ' +
- 'to search for within array given') if item.empty?
+ 'to search for within array given') if item.respond_to?('empty?') && item.empty?
result = array.include?(item)
diff --git a/spec/acceptance/member_spec.rb b/spec/acceptance/member_spec.rb
index b467dbb..fe75a07 100755
--- a/spec/acceptance/member_spec.rb
+++ b/spec/acceptance/member_spec.rb
@@ -2,6 +2,13 @@
require 'spec_helper_acceptance'
describe 'member function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+ shared_examples 'item found' do
+ it 'should output correctly' do
+ apply_manifest(pp, :catch_failures => true) do |r|
+ expect(r.stdout).to match(/Notice: output correct/)
+ end
+ end
+ end
describe 'success' do
it 'members arrays' do
pp = <<-EOS
@@ -18,8 +25,29 @@ describe 'member function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('oper
expect(r.stdout).to match(/Notice: output correct/)
end
end
+ describe 'members array of integers' do
+ it_should_behave_like 'item found' do
+ let(:pp) { <<-EOS
+ if member( [1,2,3,4], 4 ){
+ notify { 'output correct': }
+ }
+ EOS
+ }
+ end
+ end
+ describe 'members of mixed array' do
+ it_should_behave_like 'item found' do
+ let(:pp) { <<-EOS
+ if member( ['a','4',3], 'a' ){
+ notify { 'output correct': }
+}
+ EOS
+ }
+ end
+ end
it 'members arrays without members'
end
+
describe 'failure' do
it 'handles improper argument counts'
end