summaryrefslogtreecommitdiff
path: root/spec/unit/puppet/parser/functions/ensure_packages_spec.rb
diff options
context:
space:
mode:
authorAshley Penney <ashley.penney@puppetlabs.com>2014-05-07 18:03:57 -0400
committerAshley Penney <ashley.penney@puppetlabs.com>2014-05-07 18:03:57 -0400
commit17a912ea0afb3fb018170477856c25a95009f2cc (patch)
tree91f4a1910df1dfd5729a2a9ad8dbf4ec3fa0402e /spec/unit/puppet/parser/functions/ensure_packages_spec.rb
parent176ff3abdc1e63de02d6d8d9cb2d70c09f7b7766 (diff)
parentc66a2e4f49d6c9ebcbff718f3ec119049fb4c514 (diff)
downloadpuppet-stdlib-17a912ea0afb3fb018170477856c25a95009f2cc.tar.gz
puppet-stdlib-17a912ea0afb3fb018170477856c25a95009f2cc.tar.bz2
Merge pull request #247 from hunner/more_tests
Adding more spec coverage
Diffstat (limited to 'spec/unit/puppet/parser/functions/ensure_packages_spec.rb')
-rwxr-xr-xspec/unit/puppet/parser/functions/ensure_packages_spec.rb81
1 files changed, 81 insertions, 0 deletions
diff --git a/spec/unit/puppet/parser/functions/ensure_packages_spec.rb b/spec/unit/puppet/parser/functions/ensure_packages_spec.rb
new file mode 100755
index 0000000..436be10
--- /dev/null
+++ b/spec/unit/puppet/parser/functions/ensure_packages_spec.rb
@@ -0,0 +1,81 @@
+#! /usr/bin/env ruby
+
+require 'spec_helper'
+require 'rspec-puppet'
+require 'puppet_spec/compiler'
+
+describe 'ensure_packages' do
+ include PuppetSpec::Compiler
+
+ before :each do
+ Puppet::Parser::Functions.autoloader.loadall
+ Puppet::Parser::Functions.function(:ensure_packages)
+ Puppet::Parser::Functions.function(:ensure_resource)
+ Puppet::Parser::Functions.function(:defined_with_params)
+ Puppet::Parser::Functions.function(:create_resources)
+ end
+
+ let :node do Puppet::Node.new('localhost') end
+ let :compiler do Puppet::Parser::Compiler.new(node) end
+ let :scope do
+ if Puppet.version.to_f >= 3.0
+ Puppet::Parser::Scope.new(compiler)
+ else
+ newscope = Puppet::Parser::Scope.new
+ newscope.compiler = compiler
+ newscope.source = Puppet::Resource::Type.new(:node, :localhost)
+ newscope
+ end
+ end
+
+ describe 'argument handling' do
+ it 'fails with no arguments' do
+ expect {
+ scope.function_ensure_packages([])
+ }.to raise_error(Puppet::ParseError, /0 for 1 or 2/)
+ end
+
+ it 'accepts an array of values' do
+ scope.function_ensure_packages([['foo']])
+ end
+
+ it 'accepts a single package name as a string' do
+ scope.function_ensure_packages(['foo'])
+ end
+ end
+
+ context 'given a catalog with puppet package => absent' do
+ let :catalog do
+ compile_to_catalog(<<-EOS
+ ensure_packages(['facter'])
+ package { puppet: ensure => absent }
+ EOS
+ )
+ end
+
+ it 'has no effect on Package[puppet]' do
+ expect(catalog.resource(:package, 'puppet')['ensure']).to eq('absent')
+ end
+ end
+
+ context 'given a clean catalog' do
+ let :catalog do
+ compile_to_catalog('ensure_packages(["facter"])')
+ end
+
+ it 'declares package resources with ensure => present' 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