rspec - Running unit tests for Puppet modules -
i add rspec unit tests puppet 4 modules. started , confirm basic functioning, first run unit tests come standard puppet modules such puppetlabs/apt.
if try running specific unit test so
cd modules/apt rspec spec/classes/apt_spec.rb
i failures, , of diagnostic output seems indicate part of puppet runtime environment (such module stdlib
, defines function merge
) not picked correctly:
failures: 1) apt defaults should contain file[sources.list] notifies class[apt::update] failure/error: { is_expected.to contain_file('sources.list').that_notifies('class[apt::update]').only_with({ :ensure => 'file', :path => '/etc/apt/sources.list', :owner => 'root', :group => 'root', :mode => '0644', :notify => 'class[apt::update]', })} puppet::preformattederror: evaluation error: unknown function: 'merge'. @ /home/my_user/modules/apt/spec/fixtures/modules/apt/manifests/init.pp:50:14 on node my_host
if try running unit tests so
rake spec
i error message:
rake aborted! nameerror: uninitialized constant bundler /home/my_user/modules/apt/rakefile:3:in `<top (required)>' (see full trace running task --trace)
prior these attempts have taken steps prepare runtime environment (on debian host):
mkdir modules cd modules puppet module --modulepath=. install puppetlabs-apt # installs stdlib sudo gem install rspec-puppet sudo gem install puppet sudo gem install puppetlabs_spec_helper sudo apt-get install rake
my question this: how can correctly prepare runtime environment , run unit tests come puppet module puppet forge such puppetlabs/apt
?
to need firstly ensure have ruby gems installed. ensure have installed bundler, means typing:
$ gem install bundler
next, assume cloned apt module, cd directory cloned in , install bundle:
$ bundle install
now, there's problem specific module you've chosen. when try run bundle install get:
could not find gem 'puppet-module-posix-default-r2.0' in of gem sources listed in gemfile or available on machine.
i not sure means @ moment, , needs raise bug.
i expected able work around using:
$ bundle install --without development system_tests
even not working commented-out groups.
next, run tests using:
$ bundle exec rake spec
that run tests. however, think puppet has broken rspec tests people outside company.
i going follow , come , update answer have figured out has happened.
i'll leave answer here since it's still documenting correct procedure.
see blog post on subject, although possibly little dated now. let me know if there's need update.
Comments
Post a Comment