You should use my tool that retrofits all the files you need in your module 
automatically for spec testing.  

https://github.com/nwops/puppet-retrospec

gem install puppet-retrospec
cd your_favorite_module
retrospec puppet
bundle install
bundle exec rake spec

If you question a previous file you created is not right, just delete and 
re-run retrospec to have it automatically re-created according to the 
retrospec templates.

This tool isn't meant to automate the learning process, it just helps 
immensely with repetitive tasks.   So you will still need to learn quite a 
bit to understand unit testing.


Corey

On Friday, November 27, 2015 at 3:23:49 PM UTC-5, Salty Old Cowdawg wrote:
>
> So, 
>
> Now that my schedule has some slack in it I've turned my attention back to 
> doing spec testing of my Puppet modules.  Taking a really really simple 
> module that I wrote as an example I started in again.
>
> Here is the one and only file making up the class.  
>
> ---------- init.pp ------------------------------
> class ntp {
>
>   package { 'ntp':
>     ensure => latest
>   }
>   service { 'ntp':
>     ensure  => running,
>     enable  => true,
>     require => Package[ntp]
>   }
>     
>
> }
> -----------------------------------------------------
>
> That should be really easy to run tests against in my opinion.  I wrote a 
> Gemfle for the occasion.
>
> ---------Gemfile---------------------------
> source 'https://rubygems.org'
>
> puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" 
> : ['>= 3.3']
> gem 'puppet', puppetversion
> gem 'puppetlabs_spec_helper', '>= 0.1.0'
> gem 'puppet-lint', '>= 0.3.2'
> gem 'facter', '>= 1.7.0'
> gem 'rake','>= 0.0.0'
> gem 'spec','>= 0.0.0'
> --------------------------------------------------------------------
> and my spec file looks like this: 
>
> ------- spec/classes/init_spec.rb ---------------
> require 'spec_helper'
> describe 'ntp', :type => 'class' do
>
>   context 'On Debian' do
>     let :facts do {
>          :osfamily => 'Debian'
> }
>     end
>       
>       it {
>         should contain_package('ntp').with({ 'name' =>  'ntp' })
>         should contain_service('ntp').with({ 'name' => 'ntp' })
>       }
>     end
>     
> end
> -------------------------------------------------------------------
>
> and when I run "rake spec" I get this (severely trimmed) set of errors:
> -------------errors--------------------------------------------------
>  1) ntp On Debian should contain Package[ntp] with name => "ntp"
>      Failure/Error: should contain_package('ntp').with({ 'name' =>  'ntp' 
> })
>      
>      ArgumentError:
>        wrong number of arguments (2 for 1)
> ------------------------------------------------------------------------
>
> Looks to me after reading "The Next Generation of Puppet Module Testing" 
>  at this page: 
> https://puppetlabs.com/blog/the-next-generation-of-puppet-module-testing
> there should only be one argument to  "with" so.. if that's not an 
> authoritative page for that information, which one is? 
>
> Can somebody clarify for me what;s going on here?
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/624d92fe-7175-4fb4-9f08-81f467053a02%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to