minitest-chef-handler 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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__))