minitest-chef-handler 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/History.txt +8 -1
  2. data/LICENSE +1 -0
  3. data/README.md +58 -2
  4. data/Rakefile +15 -0
  5. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/README.md +0 -0
  6. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/attributes/default.rb +0 -0
  7. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/files/default/handlers/README +0 -0
  8. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/metadata.json +0 -0
  9. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/metadata.rb +0 -0
  10. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/providers/default.rb +0 -0
  11. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/default.rb +0 -0
  12. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/json_file.rb +0 -0
  13. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/recipes/minitest.rb +0 -0
  14. data/examples/{cookbooks → chef-handler-cookbook/cookbooks}/chef_handler/resources/default.rb +0 -0
  15. data/examples/{cookbooks → simple-solo/cookbooks}/foo/recipes/default.rb +0 -0
  16. data/examples/{cookbooks → simple-solo/cookbooks}/foo/test/test_foo.rb +0 -0
  17. data/examples/{dna.json → simple-solo/dna.json} +0 -0
  18. data/examples/simple-solo/solo.rb +6 -0
  19. data/examples/simple-solo/spec/foo_spec.rb +9 -0
  20. data/examples/{test → simple-solo/test}/test_foo.rb +0 -0
  21. data/examples/spec_examples/attributes/default.rb +8 -0
  22. data/examples/spec_examples/files/default/tests/minitest/example_test.rb +232 -0
  23. data/examples/spec_examples/metadata.rb +5 -0
  24. data/examples/spec_examples/recipes/default.rb +68 -0
  25. data/examples/spec_examples/templates/default/foo.erb +3 -0
  26. data/lib/minitest-chef-handler.rb +8 -23
  27. data/lib/minitest-chef-handler/assertions.rb +129 -0
  28. data/lib/minitest-chef-handler/context.rb +16 -0
  29. data/lib/minitest-chef-handler/infections.rb +37 -0
  30. data/lib/minitest-chef-handler/resources.rb +54 -0
  31. data/lib/minitest-chef-handler/runner.rb +12 -0
  32. data/lib/minitest-chef-handler/spec.rb +19 -0
  33. data/lib/minitest-chef-handler/unit.rb +11 -0
  34. data/minitest-chef-handler.gemspec +3 -1
  35. data/spec/minitest-chef-handler/assertions_spec.rb +293 -0
  36. data/spec/minitest-chef-handler/infections_spec.rb +31 -0
  37. data/spec/minitest-chef-handler/resources_spec.rb +51 -0
  38. data/spec/spec_helper.rb +16 -0
  39. metadata +65 -22
  40. data/examples/solo.rb +0 -4
@@ -0,0 +1,31 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe MiniTest::Chef::Infections do
4
+
5
+ include MiniTest::Chef::Infections
6
+
7
+ def has_matchers(const, matchers)
8
+ matchers.each { |m| const.public_instance_methods.must_include(m) }
9
+ end
10
+
11
+ it "needs to infect the expected Chef resources" do
12
+ has_matchers ::Chef::Resource::Cron, [:must_exist, :wont_exist]
13
+ has_matchers ::Chef::Resource::Directory, [:must_be_modified_after,
14
+ :wont_be_modified_after, :must_exist, :wont_exist]
15
+ has_matchers ::Chef::Resource::File, [:must_be_modified_after,
16
+ :wont_be_modified_after, :must_exist, :wont_exist, :must_include,
17
+ :wont_include, :must_match, :wont_match]
18
+ has_matchers ::Chef::Resource::Group, [:must_exist, :wont_exist,
19
+ :must_include, :wont_include]
20
+ has_matchers ::Chef::Resource::Ifconfig, [:must_exist, :wont_exist]
21
+ has_matchers ::Chef::Resource::Link, [:must_exist, :wont_exist]
22
+ has_matchers ::Chef::Resource::Mount, [:must_be_enabled, :wont_be_enabled,
23
+ :must_be_mounted, :wont_be_mounted]
24
+ has_matchers ::Chef::Resource::Package, [:must_be_installed,
25
+ :wont_be_installed]
26
+ has_matchers ::Chef::Resource::Service, [:must_be_enabled, :wont_be_enabled,
27
+ :must_be_running, :wont_be_running]
28
+ has_matchers ::Chef::Resource::User, [:must_exist, :wont_exist]
29
+ end
30
+
31
+ end
@@ -0,0 +1,51 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe MiniTest::Chef::Resources do
4
+
5
+ let(:resources) { Class.new{ include MiniTest::Chef::Resources }.new }
6
+
7
+ it "provides convenient access to current resource state" do
8
+ [:cron, :directory, :file, :group, :ifconfig, :link, :mount, :package,
9
+ :service, :user].each do |type|
10
+ resources.must_respond_to(type)
11
+ end
12
+ end
13
+
14
+ it "doesn't make available resources that are not idempotent" do
15
+ [:bash, :erl_call, :execute, :ruby].each do |type|
16
+ resources.wont_respond_to(type)
17
+ end
18
+ end
19
+
20
+ it "doesn't make available file resources other than file itself" do
21
+ [:cookbook_file, :remote_file, :template].each do |type|
22
+ resources.wont_respond_to(type)
23
+ end
24
+ end
25
+
26
+ describe "asserting with 'with' syntax" do
27
+ let(:file) { ::Chef::Resource::File.new('/etc/foo') }
28
+ it "can take an attribute name and value to assert against" do
29
+ file.must_have(:name, '/etc/foo').must_equal file
30
+ end
31
+ it "allows assertions on resources to be chained together with 'with'" do
32
+ file.must_have(:name, '/etc/foo').with(:action, 'create').must_equal(file)
33
+ end
34
+ it "allows assertions on resources to be chained together with 'and'" do
35
+ file.must_have(:name, '/etc/foo').with(:action, 'create').
36
+ and(:backup, 5).must_equal(file)
37
+ end
38
+ it "fails if the assertion is not met" do
39
+ assert_triggered(/The file does not have the expected name/) do
40
+ file.must_have(:name, '/etc/bar')
41
+ end
42
+ assert_triggered(/The file does not have the expected action/) do
43
+ file.must_have(:name, '/etc/foo').with(:action, 'delete')
44
+ end
45
+ assert_triggered(/The file does not have the expected action/) do
46
+ file.must_have(:name, '/etc/foo').and(:action, 'delete')
47
+ end
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,16 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
3
+ require 'minitest/spec'
4
+
5
+ require File.expand_path('../../lib/minitest-chef-handler', __FILE__)
6
+
7
+ # Borrowed from MiniTest
8
+ def assert_triggered(expected)
9
+ e = assert_raises(MiniTest::Assertion) do
10
+ yield
11
+ end
12
+ msg = e.message.sub(/(---Backtrace---).*/m, '\1')
13
+ msg.gsub!(/\(oid=[-0-9]+\)/, '(oid=N)')
14
+
15
+ assert_match expected, msg
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-chef-handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-10 00:00:00.000000000 Z
12
+ date: 2012-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: chef
16
+ requirement: &2164305860 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2164305860
14
25
  - !ruby/object:Gem::Dependency
15
26
  name: rake
16
- requirement: &2164677120 !ruby/object:Gem::Requirement
27
+ requirement: &2164304620 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2164304620
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &2164303800 !ruby/object:Gem::Requirement
17
39
  none: false
18
40
  requirements:
19
41
  - - ! '>='
@@ -21,7 +43,7 @@ dependencies:
21
43
  version: '0'
22
44
  type: :development
23
45
  prerelease: false
24
- version_requirements: *2164677120
46
+ version_requirements: *2164303800
25
47
  description: Run Minitest suites as Chef report handlers
26
48
  email:
27
49
  - david.calavera@gmail.com
@@ -36,23 +58,40 @@ files:
36
58
  - README.md
37
59
  - Rakefile
38
60
  - Vagrantfile
39
- - examples/cookbooks/chef_handler/README.md
40
- - examples/cookbooks/chef_handler/attributes/default.rb
41
- - examples/cookbooks/chef_handler/files/default/handlers/README
42
- - examples/cookbooks/chef_handler/metadata.json
43
- - examples/cookbooks/chef_handler/metadata.rb
44
- - examples/cookbooks/chef_handler/providers/default.rb
45
- - examples/cookbooks/chef_handler/recipes/default.rb
46
- - examples/cookbooks/chef_handler/recipes/json_file.rb
47
- - examples/cookbooks/chef_handler/recipes/minitest.rb
48
- - examples/cookbooks/chef_handler/resources/default.rb
49
- - examples/cookbooks/foo/recipes/default.rb
50
- - examples/cookbooks/foo/test/test_foo.rb
51
- - examples/dna.json
52
- - examples/solo.rb
53
- - examples/test/test_foo.rb
61
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/README.md
62
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/attributes/default.rb
63
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/files/default/handlers/README
64
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/metadata.json
65
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/metadata.rb
66
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/providers/default.rb
67
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/recipes/default.rb
68
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/recipes/json_file.rb
69
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/recipes/minitest.rb
70
+ - examples/chef-handler-cookbook/cookbooks/chef_handler/resources/default.rb
71
+ - examples/simple-solo/cookbooks/foo/recipes/default.rb
72
+ - examples/simple-solo/cookbooks/foo/test/test_foo.rb
73
+ - examples/simple-solo/dna.json
74
+ - examples/simple-solo/solo.rb
75
+ - examples/simple-solo/spec/foo_spec.rb
76
+ - examples/simple-solo/test/test_foo.rb
77
+ - examples/spec_examples/attributes/default.rb
78
+ - examples/spec_examples/files/default/tests/minitest/example_test.rb
79
+ - examples/spec_examples/metadata.rb
80
+ - examples/spec_examples/recipes/default.rb
81
+ - examples/spec_examples/templates/default/foo.erb
54
82
  - lib/minitest-chef-handler.rb
83
+ - lib/minitest-chef-handler/assertions.rb
84
+ - lib/minitest-chef-handler/context.rb
85
+ - lib/minitest-chef-handler/infections.rb
86
+ - lib/minitest-chef-handler/resources.rb
87
+ - lib/minitest-chef-handler/runner.rb
88
+ - lib/minitest-chef-handler/spec.rb
89
+ - lib/minitest-chef-handler/unit.rb
55
90
  - minitest-chef-handler.gemspec
91
+ - spec/minitest-chef-handler/assertions_spec.rb
92
+ - spec/minitest-chef-handler/infections_spec.rb
93
+ - spec/minitest-chef-handler/resources_spec.rb
94
+ - spec/spec_helper.rb
56
95
  homepage: ''
57
96
  licenses: []
58
97
  post_install_message:
@@ -67,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
106
  version: '0'
68
107
  segments:
69
108
  - 0
70
- hash: -1728992834997706778
109
+ hash: -4192483900398886253
71
110
  required_rubygems_version: !ruby/object:Gem::Requirement
72
111
  none: false
73
112
  requirements:
@@ -76,11 +115,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
115
  version: '0'
77
116
  segments:
78
117
  - 0
79
- hash: -1728992834997706778
118
+ hash: -4192483900398886253
80
119
  requirements: []
81
120
  rubyforge_project:
82
121
  rubygems_version: 1.8.10
83
122
  signing_key:
84
123
  specification_version: 3
85
124
  summary: Run Minitest suites as Chef report handlers
86
- test_files: []
125
+ test_files:
126
+ - spec/minitest-chef-handler/assertions_spec.rb
127
+ - spec/minitest-chef-handler/infections_spec.rb
128
+ - spec/minitest-chef-handler/resources_spec.rb
129
+ - spec/spec_helper.rb
data/examples/solo.rb DELETED
@@ -1,4 +0,0 @@
1
- require 'minitest-chef-handler'
2
-
3
- report_handlers << MiniTest::Chef::Handler.new
4
- cookbook_path File.expand_path('cookbooks', File.dirname(__FILE__))