This module has grown over time based on a range of contributions from people using it. If you follow these contributing guidelines your patch will likely make it into a release a little quicker.
-
Fork the repo.
-
Create a separate branch for your change.
-
Run the tests. We only take pull requests with passing tests, and documentation.
-
Add a test for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, please add a test.
-
Squash your commits down into logical components. Make sure to rebase against the current master.
-
Push the branch to your fork and submit a pull request.
Please be prepared to repeat some of these steps as our contributors review your code.
The testing and development tools have a bunch of dependencies, all managed by bundler according to the Puppet support matrix.
By default the tests use a baseline version of Puppet.
If you have Ruby 2.x or want a specific version of Puppet, you must set an environment variable such as:
export PUPPET_VERSION="~> 4.2.0"
Install the dependencies like so...
bundle install
The test suite will run Puppet Lint and Puppet Syntax to check various syntax and style things. You can run these locally with:
bundle exec rake test
The unit test suite covers most of the code, as mentioned above please
add tests if you're adding new functionality. If you've not used
rspec-puppet before then feel free to ask
about how best to test your new feature. To run your specific spec test
you can pass it to SPEC
:
bundle exec rake spec SPEC=spec/foo_spec.rb
The unit tests just check the code runs, not that it does exactly what we want on a real machine. For that we're using beaker.
This fires up a new virtual machine (using vagrant) and runs a series of simple tests against it after applying the module. You can run this with:
bundle exec rake acceptance
This will run the tests on an Ubuntu 12.04 virtual machine. You can also run the integration tests against Centos 6.5 with.
RS_SET=centos-64-x64 bundle exec rake acceptances
If you don't want to have to recreate the virtual machine every time you
can use BEAKER_DESTROY=no
and BEAKER_PROVISION=no
. On the first run you will
at least need BEAKER_PROVISION
set to yes (the default). The Vagrantfile
for the created virtual machines will be in .vagrant/beaker_vagrant_fies
.