chef-resource 0.2.2

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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +23 -0
  3. data/LICENSE +201 -0
  4. data/README.md +264 -0
  5. data/Rakefile +8 -0
  6. data/files/lib/chef_resource.rb +24 -0
  7. data/files/lib/chef_resource/camel_case.rb +23 -0
  8. data/files/lib/chef_resource/chef.rb +102 -0
  9. data/files/lib/chef_resource/chef_dsl/chef_cookbook_compiler.rb +44 -0
  10. data/files/lib/chef_resource/chef_dsl/chef_recipe.rb +10 -0
  11. data/files/lib/chef_resource/chef_dsl/chef_recipe_dsl_extensions.rb +84 -0
  12. data/files/lib/chef_resource/chef_dsl/chef_resource_base.rb +12 -0
  13. data/files/lib/chef_resource/chef_dsl/chef_resource_class_extensions.rb +30 -0
  14. data/files/lib/chef_resource/chef_dsl/chef_resource_extensions.rb +224 -0
  15. data/files/lib/chef_resource/chef_dsl/chef_resource_log.rb +54 -0
  16. data/files/lib/chef_resource/chef_dsl/resource_container_module.rb +80 -0
  17. data/files/lib/chef_resource/chef_dsl/resource_definition_dsl.rb +128 -0
  18. data/files/lib/chef_resource/constants.rb +8 -0
  19. data/files/lib/chef_resource/errors.rb +31 -0
  20. data/files/lib/chef_resource/lazy_proc.rb +82 -0
  21. data/files/lib/chef_resource/output/nested_converge.rb +91 -0
  22. data/files/lib/chef_resource/output/nested_converge/open_resource.rb +113 -0
  23. data/files/lib/chef_resource/output/region_stream.rb +145 -0
  24. data/files/lib/chef_resource/output/simple_output.rb +83 -0
  25. data/files/lib/chef_resource/resource.rb +428 -0
  26. data/files/lib/chef_resource/resource/resource_log.rb +197 -0
  27. data/files/lib/chef_resource/resource/resource_type.rb +74 -0
  28. data/files/lib/chef_resource/resource/struct_property.rb +39 -0
  29. data/files/lib/chef_resource/resource/struct_property_type.rb +185 -0
  30. data/files/lib/chef_resource/resource/struct_resource.rb +410 -0
  31. data/files/lib/chef_resource/resource/struct_resource_base.rb +11 -0
  32. data/files/lib/chef_resource/resource/struct_resource_type.rb +275 -0
  33. data/files/lib/chef_resource/simple_struct.rb +121 -0
  34. data/files/lib/chef_resource/type.rb +371 -0
  35. data/files/lib/chef_resource/types.rb +4 -0
  36. data/files/lib/chef_resource/types/boolean.rb +16 -0
  37. data/files/lib/chef_resource/types/byte_size.rb +10 -0
  38. data/files/lib/chef_resource/types/date_time_type.rb +18 -0
  39. data/files/lib/chef_resource/types/date_type.rb +18 -0
  40. data/files/lib/chef_resource/types/float_type.rb +28 -0
  41. data/files/lib/chef_resource/types/integer_type.rb +53 -0
  42. data/files/lib/chef_resource/types/interval.rb +21 -0
  43. data/files/lib/chef_resource/types/path.rb +39 -0
  44. data/files/lib/chef_resource/types/pathname_type.rb +34 -0
  45. data/files/lib/chef_resource/types/string_type.rb +16 -0
  46. data/files/lib/chef_resource/types/symbol_type.rb +18 -0
  47. data/files/lib/chef_resource/types/uri_type.rb +37 -0
  48. data/files/lib/chef_resource/version.rb +3 -0
  49. data/spec/integration/chef.rb +81 -0
  50. data/spec/integration/struct_spec.rb +611 -0
  51. data/spec/integration/struct_state_spec.rb +538 -0
  52. data/spec/integration/type_spec.rb +1123 -0
  53. data/spec/integration/validation_spec.rb +207 -0
  54. data/spec/support/spec_support.rb +7 -0
  55. metadata +167 -0
@@ -0,0 +1,207 @@
1
+ require 'support/spec_support'
2
+ require 'chef_resource/resource/struct_resource_base'
3
+ require 'chef_resource/errors'
4
+
5
+ describe ChefResource::Resource::StructResource do
6
+ def self.with_struct(name, &block)
7
+ before :each do
8
+ Object.send(:remove_const, name) if Object.const_defined?(name, false)
9
+ eval "class ::#{name} < ChefResource::Resource::StructResourceBase; end"
10
+ Object.const_get(name).class_eval(&block)
11
+ end
12
+ after :each do
13
+ end
14
+ end
15
+
16
+ describe :nullable do
17
+ context "When x has nullable: true and must > 0" do
18
+ with_struct(:MyResource) do
19
+ property :x, nullable: true do
20
+ must("be greater than zero") { self > 0 }
21
+ end
22
+ def load
23
+ x
24
+ end
25
+ end
26
+
27
+ let(:r) { MyResource.open }
28
+
29
+ it "The default is nil" do
30
+ expect(r.x).to be_nil
31
+ end
32
+ it "Can be set to nil (does not run validation)" do
33
+ r.x nil
34
+ expect(r.x).to be_nil
35
+ end
36
+ it "Can be set to 1" do
37
+ r.x 1
38
+ expect(r.x).to eq 1
39
+ end
40
+ it "Cannot be set to -1" do
41
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
42
+ end
43
+ end
44
+
45
+ context "When x has nullable: false, default: 10" do
46
+ with_struct(:MyResource) do
47
+ property :x, nullable: false, default: 10 do
48
+ must("be greater than zero") { self > 0 }
49
+ end
50
+ def load
51
+ x
52
+ end
53
+ end
54
+
55
+ let(:r) { MyResource.open }
56
+
57
+ it "The default is 10" do
58
+ expect(r.x).to eq 10
59
+ end
60
+ it "Cannot be set to nil" do
61
+ expect { r.x nil }.to raise_error(ChefResource::MustNotBeNullError)
62
+ end
63
+ it "Can be set to 1" do
64
+ r.x 1
65
+ expect(r.x).to eq 1
66
+ end
67
+ it "Cannot be set to -1" do
68
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
69
+ end
70
+ end
71
+
72
+ context "When x has nullable: :validate" do
73
+ with_struct(:MyResource) do
74
+ property :x, nullable: :validate do
75
+ must("be greater than zero") { self > 0 }
76
+ end
77
+ def load
78
+ x
79
+ end
80
+ end
81
+
82
+ let(:r) { MyResource.open }
83
+
84
+ it "The default is nil" do
85
+ expect(r.x).to be_nil
86
+ end
87
+ it "Cannot be set to nil (runs validation)" do
88
+ expect { r.x nil }.to raise_error
89
+ end
90
+ it "Can be set to 1" do
91
+ r.x 1
92
+ expect(r.x).to eq 1
93
+ end
94
+ it "Cannot be set to -1" do
95
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
96
+ end
97
+ end
98
+
99
+ context "When x has default: nil" do
100
+ with_struct(:MyResource) do
101
+ property :x, default: nil do
102
+ must("be greater than zero") { self > 0 }
103
+ end
104
+ def load
105
+ x
106
+ end
107
+ end
108
+
109
+ let(:r) { MyResource.open }
110
+
111
+ it "The default is nil" do
112
+ expect(r.x).to be_nil
113
+ end
114
+ it "Can be set to nil (does not run validation)" do
115
+ r.x nil
116
+ expect(r.x).to be_nil
117
+ end
118
+ it "Can be set to 1" do
119
+ r.x 1
120
+ expect(r.x).to eq 1
121
+ end
122
+ it "Cannot be set to -1" do
123
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
124
+ end
125
+ end
126
+
127
+ context "When x has identity: true, default: nil" do
128
+ with_struct(:MyResource) do
129
+ property :x, identity: true, default: nil do
130
+ must("be greater than zero") { self > 0 }
131
+ end
132
+ def load
133
+ x
134
+ end
135
+ end
136
+
137
+ it "The default is nil" do
138
+ expect(MyResource.open.x).to be_nil
139
+ end
140
+ it "Can be set to nil (does not run validation)" do
141
+ r = MyResource.open(x: nil)
142
+ expect(r.x).to be_nil
143
+ end
144
+ it "Can be set to 1" do
145
+ r = MyResource.open(x: 1)
146
+ expect(r.x).to eq 1
147
+ end
148
+ it "Cannot be set to -1" do
149
+ expect { MyResource.open(x: -1) }.to raise_error(ChefResource::ValidationError)
150
+ end
151
+ end
152
+
153
+ context "When x has default: 10" do
154
+ with_struct(:MyResource) do
155
+ property :x, default: 10 do
156
+ must("be greater than zero") { self > 0 }
157
+ end
158
+ def load
159
+ x
160
+ end
161
+ end
162
+
163
+ let(:r) { MyResource.open }
164
+
165
+ it "The default is 10" do
166
+ expect(r.x).to eq 10
167
+ end
168
+ it "Cannot be set to nil" do
169
+ expect { r.x nil }.to raise_error(ChefResource::MustNotBeNullError)
170
+ end
171
+ it "Can be set to 1" do
172
+ r.x 1
173
+ expect(r.x).to eq 1
174
+ end
175
+ it "Cannot be set to -1" do
176
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
177
+ end
178
+ end
179
+
180
+ context "When x has no default or nullable" do
181
+ with_struct(:MyResource) do
182
+ property :x do
183
+ must("be greater than zero") { self > 0 }
184
+ end
185
+ def load
186
+ x
187
+ end
188
+ end
189
+
190
+ let(:r) { MyResource.open }
191
+
192
+ it "The default is nil" do
193
+ expect(r.x).to be_nil
194
+ end
195
+ it "Cannot be set to nil" do
196
+ expect { r.x nil }.to raise_error(ChefResource::MustNotBeNullError)
197
+ end
198
+ it "Can be set to 1" do
199
+ r.x 1
200
+ expect(r.x).to eq 1
201
+ end
202
+ it "Cannot be set to -1" do
203
+ expect { r.x -1 }.to raise_error(ChefResource::ValidationError)
204
+ end
205
+ end
206
+ end
207
+ end
@@ -0,0 +1,7 @@
1
+ RSpec.configure do |config|
2
+ config.filter_run :focus => true
3
+ config.run_all_when_everything_filtered = true
4
+
5
+ config.before :each do
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chef-resource
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - John Keiser
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cheffish
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: stove
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 1.7.7
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 1.7.7
83
+ description: Create composable, idempotent, patchy APIs with disturbing ease
84
+ email: john@johnkeiser.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - CHANGELOG.md
90
+ - LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - files/lib/chef_resource.rb
94
+ - files/lib/chef_resource/camel_case.rb
95
+ - files/lib/chef_resource/chef.rb
96
+ - files/lib/chef_resource/chef_dsl/chef_cookbook_compiler.rb
97
+ - files/lib/chef_resource/chef_dsl/chef_recipe.rb
98
+ - files/lib/chef_resource/chef_dsl/chef_recipe_dsl_extensions.rb
99
+ - files/lib/chef_resource/chef_dsl/chef_resource_base.rb
100
+ - files/lib/chef_resource/chef_dsl/chef_resource_class_extensions.rb
101
+ - files/lib/chef_resource/chef_dsl/chef_resource_extensions.rb
102
+ - files/lib/chef_resource/chef_dsl/chef_resource_log.rb
103
+ - files/lib/chef_resource/chef_dsl/resource_container_module.rb
104
+ - files/lib/chef_resource/chef_dsl/resource_definition_dsl.rb
105
+ - files/lib/chef_resource/constants.rb
106
+ - files/lib/chef_resource/errors.rb
107
+ - files/lib/chef_resource/lazy_proc.rb
108
+ - files/lib/chef_resource/output/nested_converge.rb
109
+ - files/lib/chef_resource/output/nested_converge/open_resource.rb
110
+ - files/lib/chef_resource/output/region_stream.rb
111
+ - files/lib/chef_resource/output/simple_output.rb
112
+ - files/lib/chef_resource/resource.rb
113
+ - files/lib/chef_resource/resource/resource_log.rb
114
+ - files/lib/chef_resource/resource/resource_type.rb
115
+ - files/lib/chef_resource/resource/struct_property.rb
116
+ - files/lib/chef_resource/resource/struct_property_type.rb
117
+ - files/lib/chef_resource/resource/struct_resource.rb
118
+ - files/lib/chef_resource/resource/struct_resource_base.rb
119
+ - files/lib/chef_resource/resource/struct_resource_type.rb
120
+ - files/lib/chef_resource/simple_struct.rb
121
+ - files/lib/chef_resource/type.rb
122
+ - files/lib/chef_resource/types.rb
123
+ - files/lib/chef_resource/types/boolean.rb
124
+ - files/lib/chef_resource/types/byte_size.rb
125
+ - files/lib/chef_resource/types/date_time_type.rb
126
+ - files/lib/chef_resource/types/date_type.rb
127
+ - files/lib/chef_resource/types/float_type.rb
128
+ - files/lib/chef_resource/types/integer_type.rb
129
+ - files/lib/chef_resource/types/interval.rb
130
+ - files/lib/chef_resource/types/path.rb
131
+ - files/lib/chef_resource/types/pathname_type.rb
132
+ - files/lib/chef_resource/types/string_type.rb
133
+ - files/lib/chef_resource/types/symbol_type.rb
134
+ - files/lib/chef_resource/types/uri_type.rb
135
+ - files/lib/chef_resource/version.rb
136
+ - spec/integration/chef.rb
137
+ - spec/integration/struct_spec.rb
138
+ - spec/integration/struct_state_spec.rb
139
+ - spec/integration/type_spec.rb
140
+ - spec/integration/validation_spec.rb
141
+ - spec/support/spec_support.rb
142
+ homepage: http://getchef.com
143
+ licenses:
144
+ - Apache 2.0
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - files/lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 2.4.5
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: Create composable, idempotent, patchy APIs with disturbing ease
166
+ test_files: []
167
+ has_rdoc: