From d9b5e912bbb6dffff01e03a0b040fd78888f2578 Mon Sep 17 00:00:00 2001
From: Yanis Guenane <yguenane@clarityhs.com>
Date: Sun, 30 Mar 2014 18:47:36 -0400
Subject: (MODULES-603) Add defaults arguments to ensure_packages()

Without this patch one can not specify package resource specific
parameters. All the ensure_packages() function does it makes sure
the named packages are installed. This patch allows one to pass
default as a second argument and allow greater flexibility on
packages installations.

Use case like the following are now possible :
  * ensure_packages(['r10k', 'serverspec'], {'provider' => 'gem'})
  * ensure_packages(['ntp'], {'require' => 'Exec[foobar]'})
---
 spec/functions/ensure_packages_spec.rb | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

(limited to 'spec/functions')

diff --git a/spec/functions/ensure_packages_spec.rb b/spec/functions/ensure_packages_spec.rb
index bf62eff..436be10 100644
--- a/spec/functions/ensure_packages_spec.rb
+++ b/spec/functions/ensure_packages_spec.rb
@@ -32,7 +32,7 @@ describe 'ensure_packages' do
     it 'fails with no arguments' do
       expect {
         scope.function_ensure_packages([])
-      }.to raise_error(Puppet::ParseError, /0 for 1/)
+      }.to raise_error(Puppet::ParseError, /0 for 1 or 2/)
     end
 
     it 'accepts an array of values' do
@@ -67,4 +67,15 @@ describe 'ensure_packages' do
       expect(catalog.resource(:package, 'facter')['ensure']).to eq('present')
     end
   end
+
+  context 'given a clean catalog and specified defaults' do
+    let :catalog do
+      compile_to_catalog('ensure_packages(["facter"], {"provider" => "gem"})')
+    end
+
+    it 'declares package resources with ensure => present' do
+      expect(catalog.resource(:package, 'facter')['ensure']).to eq('present')
+      expect(catalog.resource(:package, 'facter')['provider']).to eq('gem')
+    end
+  end
 end
-- 
cgit v1.2.3