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.