We use this as a central place to manage the Gem dependencies, Rake tasks and development readme that's shared between our cookbooks. See below on how to get set up for working on a HipSnip cookbook, and how to run the tests for it.
These are generic dependencies which will be shared between cookbooks
- Ruby version manager of your choice (RVM or Rbenv). If you don't use any of those, then just make sure your Ruby version matches the one defined in
.ruby-version
. - Bundler -
gem install bundler
- Vagrant (> 1.2.1) - download here
These are mostly specific to the given cookbook repository
From the root of the cookbook repo:
bundle install
bundle exec berks install
vagrant plugin install vagrant-berkshelf
These tests do not rely on a Vagrant VM, and so they can also be run as part of a Travis CI build. To run these:
bundle exec rake cookbook:test
This will use Strainer in standalone mode to create a sandbox, and run a set of tests defined in the Strainerfile
against it:
- Syntax check using
knife test
- Linting via Foodcritic
- Unit tests executed against a virtual chef run using ChefSpec
These checks run relatively quickly, so they can be used while iterating over changes to a cookbook.
These tests include all the "offline" tests from above, plus a set of integration tests run against Vagrant VMs using Test Kitchen. To run the integration tests:
bundle exec rake cookbook:full_test
NOTE: The integration tests can take a while, as Test Kitchen provisions a new Vagrant VM for each test run.
## Contributing
Just a few basic rules:
- Always Make your changes in a feature branch, and then submit a pull request
- When adding new features/fixes, please add tests as well (where appropriate)
- Make sure the full integration test suite passes before you submit your changes