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 [email protected]. 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.
