cookbook 'minitest-handler', '= 1.0.1'
minitest-handler
(30) Versions
1.0.1
-
Follow12
Installs and configures minitest-chef-handler
cookbook 'minitest-handler', '= 1.0.1', :supermarket
knife supermarket install minitest-handler
knife supermarket download minitest-handler
Cookbook: minitest-handler<br/>
Author: David Petzel davidpetzel@gmail.com<br/>
Author: Bryan W. Berry bryan.berry@gmail.com<br/>
Author: Bryan McLellan btm@loftninjas.org<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][:gem_version]
- The version of the minitest gem to install and use.- Default: 3.0.1
-
node[:minitest][:chef_handler_gem_version]
- The version of the minitest-chef-handler gem to install and use.- Default: 1.0.1
-
node[:minitest][:path]
- Location to store and find test files.- Default:
/var/chef/minitest
- Default:
-
node[:minitest][:recipes]
- The names of all recipes included during the chef run, whether by insertion to the run_list, inclusion through a role, or added withinclude_recipe
. If you only want tests for select recipes to run, override this value with the names of the recipes that you want tested.- Default: []
-
node[:minitest][:filter]
- Filter test names on a pattern (regex)- Default:
nil
- Example:
/apache2/
could be used to only run tests for recipes with starting with apache2
- Default:
-
node[:minitest][:seed]
- Set random seed- Default:
nil
- Default:
-
node[:minitest][:ci_reports]
- Path to write out the result of each test in a JUnit-compatible XML file, parseable by many CI platforms- Default:
nil
- Default:
-
node[:minitest][:tests]
- Test files to run.- Default to
**/*_test.rb
- Default to
-
node[:minitest][:verbose]
- Display verbose output- Default: true
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 globfiles/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
along with the kitchen-vagrant.
All test are currently written using BATS,
which is essentially bash. Using BATS was done so that minitest-handler nor
minitest-chef-handler were used to test itself. For more examples of bats than
are in this cookbook, see the chef-rvm,
chef-ruby_build, and
chef-rbenv cookbooks.
NOTE A known limitation of using BATS is that the cookbook is not currently
tested on Windows machines. See https://github.com/btm/minitest-handler-cookbook/issues/45
for more of the background on this.