Fly, Penguin!

I blog so I don't forget.

Loathing RSpec and Puppet

1 minute read #puppet #solved #testing

There are words for how much I hate RSpec (especially RSpec-Puppet), but they would be too harsh to write down.

So now that I don’t have to google the same shit over and over again, here’s what you have to do to get basic puppet module testing up and running (replace $MODULE with your module name, of course):

$MODULE/Rakefile

require 'rubygems'
require 'puppetlabs_spec_helper/rake_tasks'

$MODULE/.fixtures.yml

fixtures:
  repositories:
    concat: git://github.com/puppetlabs/puppetlabs-concat.git
    # alternate method, for specifying refs
    stdlib:
      repo: git://github.com/puppetlabs/puppetlabs-stdlib.git
      ref:  1.0.0
  symlinks:
    # do _not_ forget this
    $MODULE: "#{source_dir}"

$MODULE/spec/spec_helper.rb

require 'rubygems'
require 'puppetlabs_spec_helper/module_spec_helper'

$MODULE/spec/classes/$MODULE_spec.rb

# see also http://rspec-puppet.com/
require 'spec_helper'

describe '$MODULE' do
  context 'default' do
    it {
      should contain_file('/etc/haproxy/haproxy.conf')
    }

    # or ...
    it do
      is_expected.to contain_file('/this/syntax/is/even/more/retarded')
    end
  end
end

Final note

It’s “rake spec”, not “rake test”. Of course.