cookbook 'minitest-handler', '= 0.2.1'
minitest-handler
(30) Versions
0.2.1
-
Follow12
Installs and configures minitest-chef-handler
cookbook 'minitest-handler', '= 0.2.1', :supermarket
knife supermarket install minitest-handler
knife supermarket download minitest-handler
Cookbook: minitest-handler<br/>
Author: Bryan W. Berry bryan.berry@gmail.com<br/>
Author: Bryan McLellan btm@loftninjas.org<br/>
Author: David Petzel davidpetzel@gmail.com<br/>
Copyright: 2012 Opscode, Inc.<br/>
License: Apache 2.0<br/>
Description
<a name="title"></a> minitest-handler
This cookbook utilizes the minitest-chef-handler project to facilitate
cookbook testing. By default, minitest-handler will collect all the
tests in your cookbook_path and run them.
minitest-chef-handler project: https://github.com/calavera/minitest-chef-handler<br/>
stable minitest-handler cookbook: http://community.opscode.com/cookbooks/minitest-handler<br/>
minitest-handler cookbook development: https://github.com/btm/minitest-handler-cookbook<br/>
Note: Version 0.1.8 deprecated use of
files/default/tests/minitest/_test.rb and the location of support
files. Test files should now be located in
files/default/test/_test.rb
Note: Version 0.1.0 added a change that breaks backward compatibility. The minitest-handler now only loads<br/>
test files named "<recipe-name>_test.rb" rather than all test files in the path files/default/test/*_test.rb
If you have any helper libraries, they should match files/default/test/helper.rb
Attributes
- node[:minitest][:path] - Location to store and find tests, defaults
to
/var/chef/minitest - node[:minitest][:recipes] - defaults to empty and is populated with
the names of all recipes included during the chef run, whether by
insertion to the run_list, inclusion through a role, or added with
include_recipe. If you only want tests for select recipes to run, override this value with the names of the recipes that you want tested. - node[:minitest][:filter] - filter test names on a pattern
- node[:minitest][:seed] - set random seed
- node[:minitest][:ci_reports] - path to write out the result of each test in a JUnit-compatible XML file, parseable by many CI platforms
- node[:minitest][:tests] - Test files to run, defaults to
**/*_test.rb
Usage
- add 'recipe[minitest-handler]' somewhere on your run_list, preferably last
- place tests in 'files/default/test/' with the name 'your-recipe-name_test.rb' (default recipe is named 'default_test.rb')
- put any helper functions you have in files/default/test/spec_helper.rb but minitest-handler will ensure that you have access to any file that matches the glob files/test/*helper.rb
Examples
Traditional minitest
class TestApache2 < MiniTest::Chef::TestCase
def test_that_the_package_installed
case node[:platform]
when "ubuntu","debian"
assert system('apt-cache policy apache2 | grep Installed | grep -v none')
end
end
def test_that_the_service_is_running
assert system('/etc/init.d/apache2 status')
end
def test_that_the_service_is_enabled
assert File.exists?(Dir.glob("/etc/rc5.d/S*apache2").first)
end
end
Using minitest/spec
require 'minitest/spec'
describe_recipe 'ark::test' do
it "installed the unzip package" do
package("unzip").must_be_installed
end
it "dumps the correct files into place with correct owner and group" do
file("/usr/local/foo_dump/foo1.txt").must_have(:owner, "foobarbaz").and(:group, "foobarbaz")
end
end
For more detailed examples, see here
Testing this cookbook
This cookbook currently uses test-kitchen 1.0 and the
kitchen-lxc driver to run
tests. The easiest way to put everything in place for proper lxc
functioning is to install the vagabond gem and execute vagabond. This command will run chef-solo to configure LXC and put the
init
proper LXC templates in place.
All tests are written using
BATS, which is essentially
bash. I did this because I did not want to use minitest-handler or
minitest-chef-handler to test itself. For more examples of bats than are in this cookbook, see
the chef-rvm, chef-ruby_build, and chef-rbenv cookbooks.
