chef 12.0.0.alpha.0 → 12.0.0.alpha.1

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 (207) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -5
  3. data/lib/chef/api_client.rb +1 -1
  4. data/lib/chef/application.rb +16 -8
  5. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  6. data/lib/chef/chef_fs/command_line.rb +1 -1
  7. data/lib/chef/chef_fs/file_system.rb +1 -1
  8. data/lib/chef/chef_fs/file_system/acl_entry.rb +1 -1
  9. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +3 -3
  10. data/lib/chef/chef_fs/file_system/cookbook_file.rb +2 -2
  11. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +2 -2
  12. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +4 -4
  13. data/lib/chef/config.rb +6 -5
  14. data/lib/chef/config_fetcher.rb +1 -1
  15. data/lib/chef/cookbook/cookbook_version_loader.rb +126 -43
  16. data/lib/chef/cookbook/metadata.rb +102 -53
  17. data/lib/chef/cookbook/syntax_check.rb +1 -1
  18. data/lib/chef/cookbook_loader.rb +62 -14
  19. data/lib/chef/cookbook_site_streaming_uploader.rb +12 -1
  20. data/lib/chef/cookbook_version.rb +13 -4
  21. data/lib/chef/data_bag.rb +28 -15
  22. data/lib/chef/data_bag_item.rb +5 -7
  23. data/lib/chef/digester.rb +5 -9
  24. data/lib/chef/dsl/recipe.rb +14 -0
  25. data/lib/chef/encrypted_data_bag_item.rb +1 -0
  26. data/lib/chef/encrypted_data_bag_item/assertions.rb +57 -0
  27. data/lib/chef/encrypted_data_bag_item/decryptor.rb +52 -28
  28. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -0
  29. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -0
  30. data/lib/chef/encrypted_data_bag_item/encryptor.rb +79 -8
  31. data/lib/chef/environment.rb +1 -3
  32. data/lib/chef/exceptions.rb +18 -3
  33. data/lib/chef/formatters/base.rb +7 -0
  34. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
  35. data/lib/chef/handler/json_file.rb +0 -1
  36. data/lib/chef/http/json_output.rb +1 -1
  37. data/lib/chef/json_compat.rb +24 -6
  38. data/lib/chef/knife/bootstrap.rb +2 -2
  39. data/lib/chef/knife/client_delete.rb +1 -1
  40. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  41. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  42. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  43. data/lib/chef/knife/cookbook_site_share.rb +2 -2
  44. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  45. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  46. data/lib/chef/knife/core/node_editor.rb +2 -3
  47. data/lib/chef/knife/core/ui.rb +2 -2
  48. data/lib/chef/knife/deps.rb +2 -3
  49. data/lib/chef/mixin/shell_out.rb +1 -1
  50. data/lib/chef/mixin/windows_architecture_helper.rb +1 -0
  51. data/lib/chef/node.rb +1 -2
  52. data/lib/chef/platform/provider_mapping.rb +33 -6
  53. data/lib/chef/provider.rb +0 -2
  54. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  55. data/lib/chef/provider/cron.rb +11 -0
  56. data/lib/chef/provider/deploy.rb +3 -2
  57. data/lib/chef/provider/deploy/revision.rb +2 -2
  58. data/lib/chef/provider/env.rb +1 -1
  59. data/lib/chef/provider/env/windows.rb +5 -9
  60. data/lib/chef/provider/file.rb +84 -33
  61. data/lib/chef/provider/git.rb +2 -1
  62. data/lib/chef/provider/group/aix.rb +17 -2
  63. data/lib/chef/provider/group/dscl.rb +27 -9
  64. data/lib/chef/provider/group/pw.rb +8 -1
  65. data/lib/chef/provider/http_request.rb +4 -4
  66. data/lib/chef/provider/log.rb +4 -14
  67. data/lib/chef/provider/mount/mount.rb +2 -2
  68. data/lib/chef/provider/package/ips.rb +17 -23
  69. data/lib/chef/provider/package/paludis.rb +2 -2
  70. data/lib/chef/provider/package/rpm.rb +2 -2
  71. data/lib/chef/provider/package/rubygems.rb +2 -0
  72. data/lib/chef/provider/package/yum.rb +2 -0
  73. data/lib/chef/provider/package/zypper.rb +1 -1
  74. data/lib/chef/provider/remote_file/cache_control_data.rb +2 -2
  75. data/lib/chef/provider/service/windows.rb +87 -21
  76. data/lib/chef/provider/user/aix.rb +95 -0
  77. data/lib/chef/provider/user/dscl.rb +544 -156
  78. data/lib/chef/provider/user/useradd.rb +1 -0
  79. data/lib/chef/providers.rb +1 -0
  80. data/lib/chef/resource.rb +4 -3
  81. data/lib/chef/resource/freebsd_package.rb +10 -2
  82. data/lib/chef/resource/paludis_package.rb +1 -0
  83. data/lib/chef/resource/scm.rb +10 -0
  84. data/lib/chef/resource/user.rb +27 -0
  85. data/lib/chef/resource/windows_service.rb +53 -0
  86. data/lib/chef/resource_collection.rb +23 -12
  87. data/lib/chef/resource_reporter.rb +10 -10
  88. data/lib/chef/resources.rb +1 -0
  89. data/lib/chef/role.rb +3 -3
  90. data/lib/chef/run_list.rb +6 -3
  91. data/lib/chef/user.rb +1 -1
  92. data/lib/chef/util/diff.rb +1 -2
  93. data/lib/chef/version.rb +1 -1
  94. data/lib/chef/version_constraint.rb +4 -4
  95. data/spec/data/cookbooks/angrybash/metadata.rb +2 -0
  96. data/spec/data/cookbooks/apache2/metadata.rb +2 -0
  97. data/spec/data/cookbooks/borken/metadata.rb +2 -0
  98. data/spec/data/cookbooks/ignorken/metadata.rb +2 -0
  99. data/spec/data/cookbooks/java/metadata.rb +2 -0
  100. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -0
  101. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -0
  102. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -0
  103. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -0
  104. data/spec/data/cookbooks/preseed/metadata.rb +2 -0
  105. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -0
  106. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -0
  107. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -0
  108. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -0
  109. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +10 -0
  110. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -0
  111. data/spec/data/mac_users/10.7-8.plist.xml +559 -0
  112. data/spec/data/mac_users/10.7-8.shadow.xml +11 -0
  113. data/spec/data/mac_users/10.7.plist.xml +559 -0
  114. data/spec/data/mac_users/10.7.shadow.xml +11 -0
  115. data/spec/data/mac_users/10.8.plist.xml +559 -0
  116. data/spec/data/mac_users/10.8.shadow.xml +21 -0
  117. data/spec/data/mac_users/10.9.plist.xml +560 -0
  118. data/spec/data/mac_users/10.9.shadow.xml +21 -0
  119. data/spec/data/object_loader/environments/test.json +2 -0
  120. data/spec/data/object_loader/environments/test_json_class.json +2 -0
  121. data/spec/data/object_loader/nodes/test.json +2 -0
  122. data/spec/data/object_loader/nodes/test_json_class.json +2 -0
  123. data/spec/data/object_loader/roles/test.json +2 -0
  124. data/spec/data/object_loader/roles/test_json_class.json +2 -0
  125. data/spec/functional/resource/bff_spec.rb +1 -1
  126. data/spec/functional/resource/cron_spec.rb +20 -1
  127. data/spec/functional/resource/env_spec.rb +137 -0
  128. data/spec/functional/resource/group_spec.rb +7 -5
  129. data/spec/functional/resource/remote_file_spec.rb +12 -1
  130. data/spec/functional/resource/user/dscl_spec.rb +198 -0
  131. data/spec/functional/resource/{user_spec.rb → user/useradd_spec.rb} +175 -37
  132. data/spec/integration/client/client_spec.rb +6 -4
  133. data/spec/integration/client/ipv6_spec.rb +16 -14
  134. data/spec/integration/knife/chef_fs_data_store_spec.rb +57 -46
  135. data/spec/integration/knife/chef_repo_path_spec.rb +105 -78
  136. data/spec/integration/knife/chef_repository_file_system_spec.rb +100 -84
  137. data/spec/integration/knife/chefignore_spec.rb +76 -46
  138. data/spec/integration/knife/common_options_spec.rb +16 -21
  139. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +3 -3
  140. data/spec/integration/knife/delete_spec.rb +66 -46
  141. data/spec/integration/knife/deps_spec.rb +145 -94
  142. data/spec/integration/knife/diff_spec.rb +176 -110
  143. data/spec/integration/knife/download_spec.rb +229 -133
  144. data/spec/integration/knife/list_spec.rb +62 -54
  145. data/spec/integration/knife/raw_spec.rb +24 -9
  146. data/spec/integration/knife/redirection_spec.rb +2 -2
  147. data/spec/integration/knife/serve_spec.rb +2 -2
  148. data/spec/integration/knife/show_spec.rb +32 -26
  149. data/spec/integration/knife/upload_spec.rb +308 -165
  150. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +10 -8
  151. data/spec/integration/solo/solo_spec.rb +22 -11
  152. data/spec/spec_helper.rb +3 -0
  153. data/spec/support/lib/chef/resource/zen_follower.rb +46 -0
  154. data/spec/support/platform_helpers.rb +12 -0
  155. data/spec/support/shared/functional/file_resource.rb +10 -0
  156. data/spec/support/shared/integration/chef_zero_support.rb +130 -0
  157. data/spec/support/shared/integration/integration_helper.rb +100 -98
  158. data/spec/support/shared/integration/knife_support.rb +0 -1
  159. data/spec/support/shared/unit/provider/file.rb +6 -4
  160. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +10 -1
  161. data/spec/unit/api_client/registration_spec.rb +83 -74
  162. data/spec/unit/application_spec.rb +32 -9
  163. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +179 -0
  164. data/spec/unit/cookbook/metadata_spec.rb +190 -150
  165. data/spec/unit/cookbook/syntax_check_spec.rb +3 -2
  166. data/spec/unit/cookbook_loader_spec.rb +114 -53
  167. data/spec/unit/{cookbook_site_streaming_uploader.rb → cookbook_site_streaming_uploader_spec.rb} +21 -1
  168. data/spec/unit/data_bag_spec.rb +88 -13
  169. data/spec/unit/deprecation_spec.rb +1 -2
  170. data/spec/unit/encrypted_data_bag_item_spec.rb +145 -9
  171. data/spec/unit/environment_spec.rb +1 -1
  172. data/spec/unit/formatters/base_spec.rb +48 -0
  173. data/spec/unit/json_compat_spec.rb +48 -17
  174. data/spec/unit/knife/client_delete_spec.rb +4 -4
  175. data/spec/unit/knife/client_show_spec.rb +15 -5
  176. data/spec/unit/knife/cookbook_site_download_spec.rb +1 -1
  177. data/spec/unit/knife/cookbook_site_share_spec.rb +3 -3
  178. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -2
  179. data/spec/unit/knife/data_bag_show_spec.rb +23 -14
  180. data/spec/unit/knife/node_show_spec.rb +32 -15
  181. data/spec/unit/knife/role_show_spec.rb +59 -0
  182. data/spec/unit/platform_spec.rb +10 -0
  183. data/spec/unit/provider/deploy_spec.rb +4 -0
  184. data/spec/unit/provider/env_spec.rb +19 -0
  185. data/spec/unit/provider/git_spec.rb +22 -2
  186. data/spec/unit/provider/group/dscl_spec.rb +38 -1
  187. data/spec/unit/provider/group/pw_spec.rb +2 -2
  188. data/spec/unit/provider/http_request_spec.rb +8 -8
  189. data/spec/unit/provider/log_spec.rb +33 -53
  190. data/spec/unit/provider/mount/mount_spec.rb +12 -3
  191. data/spec/unit/provider/package/ips_spec.rb +96 -63
  192. data/spec/unit/provider/package/paludis_spec.rb +5 -5
  193. data/spec/unit/provider/package/rpm_spec.rb +12 -0
  194. data/spec/unit/provider/package/zypper_spec.rb +28 -16
  195. data/spec/unit/provider/service/windows_spec.rb +77 -17
  196. data/spec/unit/provider/user/dscl_spec.rb +659 -264
  197. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  198. data/spec/unit/recipe_spec.rb +41 -0
  199. data/spec/unit/resource/scm_spec.rb +11 -0
  200. data/spec/unit/resource/user_spec.rb +4 -0
  201. data/spec/unit/resource/windows_service_spec.rb +46 -0
  202. data/spec/unit/resource_collection_spec.rb +33 -0
  203. data/spec/unit/resource_reporter_spec.rb +48 -0
  204. data/spec/unit/resource_spec.rb +9 -2
  205. data/spec/unit/role_spec.rb +6 -0
  206. data/spec/unit/version_constraint_spec.rb +28 -0
  207. metadata +61 -4
@@ -19,6 +19,7 @@
19
19
  #
20
20
 
21
21
  require 'spec_helper'
22
+ require 'chef/provider/user/useradd'
22
23
 
23
24
  describe Chef::Provider::User::Useradd do
24
25
 
@@ -182,7 +182,48 @@ describe Chef::Recipe do
182
182
  zm_resource # force let binding evaluation
183
183
  run_context.resource_collection.resources(:zen_master => "klopp").should == zm_resource
184
184
  end
185
+ end
186
+
187
+ describe "creating a resource with short name" do
188
+ # zen_follower resource has this:
189
+ # provides :follower, :on_platforms => ["zen"]
190
+ before do
191
+ node.stub(:[]) do |key|
192
+ case key
193
+ when :platform
194
+ :zen
195
+ when :platform_version
196
+ "1.0.0"
197
+ else
198
+ nil
199
+ end
200
+ end
201
+ end
202
+
203
+ let(:resource_follower) do
204
+ recipe.declare_resource(:follower, "srst") do
205
+ master "none"
206
+ end
207
+ end
185
208
 
209
+ it "defines the resource using the declaration name with short name" do
210
+ resource_follower
211
+ run_context.resource_collection.lookup("follower[srst]").should_not be_nil
212
+ end
213
+ end
214
+
215
+ describe "creating a resource with a long name" do
216
+ let(:resource_zn_follower) do
217
+ recipe.declare_resource(:zen_follower, "srst") do
218
+ master "none"
219
+ end
220
+ end
221
+
222
+
223
+ it "defines the resource using the declaration name with long name" do
224
+ resource_zn_follower
225
+ run_context.resource_collection.lookup("zen_follower[srst]").should_not be_nil
226
+ end
186
227
  end
187
228
 
188
229
  describe "when attempting to create a resource of an invalid type" do
@@ -147,6 +147,10 @@ describe Chef::Resource::Scm do
147
147
  @resource.ssh_wrapper.should be_nil
148
148
  end
149
149
 
150
+ it "defaults to nil for the environment" do
151
+ @resource.environment.should be_nil
152
+ end
153
+
150
154
  describe "when it has a timeout attribute" do
151
155
  let(:ten_seconds) { 10 }
152
156
  before { @resource.timeout(ten_seconds) }
@@ -179,4 +183,11 @@ describe Chef::Resource::Scm do
179
183
  end
180
184
  end
181
185
 
186
+ describe "when it has a environment attribute" do
187
+ let(:test_environment) { {'CHEF_ENV' => '/tmp' } }
188
+ before { @resource.environment(test_environment) }
189
+ it "stores this environment" do
190
+ @resource.environment.should == test_environment
191
+ end
192
+ end
182
193
  end
@@ -54,6 +54,10 @@ describe Chef::Resource::User, "initialize" do
54
54
  @resource.supports[:non_unique].should eql(false)
55
55
  end
56
56
 
57
+ it "should set force to false" do
58
+ @resource.force.should eql(false)
59
+ end
60
+
57
61
  %w{create remove modify manage lock unlock}.each do |action|
58
62
  it "should allow action #{action}" do
59
63
  @resource.allowed_actions.detect { |a| a == action.to_sym }.should eql(action.to_sym)
@@ -0,0 +1,46 @@
1
+ #
2
+ # Author:: Bryan McLellan <btm@loftninjas.org>
3
+ # Copyright:: Copyright (c) 2014 Chef Software, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+
21
+ describe Chef::Resource::WindowsService, "initialize", :windows_only do
22
+
23
+ let(:resource) { Chef::Resource::WindowsService.new("BITS") }
24
+
25
+ it "returns a Chef::Resource::WindowsService" do
26
+ expect(resource).to be_a_kind_of(Chef::Resource::WindowsService)
27
+ end
28
+
29
+ it "sets the resource_name to :windows_service" do
30
+ expect(resource.resource_name).to eql(:windows_service)
31
+ end
32
+
33
+ it "sets the provider to Chef::Provider::Service::Windows" do
34
+ expect(resource.provider).to eql(Chef::Provider::Service::Windows)
35
+ end
36
+
37
+ it "supports setting startup_type" do
38
+ resource.startup_type(:manual)
39
+ expect(resource.startup_type).to eql(:manual)
40
+ end
41
+
42
+ it "allows the action to be 'configure_startup'" do
43
+ resource.action :configure_startup
44
+ resource.action.should == [:configure_startup]
45
+ end
46
+ end
@@ -88,6 +88,39 @@ describe Chef::ResourceCollection do
88
88
  end
89
89
  end
90
90
 
91
+ describe "insert_at" do
92
+ it "should accept only Chef::Resources" do
93
+ lambda { @rc.insert_at(0, @resource, @resource) }.should_not raise_error
94
+ lambda { @rc.insert_at(0, "string") }.should raise_error
95
+ lambda { @rc.insert_at(0, @resource, "string") }.should raise_error
96
+ end
97
+
98
+ it "should toss an error if it receives a bad index" do
99
+ @rc.insert_at(10, @resource)
100
+ end
101
+
102
+ it "should insert resources at the beginning when asked" do
103
+ @rc.insert(Chef::Resource::ZenMaster.new('1'))
104
+ @rc.insert(Chef::Resource::ZenMaster.new('2'))
105
+ @rc.insert_at(0, Chef::Resource::ZenMaster.new('X'))
106
+ @rc.all_resources.map { |r| r.name }.should == [ 'X', '1', '2' ]
107
+ end
108
+
109
+ it "should insert resources in the middle when asked" do
110
+ @rc.insert(Chef::Resource::ZenMaster.new('1'))
111
+ @rc.insert(Chef::Resource::ZenMaster.new('2'))
112
+ @rc.insert_at(1, Chef::Resource::ZenMaster.new('X'))
113
+ @rc.all_resources.map { |r| r.name }.should == [ '1', 'X', '2' ]
114
+ end
115
+
116
+ it "should insert resources at the end when asked" do
117
+ @rc.insert(Chef::Resource::ZenMaster.new('1'))
118
+ @rc.insert(Chef::Resource::ZenMaster.new('2'))
119
+ @rc.insert_at(2, Chef::Resource::ZenMaster.new('X'))
120
+ @rc.all_resources.map { |r| r.name }.should == [ '1', '2', 'X' ]
121
+ end
122
+ end
123
+
91
124
  describe "each" do
92
125
  it "should allow you to iterate over every resource in the collection" do
93
126
  load_up_resources
@@ -21,6 +21,7 @@
21
21
 
22
22
  require File.expand_path("../../spec_helper", __FILE__)
23
23
  require 'chef/resource_reporter'
24
+ require 'socket'
24
25
 
25
26
  describe Chef::ResourceReporter do
26
27
  before(:all) do
@@ -707,5 +708,52 @@ describe Chef::ResourceReporter do
707
708
  @resource_reporter.run_completed(@node)
708
709
  end
709
710
  end
711
+
712
+ context "when data report post is enabled and the server response fails" do
713
+ before do
714
+ @enable_reporting_url_fatals = Chef::Config[:enable_reporting_url_fatals]
715
+ Chef::Config[:enable_reporting_url_fatals] = true
716
+ # this call doesn't matter for this context
717
+ @rest_client.stub(:create_url)
718
+ end
719
+
720
+ after do
721
+ Chef::Config[:enable_reporting_url_fatals] = @enable_reporting_url_fatals
722
+ end
723
+
724
+ it "should log 4xx errors" do
725
+ response = Net::HTTPClientError.new("forbidden", "403", "Forbidden")
726
+ error = Net::HTTPServerException.new("403 message", response)
727
+ @rest_client.stub(:raw_http_request).and_raise(error)
728
+ Chef::Log.should_receive(:error).with(/403/)
729
+
730
+ @resource_reporter.post_reporting_data
731
+ end
732
+
733
+ it "should log error 5xx errors" do
734
+ response = Net::HTTPServerError.new("internal error", "500", "Internal Server Error")
735
+ error = Net::HTTPFatalError.new("500 message", response)
736
+ @rest_client.stub(:raw_http_request).and_raise(error)
737
+ Chef::Log.should_receive(:error).with(/500/)
738
+
739
+ @resource_reporter.post_reporting_data
740
+ end
741
+
742
+ it "should log if a socket error happens" do
743
+ @rest_client.stub(:raw_http_request).and_raise(SocketError.new("test socket error"))
744
+ Chef::Log.should_receive(:error).with(/test socket error/)
745
+
746
+ @resource_reporter.post_reporting_data
747
+
748
+ end
749
+
750
+ it "should raise if an unkwown error happens" do
751
+ @rest_client.stub(:raw_http_request).and_raise(Exception.new)
752
+
753
+ lambda {
754
+ @resource_reporter.post_reporting_data
755
+ }.should raise_error(Exception)
756
+ end
757
+ end
710
758
  end
711
759
  end
@@ -344,7 +344,7 @@ describe Chef::Resource do
344
344
  expected_keys = [ :allowed_actions, :params, :provider, :updated,
345
345
  :updated_by_last_action, :before, :supports,
346
346
  :noop, :ignore_failure, :name, :source_line,
347
- :action, :retries, :retry_delay, :elapsed_time,
347
+ :action, :retries, :retry_delay, :elapsed_time,
348
348
  :guard_interpreter, :sensitive ]
349
349
  (hash.keys - expected_keys).should == []
350
350
  (expected_keys - hash.keys).should == []
@@ -527,6 +527,13 @@ describe Chef::Resource do
527
527
  snitch_var2.should be_false
528
528
  end
529
529
 
530
+ it "reports 0 elapsed time if actual elapsed time is < 0" do
531
+ expected = Time.now
532
+ Time.stub(:now).and_return(expected, expected - 1)
533
+ @resource.run_action(:purr)
534
+ @resource.elapsed_time.should == 0
535
+ end
536
+
530
537
  describe "guard_interpreter attribute" do
531
538
  let(:resource) { @resource }
532
539
 
@@ -788,7 +795,7 @@ describe Chef::Resource do
788
795
  before(:each) do
789
796
  @resource_file = Chef::Resource::File.new("/nonexistent/CHEF-5098/file", @run_context)
790
797
  @action = :create
791
- end
798
+ end
792
799
 
793
800
  def compiled_resource_data(resource, action, err)
794
801
  error_inspector = Chef::Formatters::ErrorInspectors::ResourceFailureInspector.new(resource, action, err)
@@ -296,6 +296,12 @@ EOR
296
296
  File.should_not_receive(:exists?)
297
297
  lambda {@role.class.from_disk("lolcat")}.should raise_error(Chef::Exceptions::DuplicateRole)
298
298
  end
299
+
300
+ it "should not raise an exception if two files exist with a similar name" do
301
+ Dir.should_receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes/lolcat.rb", "#{Chef::Config[:role_path]}/super_lolcat.rb"])
302
+ File.should_not_receive(:exists?)
303
+ lambda {@role.class.from_disk("lolcat")}.should_not raise_error(Chef::Exceptions::DuplicateRole)
304
+ end
299
305
  end
300
306
 
301
307
  describe "when loading from disk and role_path is an array" do
@@ -148,4 +148,32 @@ describe Chef::VersionConstraint do
148
148
  vc.should_not include "0.3.0"
149
149
  end
150
150
  end
151
+
152
+ describe 'to_s' do
153
+ it 'shows a patch-level if one is given' do
154
+ vc = Chef::VersionConstraint.new '~> 1.2.0'
155
+
156
+ vc.to_s.should == '~> 1.2.0'
157
+ end
158
+
159
+ it 'shows no patch-level if one is not given' do
160
+ vc = Chef::VersionConstraint.new '~> 1.2'
161
+
162
+ vc.to_s.should == '~> 1.2'
163
+ end
164
+ end
165
+
166
+ describe 'inspect' do
167
+ it 'shows a patch-level if one is given' do
168
+ vc = Chef::VersionConstraint.new '~> 1.2.0'
169
+
170
+ vc.inspect.should == '(~> 1.2.0)'
171
+ end
172
+
173
+ it 'shows no patch-level if one is not given' do
174
+ vc = Chef::VersionConstraint.new '~> 1.2'
175
+
176
+ vc.inspect.should == '(~> 1.2)'
177
+ end
178
+ end
151
179
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.0.0.alpha.0
4
+ version: 12.0.0.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-30 00:00:00.000000000 Z
11
+ date: 2014-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-config
@@ -101,6 +101,9 @@ dependencies:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.0'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.0.2
104
107
  type: :runtime
105
108
  prerelease: false
106
109
  version_requirements: !ruby/object:Gem::Requirement
@@ -108,6 +111,9 @@ dependencies:
108
111
  - - "~>"
109
112
  - !ruby/object:Gem::Version
110
113
  version: '1.0'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.0.2
111
117
  - !ruby/object:Gem::Dependency
112
118
  name: net-ssh
113
119
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +224,20 @@ dependencies:
218
224
  - - "~>"
219
225
  - !ruby/object:Gem::Version
220
226
  version: '0.9'
227
+ - !ruby/object:Gem::Dependency
228
+ name: plist
229
+ requirement: !ruby/object:Gem::Requirement
230
+ requirements:
231
+ - - "~>"
232
+ - !ruby/object:Gem::Version
233
+ version: 3.1.0
234
+ type: :runtime
235
+ prerelease: false
236
+ version_requirements: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - "~>"
239
+ - !ruby/object:Gem::Version
240
+ version: 3.1.0
221
241
  - !ruby/object:Gem::Dependency
222
242
  name: rack
223
243
  requirement: !ruby/object:Gem::Requirement
@@ -642,8 +662,11 @@ files:
642
662
  - lib/chef/dsl/recipe.rb
643
663
  - lib/chef/dsl/registry_helper.rb
644
664
  - lib/chef/encrypted_data_bag_item.rb
665
+ - lib/chef/encrypted_data_bag_item/assertions.rb
645
666
  - lib/chef/encrypted_data_bag_item/decryption_failure.rb
646
667
  - lib/chef/encrypted_data_bag_item/decryptor.rb
668
+ - lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb
669
+ - lib/chef/encrypted_data_bag_item/encryption_failure.rb
647
670
  - lib/chef/encrypted_data_bag_item/encryptor.rb
648
671
  - lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb
649
672
  - lib/chef/encrypted_data_bag_item/unsupported_cipher.rb
@@ -961,6 +984,7 @@ files:
961
984
  - lib/chef/provider/template/content.rb
962
985
  - lib/chef/provider/template_finder.rb
963
986
  - lib/chef/provider/user.rb
987
+ - lib/chef/provider/user/aix.rb
964
988
  - lib/chef/provider/user/dscl.rb
965
989
  - lib/chef/provider/user/pw.rb
966
990
  - lib/chef/provider/user/solaris.rb
@@ -1033,6 +1057,7 @@ files:
1033
1057
  - lib/chef/resource/whyrun_safe_ruby_block.rb
1034
1058
  - lib/chef/resource/windows_package.rb
1035
1059
  - lib/chef/resource/windows_script.rb
1060
+ - lib/chef/resource/windows_service.rb
1036
1061
  - lib/chef/resource/yum_package.rb
1037
1062
  - lib/chef/resource_collection.rb
1038
1063
  - lib/chef/resource_collection/stepable_iterator.rb
@@ -1184,15 +1209,23 @@ files:
1184
1209
  - spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0
1185
1210
  - spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0
1186
1211
  - spec/data/config.rb
1212
+ - spec/data/cookbooks/angrybash/metadata.rb
1187
1213
  - spec/data/cookbooks/angrybash/recipes/default.rb
1188
1214
  - spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl
1215
+ - spec/data/cookbooks/apache2/metadata.rb
1189
1216
  - spec/data/cookbooks/apache2/recipes/default.rb
1217
+ - spec/data/cookbooks/borken/metadata.rb
1190
1218
  - spec/data/cookbooks/borken/recipes/default.rb
1191
1219
  - spec/data/cookbooks/borken/templates/default/borken.erb
1192
1220
  - spec/data/cookbooks/chefignore
1221
+ - spec/data/cookbooks/ignorken/metadata.rb
1193
1222
  - spec/data/cookbooks/ignorken/recipes/default.rb
1194
1223
  - spec/data/cookbooks/ignorken/recipes/ignoreme.rb
1195
1224
  - spec/data/cookbooks/java/files/default/java.response
1225
+ - spec/data/cookbooks/java/metadata.rb
1226
+ - spec/data/cookbooks/name-mismatch-versionnumber/README.md
1227
+ - spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb
1228
+ - spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb
1196
1229
  - spec/data/cookbooks/openldap/attributes/default.rb
1197
1230
  - spec/data/cookbooks/openldap/attributes/smokey.rb
1198
1231
  - spec/data/cookbooks/openldap/definitions/client.rb
@@ -1200,6 +1233,7 @@ files:
1200
1233
  - spec/data/cookbooks/openldap/files/default/.dotfile
1201
1234
  - spec/data/cookbooks/openldap/files/default/.ssh/id_rsa
1202
1235
  - spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir
1236
+ - spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb
1203
1237
  - spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt
1204
1238
  - spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt
1205
1239
  - spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile
@@ -1221,6 +1255,7 @@ files:
1221
1255
  - spec/data/cookbooks/openldap/templates/default/test.erb
1222
1256
  - spec/data/cookbooks/preseed/files/default/preseed-file.seed
1223
1257
  - spec/data/cookbooks/preseed/files/default/preseed-template.seed
1258
+ - spec/data/cookbooks/preseed/metadata.rb
1224
1259
  - spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed
1225
1260
  - spec/data/cookbooks/preseed/templates/default/preseed-template.seed
1226
1261
  - spec/data/definitions/test.rb
@@ -1233,6 +1268,12 @@ files:
1233
1268
  - spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle
1234
1269
  - spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle
1235
1270
  - spec/data/git_bundles/sinatra-test-app.gitbundle
1271
+ - spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md
1272
+ - spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb
1273
+ - spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb
1274
+ - spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md
1275
+ - spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb
1276
+ - spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb
1236
1277
  - spec/data/kitchen/chefignore
1237
1278
  - spec/data/kitchen/openldap/attributes/default.rb
1238
1279
  - spec/data/kitchen/openldap/attributes/robinson.rb
@@ -1259,6 +1300,14 @@ files:
1259
1300
  - spec/data/lwrp_const_scoping/resources/conflict.rb
1260
1301
  - spec/data/lwrp_override/providers/buck_passer.rb
1261
1302
  - spec/data/lwrp_override/resources/foo.rb
1303
+ - spec/data/mac_users/10.7-8.plist.xml
1304
+ - spec/data/mac_users/10.7-8.shadow.xml
1305
+ - spec/data/mac_users/10.7.plist.xml
1306
+ - spec/data/mac_users/10.7.shadow.xml
1307
+ - spec/data/mac_users/10.8.plist.xml
1308
+ - spec/data/mac_users/10.8.shadow.xml
1309
+ - spec/data/mac_users/10.9.plist.xml
1310
+ - spec/data/mac_users/10.9.shadow.xml
1262
1311
  - spec/data/metadata/quick_start/metadata.rb
1263
1312
  - spec/data/nodes/default.rb
1264
1313
  - spec/data/nodes/test.example.com.rb
@@ -1382,6 +1431,7 @@ files:
1382
1431
  - spec/functional/resource/cron_spec.rb
1383
1432
  - spec/functional/resource/deploy_revision_spec.rb
1384
1433
  - spec/functional/resource/directory_spec.rb
1434
+ - spec/functional/resource/env_spec.rb
1385
1435
  - spec/functional/resource/file_spec.rb
1386
1436
  - spec/functional/resource/git_spec.rb
1387
1437
  - spec/functional/resource/group_spec.rb
@@ -1396,7 +1446,8 @@ files:
1396
1446
  - spec/functional/resource/remote_file_spec.rb
1397
1447
  - spec/functional/resource/rpm_spec.rb
1398
1448
  - spec/functional/resource/template_spec.rb
1399
- - spec/functional/resource/user_spec.rb
1449
+ - spec/functional/resource/user/dscl_spec.rb
1450
+ - spec/functional/resource/user/useradd_spec.rb
1400
1451
  - spec/functional/rest_spec.rb
1401
1452
  - spec/functional/run_lock_spec.rb
1402
1453
  - spec/functional/shell_spec.rb
@@ -1438,6 +1489,7 @@ files:
1438
1489
  - spec/support/lib/chef/resource/cat.rb
1439
1490
  - spec/support/lib/chef/resource/one_two_three_four.rb
1440
1491
  - spec/support/lib/chef/resource/with_state.rb
1492
+ - spec/support/lib/chef/resource/zen_follower.rb
1441
1493
  - spec/support/lib/chef/resource/zen_master.rb
1442
1494
  - spec/support/lib/library_load_order.rb
1443
1495
  - spec/support/matchers/leak.rb
@@ -1460,6 +1512,7 @@ files:
1460
1512
  - spec/support/shared/functional/securable_resource_with_reporting.rb
1461
1513
  - spec/support/shared/functional/windows_script.rb
1462
1514
  - spec/support/shared/integration/app_server_support.rb
1515
+ - spec/support/shared/integration/chef_zero_support.rb
1463
1516
  - spec/support/shared/integration/integration_helper.rb
1464
1517
  - spec/support/shared/integration/knife_support.rb
1465
1518
  - spec/support/shared/matchers.rb
@@ -1491,13 +1544,14 @@ files:
1491
1544
  - spec/unit/config_fetcher_spec.rb
1492
1545
  - spec/unit/config_spec.rb
1493
1546
  - spec/unit/cookbook/chefignore_spec.rb
1547
+ - spec/unit/cookbook/cookbook_version_loader_spec.rb
1494
1548
  - spec/unit/cookbook/file_vendor_spec.rb
1495
1549
  - spec/unit/cookbook/metadata_spec.rb
1496
1550
  - spec/unit/cookbook/synchronizer_spec.rb
1497
1551
  - spec/unit/cookbook/syntax_check_spec.rb
1498
1552
  - spec/unit/cookbook_loader_spec.rb
1499
1553
  - spec/unit/cookbook_manifest_spec.rb
1500
- - spec/unit/cookbook_site_streaming_uploader.rb
1554
+ - spec/unit/cookbook_site_streaming_uploader_spec.rb
1501
1555
  - spec/unit/cookbook_spec.rb
1502
1556
  - spec/unit/cookbook_uploader_spec.rb
1503
1557
  - spec/unit/cookbook_version_spec.rb
@@ -1519,6 +1573,7 @@ files:
1519
1573
  - spec/unit/file_content_management/deploy/cp_spec.rb
1520
1574
  - spec/unit/file_content_management/deploy/mv_unix_spec.rb
1521
1575
  - spec/unit/file_content_management/deploy/mv_windows_spec.rb
1576
+ - spec/unit/formatters/base_spec.rb
1522
1577
  - spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb
1523
1578
  - spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb
1524
1579
  - spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb
@@ -1596,6 +1651,7 @@ files:
1596
1651
  - spec/unit/knife/role_edit_spec.rb
1597
1652
  - spec/unit/knife/role_from_file_spec.rb
1598
1653
  - spec/unit/knife/role_list_spec.rb
1654
+ - spec/unit/knife/role_show_spec.rb
1599
1655
  - spec/unit/knife/ssh_spec.rb
1600
1656
  - spec/unit/knife/ssl_check_spec.rb
1601
1657
  - spec/unit/knife/ssl_fetch_spec.rb
@@ -1793,6 +1849,7 @@ files:
1793
1849
  - spec/unit/resource/timestamped_deploy_spec.rb
1794
1850
  - spec/unit/resource/user_spec.rb
1795
1851
  - spec/unit/resource/windows_package_spec.rb
1852
+ - spec/unit/resource/windows_service_spec.rb
1796
1853
  - spec/unit/resource/yum_package_spec.rb
1797
1854
  - spec/unit/resource_collection/stepable_iterator_spec.rb
1798
1855
  - spec/unit/resource_collection_spec.rb