On 12/2/15 6:33 PM, Haani Niyaz wrote:
> Hi Ben,
> 
> I am also looking for some reference material to better illustrate how
> to use rsepc puppet, a best practices of sorts to my team. Were you
> successful in finding some examples?
> 
> On Friday, 11 July 2014 10:29:32 UTC+10, Ben Sullivan wrote:
> 
>     Hi
> 
>     I'm looking for some reference modules to share with my team to
>     illustrate how to best use rspec-puppet to unit test Puppet DSL code.
> 
>     I'm going to go through the Puppet Enterprise supported modules as I
>     figured that was a reasonable place to
>     start: https://forge.puppetlabs.com/modules?supported=yes
>     <https://forge.puppetlabs.com/modules?supported=yes>
> 
>     The team doesn't understand the value of rspec-puppet at present and
>     I need to articulate arguments to get some buy-in.  At the moment we
>     rely on long-running end to end tests which won't scale for us as
>     our automation codebase grows.
> 
>     Any tips/recommendations would be appreciated.
> 
>     Many thanks
> 
>     Ben
> 

Hello,

Last year I spoke[1] at LISA about why TDD works for configuration
management. Unfortunately, those slides are all pictures.. I teach an
interactive class about testing and last year gave a 1/2 day tutorial on
testing with rspec-puppet at LOAD. Those slides[2] explain why testing
is important, what are all the bits needed to get rspec-puppet to work
and what to test. It references a Vagrant setup[3] to get you started.
It installs some older gems, so you might be better off cloning one of
the modules below and using `rvm use 2.1.0 && bundle install` to get all
the testing dependencies going.

My vim module is an example[4] of testing a simple class that works on
many platforms and the nscd module is an example[5] of a module with a
ton of parameters and also supporting many platforms.

If you're interested in best practices around testing, I recently
starting working with Rubocop after noticing that a puppet-community
module was using it in their automated testing. Rubocop enforces ruby
style. Here's an example commit[6] that shows how I added it to a
module, modified the Travis-ci testing setup and all the changes to the
code that resulted.

[1] -
http://www.slideshare.net/gh/20141114-why-test-driven-development-tdd-works-for-sysadmins-lisa14

[2] - http://www.slideshare.net/gh/20140406-loa-daystddwithpuppettutorial

[3] - https://github.com/ghoneycutt/learnpuppet-tdd-vagrant

[4] -
https://github.com/ghoneycutt/puppet-module-vim/blob/master/spec/classes/init_spec.rb

[5] -
https://github.com/ghoneycutt/puppet-module-nscd/blob/master/spec/classes/init_spec.rb

[6] -
https://github.com/ghoneycutt/puppet-module-nscd/commit/de95ca517ed7df0bf2c34b0c8decff551a697fde

Best regards,
-g

-- 
Garrett Honeycutt
@learnpuppet
Puppet Training with LearnPuppet.com
Mobile: +1.206.414.8658

-- 
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/566070AC.5000401%40garretthoneycutt.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to