diff options
author | Adrien Thebo <git@somethingsinistral.net> | 2014-01-15 11:17:48 -0800 |
---|---|---|
committer | Adrien Thebo <git@somethingsinistral.net> | 2014-01-15 11:17:48 -0800 |
commit | e49d356fbf84798ebf7dbd5682de18c368b0ccec (patch) | |
tree | a698b774a399800ad7570357d714777afe26aa5a | |
parent | 01c9c3c97998c220c41b386e64468a1efff37127 (diff) | |
parent | 75341f01d921352caf98caaff7ac30dcb6b626ed (diff) |
Merge branch 'pull-201'
This closes GH-201.
-rw-r--r-- | lib/puppet/parser/functions/ensure_packages.rb | 13 | ||||
-rw-r--r-- | spec/functions/ensure_packages_spec.rb | 14 |
2 files changed, 16 insertions, 11 deletions
diff --git a/lib/puppet/parser/functions/ensure_packages.rb b/lib/puppet/parser/functions/ensure_packages.rb index 450ea02..1e0f225 100644 --- a/lib/puppet/parser/functions/ensure_packages.rb +++ b/lib/puppet/parser/functions/ensure_packages.rb @@ -1,7 +1,6 @@ # # ensure_packages.rb # -require 'puppet/parser/functions' module Puppet::Parser::Functions newfunction(:ensure_packages, :type => :statement, :doc => <<-EOS @@ -9,13 +8,15 @@ Takes a list of packages and only installs them if they don't already exist. EOS ) do |arguments| - raise(Puppet::ParseError, "ensure_packages(): Wrong number of arguments " + - "given (#{arguments.size} for 1)") if arguments.size != 1 - raise(Puppet::ParseError, "ensure_packages(): Requires array " + - "given (#{arguments[0].class})") if !arguments[0].kind_of?(Array) + if arguments.size != 1 + raise(Puppet::ParseError, "ensure_packages(): Wrong number of arguments " + + "given (#{arguments.size} for 1)") + end + + packages = Array(arguments[0]) Puppet::Parser::Functions.function(:ensure_resource) - arguments[0].each { |package_name| + packages.each { |package_name| function_ensure_resource(['package', package_name, {'ensure' => 'present' } ]) } end diff --git a/spec/functions/ensure_packages_spec.rb b/spec/functions/ensure_packages_spec.rb index 6fd56d5..a13c282 100644 --- a/spec/functions/ensure_packages_spec.rb +++ b/spec/functions/ensure_packages_spec.rb @@ -8,13 +8,17 @@ describe 'ensure_packages' do describe 'argument handling' do it 'fails with no arguments' do - should run.with_params().and_raise_error(Puppet::ParseError) + expect { + scope.function_ensure_packages([]) + }.to raise_error(Puppet::ParseError, /0 for 1/) end - it 'requires an array' do - lambda { scope.function_ensure_packages([['foo']]) }.should_not raise_error + + it 'accepts an array of values' do + scope.function_ensure_packages([['foo']]) end - it 'fails when given a string' do - should run.with_params('foo').and_raise_error(Puppet::ParseError) + + it 'accepts a single package name as a string' do + scope.function_ensure_packages(['foo']) end end |