chef 10.28.2 → 10.30.0.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chef.rb +1 -0
- data/lib/chef/application/knife.rb +2 -0
- data/lib/chef/client.rb +1 -1
- data/lib/chef/config.rb +5 -1
- data/lib/chef/cookbook_uploader.rb +7 -14
- data/lib/chef/data_bag.rb +2 -3
- data/lib/chef/exceptions.rb +9 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +4 -0
- data/lib/chef/knife.rb +3 -0
- data/lib/chef/mixin/deep_merge.rb +53 -21
- data/lib/chef/monkey_patches/net_http.rb +34 -0
- data/lib/chef/monkey_patches/uri.rb +70 -0
- data/lib/chef/node.rb +5 -5
- data/lib/chef/platform.rb +1 -0
- data/lib/chef/provider/cookbook_file.rb +14 -6
- data/lib/chef/provider/directory.rb +16 -10
- data/lib/chef/provider/file.rb +23 -17
- data/lib/chef/provider/group.rb +50 -31
- data/lib/chef/provider/group/dscl.rb +26 -4
- data/lib/chef/provider/group/gpasswd.rb +14 -19
- data/lib/chef/provider/group/groupadd.rb +41 -1
- data/lib/chef/provider/group/groupmod.rb +46 -36
- data/lib/chef/provider/group/pw.rb +59 -16
- data/lib/chef/provider/group/suse.rb +16 -13
- data/lib/chef/provider/group/usermod.rb +40 -18
- data/lib/chef/provider/group/windows.rb +13 -6
- data/lib/chef/provider/package/yum.rb +1 -0
- data/lib/chef/provider/remote_file.rb +8 -2
- data/lib/chef/provider/ruby_block.rb +1 -1
- data/lib/chef/provider/template.rb +11 -5
- data/lib/chef/provider/user/useradd.rb +9 -1
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +30 -0
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/resource/group.rb +11 -1
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +31 -0
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/rest.rb +6 -2
- data/lib/chef/rest/rest_request.rb +6 -2
- data/lib/chef/util/windows/net_group.rb +5 -1
- data/lib/chef/version.rb +1 -1
- data/spec/functional/resource/base.rb +40 -0
- data/spec/functional/resource/group_spec.rb +343 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/platform_helpers.rb +17 -0
- data/spec/unit/client_spec.rb +1 -1
- data/spec/unit/data_bag_spec.rb +4 -6
- data/spec/unit/mixin/deep_merge_spec.rb +416 -190
- data/spec/unit/monkey_patches/uri_spec.rb +34 -0
- data/spec/unit/node/attribute_spec.rb +49 -14
- data/spec/unit/node_spec.rb +31 -0
- data/spec/unit/provider/file_spec.rb +27 -27
- data/spec/unit/provider/group/dscl_spec.rb +1 -0
- data/spec/unit/provider/group/gpasswd_spec.rb +16 -9
- data/spec/unit/provider/group/groupadd_spec.rb +3 -4
- data/spec/unit/provider/group/groupmod_spec.rb +0 -1
- data/spec/unit/provider/group/pw_spec.rb +12 -15
- data/spec/unit/provider/group/usermod_spec.rb +21 -6
- data/spec/unit/provider/group/windows_spec.rb +0 -8
- data/spec/unit/provider/group_spec.rb +26 -4
- data/spec/unit/provider/user/useradd_spec.rb +21 -0
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +47 -0
- data/spec/unit/rest_spec.rb +55 -22
- metadata +119 -44
- checksums.yaml +0 -7
@@ -25,6 +25,7 @@ describe Chef::Provider::Group::Usermod do
|
|
25
25
|
@run_context = Chef::RunContext.new(@node, {}, @events)
|
26
26
|
@new_resource = Chef::Resource::Group.new("wheel")
|
27
27
|
@new_resource.members [ "all", "your", "base" ]
|
28
|
+
@new_resource.excluded_members [ ]
|
28
29
|
@provider = Chef::Provider::Group::Usermod.new(@new_resource, @run_context)
|
29
30
|
@provider.stub!(:run_command)
|
30
31
|
end
|
@@ -33,11 +34,12 @@ describe Chef::Provider::Group::Usermod do
|
|
33
34
|
|
34
35
|
describe "with an empty members array" do
|
35
36
|
before do
|
37
|
+
@new_resource.stub!(:append).and_return(true)
|
36
38
|
@new_resource.stub!(:members).and_return([])
|
37
39
|
end
|
38
40
|
|
39
41
|
it "should log an appropriate message" do
|
40
|
-
|
42
|
+
@provider.should_not_receive(:shell_out!)
|
41
43
|
@provider.modify_group_members
|
42
44
|
end
|
43
45
|
end
|
@@ -61,14 +63,27 @@ describe Chef::Provider::Group::Usermod do
|
|
61
63
|
@provider.action = :modify
|
62
64
|
lambda { @provider.run_action(@provider.process_resource_requirements) }.should raise_error(Chef::Exceptions::Group, "setting group members directly is not supported by #{@provider.to_s}, must set append true in group")
|
63
65
|
end
|
64
|
-
|
66
|
+
|
67
|
+
it "should raise an error when excluded_members are set" do
|
68
|
+
@provider.define_resource_requirements
|
69
|
+
@provider.load_current_resource
|
70
|
+
@provider.instance_variable_set("@group_exists", true)
|
71
|
+
@provider.action = :modify
|
72
|
+
@new_resource.stub!(:append).and_return(true)
|
73
|
+
@new_resource.stub!(:excluded_members).and_return(["someone"])
|
74
|
+
lambda { @provider.run_action(@provider.process_resource_requirements) }.should raise_error(Chef::Exceptions::Group, "excluded_members is not supported by #{@provider.to_s}")
|
75
|
+
end
|
76
|
+
|
65
77
|
platforms.each do |platform, flags|
|
66
78
|
it "should usermod each user when the append option is set on #{platform}" do
|
67
|
-
|
79
|
+
current_resource = @new_resource.dup
|
80
|
+
current_resource.members([ ])
|
81
|
+
@provider.current_resource = current_resource
|
82
|
+
@node.automatic_attrs[:platform] = platform
|
68
83
|
@new_resource.stub!(:append).and_return(true)
|
69
|
-
@provider.should_receive(:
|
70
|
-
@provider.should_receive(:
|
71
|
-
@provider.should_receive(:
|
84
|
+
@provider.should_receive(:shell_out!).with("usermod #{flags} wheel all")
|
85
|
+
@provider.should_receive(:shell_out!).with("usermod #{flags} wheel your")
|
86
|
+
@provider.should_receive(:shell_out!).with("usermod #{flags} wheel base")
|
72
87
|
@provider.modify_group_members
|
73
88
|
end
|
74
89
|
end
|
@@ -70,14 +70,6 @@ describe Chef::Provider::Group::Windows do
|
|
70
70
|
@provider.manage_group
|
71
71
|
end
|
72
72
|
|
73
|
-
it "should call @net_group.local_set_members if append fails" do
|
74
|
-
@new_resource.stub!(:append).and_return(true)
|
75
|
-
@net_group.stub!(:local_add_members).and_raise(ArgumentError)
|
76
|
-
@net_group.should_receive(:local_add_members).with(@new_resource.members)
|
77
|
-
@net_group.should_receive(:local_set_members).with(@new_resource.members + @current_resource.members)
|
78
|
-
@provider.manage_group
|
79
|
-
end
|
80
|
-
|
81
73
|
end
|
82
74
|
|
83
75
|
describe "remove_group" do
|
@@ -108,6 +108,19 @@ describe Chef::Provider::User do
|
|
108
108
|
@provider.compare_group.should be_true
|
109
109
|
end
|
110
110
|
|
111
|
+
it "should return false if append is true and excluded_members include a non existing member" do
|
112
|
+
@new_resource.excluded_members << "extra_user"
|
113
|
+
@new_resource.stub!(:append).and_return(true)
|
114
|
+
@provider.compare_group.should be_false
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should return true if the append is true and excluded_members include an existing user" do
|
118
|
+
@new_resource.members.each {|m| @new_resource.excluded_members << m }
|
119
|
+
@new_resource.members.clear
|
120
|
+
@new_resource.stub!(:append).and_return(true)
|
121
|
+
@provider.compare_group.should be_true
|
122
|
+
end
|
123
|
+
|
111
124
|
end
|
112
125
|
|
113
126
|
describe "when creating a group" do
|
@@ -127,6 +140,7 @@ describe Chef::Provider::User do
|
|
127
140
|
it "should check to see if the group has mismatched attributes if the group exists" do
|
128
141
|
@provider.group_exists = true
|
129
142
|
@provider.stub!(:compare_group).and_return(false)
|
143
|
+
@provider.stub!(:change_desc).and_return([ ])
|
130
144
|
@provider.run_action(:create)
|
131
145
|
@provider.new_resource.should_not be_updated
|
132
146
|
end
|
@@ -134,6 +148,7 @@ describe Chef::Provider::User do
|
|
134
148
|
it "should call manage_group if the group exists and has mismatched attributes" do
|
135
149
|
@provider.group_exists = true
|
136
150
|
@provider.stub!(:compare_group).and_return(true)
|
151
|
+
@provider.stub!(:change_desc).and_return([ ])
|
137
152
|
@provider.should_receive(:manage_group).and_return(true)
|
138
153
|
@provider.run_action(:create)
|
139
154
|
end
|
@@ -141,6 +156,7 @@ describe Chef::Provider::User do
|
|
141
156
|
it "should set the new_resources updated flag when it creates the group if we call manage_group" do
|
142
157
|
@provider.group_exists = true
|
143
158
|
@provider.stub!(:compare_group).and_return(true)
|
159
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
144
160
|
@provider.stub!(:manage_group).and_return(true)
|
145
161
|
@provider.run_action(:create)
|
146
162
|
@new_resource.should be_updated
|
@@ -172,12 +188,14 @@ describe Chef::Provider::User do
|
|
172
188
|
|
173
189
|
it "should run manage_group if the group exists and has mismatched attributes" do
|
174
190
|
@provider.should_receive(:compare_group).and_return(true)
|
191
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
175
192
|
@provider.should_receive(:manage_group).and_return(true)
|
176
193
|
@provider.run_action(:manage)
|
177
194
|
end
|
178
195
|
|
179
196
|
it "should set the new resources updated flag to true if manage_group is called" do
|
180
197
|
@provider.stub!(:compare_group).and_return(true)
|
198
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
181
199
|
@provider.stub!(:manage_group).and_return(true)
|
182
200
|
@provider.run_action(:manage)
|
183
201
|
@new_resource.should be_updated
|
@@ -191,6 +209,7 @@ describe Chef::Provider::User do
|
|
191
209
|
|
192
210
|
it "should not run manage_group if the group exists but has no differing attributes" do
|
193
211
|
@provider.should_receive(:compare_group).and_return(false)
|
212
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
194
213
|
@provider.should_not_receive(:manage_group)
|
195
214
|
@provider.run_action(:manage)
|
196
215
|
end
|
@@ -204,12 +223,14 @@ describe Chef::Provider::User do
|
|
204
223
|
|
205
224
|
it "should run manage_group if the group exists and has mismatched attributes" do
|
206
225
|
@provider.should_receive(:compare_group).and_return(true)
|
226
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
207
227
|
@provider.should_receive(:manage_group).and_return(true)
|
208
228
|
@provider.run_action(:modify)
|
209
229
|
end
|
210
230
|
|
211
231
|
it "should set the new resources updated flag to true if manage_group is called" do
|
212
232
|
@provider.stub!(:compare_group).and_return(true)
|
233
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
213
234
|
@provider.stub!(:manage_group).and_return(true)
|
214
235
|
@provider.run_action(:modify)
|
215
236
|
@new_resource.should be_updated
|
@@ -217,6 +238,7 @@ describe Chef::Provider::User do
|
|
217
238
|
|
218
239
|
it "should not run manage_group if the group exists but has no differing attributes" do
|
219
240
|
@provider.should_receive(:compare_group).and_return(false)
|
241
|
+
@provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
|
220
242
|
@provider.should_not_receive(:manage_group)
|
221
243
|
@provider.run_action(:modify)
|
222
244
|
end
|
@@ -233,26 +255,26 @@ describe Chef::Provider::User do
|
|
233
255
|
@new_resource.members << "user2"
|
234
256
|
@new_resource.stub!(:append).and_return true
|
235
257
|
@provider.compare_group.should be_true
|
236
|
-
@provider.change_desc.should == "add missing member(s): user1, user2"
|
258
|
+
@provider.change_desc.should == [ "add missing member(s): user1, user2" ]
|
237
259
|
end
|
238
260
|
|
239
261
|
it "should report that the group members will be overwritten if not appending" do
|
240
262
|
@new_resource.members << "user1"
|
241
263
|
@new_resource.stub!(:append).and_return false
|
242
264
|
@provider.compare_group.should be_true
|
243
|
-
@provider.change_desc.should == "replace group members with new list of members"
|
265
|
+
@provider.change_desc.should == [ "replace group members with new list of members" ]
|
244
266
|
end
|
245
267
|
|
246
268
|
it "should report the gid will be changed when it does not match" do
|
247
269
|
@current_resource.stub!(:gid).and_return("BADF00D")
|
248
270
|
@provider.compare_group.should be_true
|
249
|
-
@provider.change_desc.should == "change gid #{@current_resource.gid} to #{@new_resource.gid}"
|
271
|
+
@provider.change_desc.should == [ "change gid #{@current_resource.gid} to #{@new_resource.gid}" ]
|
250
272
|
|
251
273
|
end
|
252
274
|
|
253
275
|
it "should report no change reason when no change is required" do
|
254
276
|
@provider.compare_group.should be_false
|
255
|
-
@provider.change_desc.should ==
|
277
|
+
@provider.change_desc.should == [ ]
|
256
278
|
end
|
257
279
|
end
|
258
280
|
|
@@ -315,6 +315,27 @@ describe Chef::Provider::User::Useradd do
|
|
315
315
|
lambda { @provider.check_lock }.should raise_error(Chef::Exceptions::User)
|
316
316
|
end
|
317
317
|
end
|
318
|
+
|
319
|
+
context "when in why run mode" do
|
320
|
+
before do
|
321
|
+
@stdout.stub!(:gets).and_return(nil)
|
322
|
+
@stderr.stub!(:gets).and_return("passwd: user 'chef-test' does not exist")
|
323
|
+
@provider.should_receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
|
324
|
+
Chef::Config[:why_run] = true
|
325
|
+
end
|
326
|
+
|
327
|
+
after do
|
328
|
+
Chef::Config[:why_run] = false
|
329
|
+
end
|
330
|
+
|
331
|
+
it "should return false if the user does not exist" do
|
332
|
+
@provider.check_lock.should eql(false)
|
333
|
+
end
|
334
|
+
|
335
|
+
it "should not raise an error if the user does not exist" do
|
336
|
+
lambda { @provider.check_lock }.should_not raise_error
|
337
|
+
end
|
338
|
+
end
|
318
339
|
end
|
319
340
|
|
320
341
|
describe "when locking the user" do
|
@@ -0,0 +1,47 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Phil Dibowitz (<phild@fb.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Facebook
|
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::Provider::WhyrunSafeRubyBlock, "initialize" do
|
22
|
+
before(:each) do
|
23
|
+
$evil_global_evil_laugh = :wahwah
|
24
|
+
@node = Chef::Node.new
|
25
|
+
@events = Chef::EventDispatch::Dispatcher.new
|
26
|
+
@run_context = Chef::RunContext.new(@node, {}, @events)
|
27
|
+
@new_resource = Chef::Resource::WhyrunSafeRubyBlock.new("bloc party")
|
28
|
+
@new_resource.block { $evil_global_evil_laugh = :mwahahaha}
|
29
|
+
@provider = Chef::Provider::WhyrunSafeRubyBlock.new(@new_resource, @run_context)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should call the block and flag the resource as updated" do
|
33
|
+
@provider.run_action(:create)
|
34
|
+
$evil_global_evil_laugh.should == :mwahahaha
|
35
|
+
@new_resource.should be_updated
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should call the block and flat the resource as updated - even in whyrun" do
|
39
|
+
Chef::Config[:why_run] = true
|
40
|
+
@provider.run_action(:create)
|
41
|
+
$evil_global_evil_laugh.should == :mwahahaha
|
42
|
+
@new_resource.should be_updated
|
43
|
+
Chef::Config[:why_run] = false
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
data/spec/unit/rest_spec.rb
CHANGED
@@ -278,9 +278,11 @@ describe Chef::REST do
|
|
278
278
|
|
279
279
|
describe "streaming downloads to a tempfile" do
|
280
280
|
before do
|
281
|
-
@tempfile =
|
282
|
-
|
283
|
-
|
281
|
+
@tempfile = StringIO.new
|
282
|
+
@tempfile.stub(:close!)
|
283
|
+
@tempfile.stub(:path).and_return("/tmp/this-is-a-stringio-not-a-real-file")
|
284
|
+
Tempfile.stub(:new).with("chef-rest").and_return(@tempfile)
|
285
|
+
Tempfile.stub(:open).and_return(@tempfile)
|
284
286
|
|
285
287
|
@request_mock = {}
|
286
288
|
Net::HTTP::Get.stub!(:new).and_return(@request_mock)
|
@@ -288,11 +290,6 @@ describe Chef::REST do
|
|
288
290
|
@http_response_mock = mock("Net::HTTP Response mock")
|
289
291
|
end
|
290
292
|
|
291
|
-
after do
|
292
|
-
@tempfile.rspec_reset
|
293
|
-
@tempfile.close!
|
294
|
-
end
|
295
|
-
|
296
293
|
it "should build a new HTTP GET request without the application/json accept header" do
|
297
294
|
expected_headers = {'X-Chef-Version' => Chef::VERSION, 'Accept-Encoding' => Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE}
|
298
295
|
Net::HTTP::Get.should_receive(:new).with("/?foo=bar", expected_headers).and_return(@request_mock)
|
@@ -309,9 +306,9 @@ describe Chef::REST do
|
|
309
306
|
end
|
310
307
|
|
311
308
|
it "should populate the tempfile with the value of the raw request" do
|
312
|
-
@
|
313
|
-
@tempfile.should_receive(:write).with("ninja").once.and_return(true)
|
309
|
+
@http_response.should_receive(:read_body).and_yield("ninja")
|
314
310
|
@rest.run_request(:GET, @url, {}, false, nil, true)
|
311
|
+
@tempfile.string.should include("ninja")
|
315
312
|
end
|
316
313
|
|
317
314
|
it "should close the tempfile if we're doing a raw request" do
|
@@ -426,19 +423,55 @@ describe Chef::REST do
|
|
426
423
|
@rest.api_request(:GET, @url, {}).should == {"ohai2u"=>"json_api"}
|
427
424
|
end
|
428
425
|
|
429
|
-
|
430
|
-
|
431
|
-
|
426
|
+
describe "when the server returns a redirect response" do
|
427
|
+
let(:redirected_url) { "https://chef.example.com:8443/foo" }
|
428
|
+
let(:redirected_uri) { URI.parse(redirected_url) }
|
429
|
+
|
430
|
+
def redirect_with(response_name)
|
431
|
+
resp_cls = Net.const_get(response_name)
|
432
432
|
resp_code = Net::HTTPResponse::CODE_TO_OBJ.keys.detect { |k| Net::HTTPResponse::CODE_TO_OBJ[k] == resp_cls }
|
433
|
-
|
434
|
-
|
435
|
-
|
433
|
+
redirect = Net::HTTPFound.new("1.1", resp_code, "bob is somewhere else again")
|
434
|
+
redirect.add_field("location", redirected_url)
|
435
|
+
redirect.stub!(:read_body).and_return('')
|
436
|
+
redirect
|
437
|
+
end
|
436
438
|
|
437
|
-
|
439
|
+
%w[ HTTPFound HTTPMovedPermanently HTTPSeeOther HTTPUseProxy HTTPTemporaryRedirect HTTPMultipleChoice ].each do |response_name|
|
440
|
+
|
441
|
+
it "should call api_request again on a #{response_name} response" do
|
442
|
+
redirect = redirect_with(response_name)
|
438
443
|
|
439
|
-
|
444
|
+
headers = { "X-Auth-Header" => "foo" }
|
445
|
+
auto_headers = {"Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3"}
|
446
|
+
expected_headers = auto_headers.merge(headers)
|
447
|
+
|
448
|
+
success = Net::HTTPSuccess.new("1.1",200, "it-works")
|
449
|
+
success.stub!(:read_body).and_return('{"foo": "bar"}')
|
450
|
+
success['content-type'] = "application/json"
|
451
|
+
|
452
|
+
@http_client.should_receive(:request).and_yield(redirect).and_return(redirect)
|
453
|
+
@http_client.should_receive(:request).and_yield(success).and_return(success)
|
454
|
+
|
455
|
+
# CHEF-1848: verify that headers get passed to redirects
|
456
|
+
@rest.should_receive(:retriable_rest_request).with(:GET, @url, nil, expected_headers).and_call_original
|
457
|
+
@rest.should_receive(:retriable_rest_request).with(:GET, redirected_uri, nil, expected_headers).and_call_original
|
458
|
+
|
459
|
+
@rest.api_request(:GET, @url, headers).should == {"foo" => "bar"}
|
460
|
+
end
|
461
|
+
|
462
|
+
context "when making a request for a method other than GET" do
|
463
|
+
|
464
|
+
[:PUT, :POST, :DELETE].each do |method|
|
465
|
+
it "raises an error" do
|
466
|
+
redirect = redirect_with(response_name)
|
467
|
+
@http_client.should_receive(:request).and_yield(redirect).and_return(redirect)
|
468
|
+
lambda { @rest.api_request(method, @url) }.should raise_error(Chef::Exceptions::InvalidRedirect)
|
469
|
+
end
|
470
|
+
end
|
471
|
+
end
|
440
472
|
end
|
441
|
-
|
473
|
+
|
474
|
+
end
|
442
475
|
|
443
476
|
it "should show the JSON error message on an unsuccessful request" do
|
444
477
|
http_response = Net::HTTPServerError.new("1.1", "500", "drooling from inside of mouth")
|
@@ -490,7 +523,6 @@ describe Chef::REST do
|
|
490
523
|
end
|
491
524
|
|
492
525
|
after do
|
493
|
-
@tempfile.rspec_reset
|
494
526
|
@tempfile.close!
|
495
527
|
end
|
496
528
|
|
@@ -557,7 +589,6 @@ describe Chef::REST do
|
|
557
589
|
end
|
558
590
|
|
559
591
|
it "closes and unlinks the tempfile when the response is a redirect" do
|
560
|
-
Tempfile.rspec_reset
|
561
592
|
tempfile = mock("die", :path => "/tmp/ragefist", :close => true, :binmode => nil)
|
562
593
|
tempfile.should_receive(:close!).at_least(2).times
|
563
594
|
Tempfile.stub!(:new).with("chef-rest").and_return(tempfile)
|
@@ -571,7 +602,9 @@ describe Chef::REST do
|
|
571
602
|
end
|
572
603
|
|
573
604
|
it "passes the original block to the redirected request" do
|
574
|
-
|
605
|
+
tempfile = mock("die", :path => "/tmp/ragefist", :close => true, :binmode => nil)
|
606
|
+
tempfile.should_receive(:close!).at_least(2).times
|
607
|
+
Tempfile.stub!(:new).with("chef-rest").and_return(tempfile)
|
575
608
|
|
576
609
|
http_response = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
|
577
610
|
http_response.add_field("location","/that-thing-is-here-now")
|
metadata
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.30.0.rc.0
|
5
|
+
prerelease: 8
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Adam Jacob
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: mixlib-config
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 1.1.2
|
20
22
|
- - ~>
|
@@ -23,8 +25,9 @@ dependencies:
|
|
23
25
|
type: :runtime
|
24
26
|
prerelease: false
|
25
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
26
29
|
requirements:
|
27
|
-
- - '>='
|
30
|
+
- - ! '>='
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 1.1.2
|
30
33
|
- - ~>
|
@@ -33,6 +36,7 @@ dependencies:
|
|
33
36
|
- !ruby/object:Gem::Dependency
|
34
37
|
name: mixlib-cli
|
35
38
|
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
36
40
|
requirements:
|
37
41
|
- - ~>
|
38
42
|
- !ruby/object:Gem::Version
|
@@ -40,6 +44,7 @@ dependencies:
|
|
40
44
|
type: :runtime
|
41
45
|
prerelease: false
|
42
46
|
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
43
48
|
requirements:
|
44
49
|
- - ~>
|
45
50
|
- !ruby/object:Gem::Version
|
@@ -47,6 +52,7 @@ dependencies:
|
|
47
52
|
- !ruby/object:Gem::Dependency
|
48
53
|
name: mixlib-log
|
49
54
|
requirement: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
50
56
|
requirements:
|
51
57
|
- - ~>
|
52
58
|
- !ruby/object:Gem::Version
|
@@ -54,6 +60,7 @@ dependencies:
|
|
54
60
|
type: :runtime
|
55
61
|
prerelease: false
|
56
62
|
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
57
64
|
requirements:
|
58
65
|
- - ~>
|
59
66
|
- !ruby/object:Gem::Version
|
@@ -61,6 +68,7 @@ dependencies:
|
|
61
68
|
- !ruby/object:Gem::Dependency
|
62
69
|
name: mixlib-authentication
|
63
70
|
requirement: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
64
72
|
requirements:
|
65
73
|
- - ~>
|
66
74
|
- !ruby/object:Gem::Version
|
@@ -68,6 +76,7 @@ dependencies:
|
|
68
76
|
type: :runtime
|
69
77
|
prerelease: false
|
70
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
71
80
|
requirements:
|
72
81
|
- - ~>
|
73
82
|
- !ruby/object:Gem::Version
|
@@ -75,22 +84,25 @@ dependencies:
|
|
75
84
|
- !ruby/object:Gem::Dependency
|
76
85
|
name: mixlib-shellout
|
77
86
|
requirement: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
78
88
|
requirements:
|
79
|
-
- -
|
89
|
+
- - '='
|
80
90
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
91
|
+
version: 1.3.0.rc.0
|
82
92
|
type: :runtime
|
83
93
|
prerelease: false
|
84
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
85
96
|
requirements:
|
86
|
-
- -
|
97
|
+
- - '='
|
87
98
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
99
|
+
version: 1.3.0.rc.0
|
89
100
|
- !ruby/object:Gem::Dependency
|
90
101
|
name: ohai
|
91
102
|
requirement: !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
92
104
|
requirements:
|
93
|
-
- - '>='
|
105
|
+
- - ! '>='
|
94
106
|
- !ruby/object:Gem::Version
|
95
107
|
version: 0.6.0
|
96
108
|
- - <
|
@@ -99,8 +111,9 @@ dependencies:
|
|
99
111
|
type: :runtime
|
100
112
|
prerelease: false
|
101
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
102
115
|
requirements:
|
103
|
-
- - '>='
|
116
|
+
- - ! '>='
|
104
117
|
- !ruby/object:Gem::Version
|
105
118
|
version: 0.6.0
|
106
119
|
- - <
|
@@ -109,8 +122,9 @@ dependencies:
|
|
109
122
|
- !ruby/object:Gem::Dependency
|
110
123
|
name: rest-client
|
111
124
|
requirement: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
112
126
|
requirements:
|
113
|
-
- - '>='
|
127
|
+
- - ! '>='
|
114
128
|
- !ruby/object:Gem::Version
|
115
129
|
version: 1.0.4
|
116
130
|
- - <
|
@@ -119,18 +133,36 @@ dependencies:
|
|
119
133
|
type: :runtime
|
120
134
|
prerelease: false
|
121
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
122
137
|
requirements:
|
123
|
-
- - '>='
|
138
|
+
- - ! '>='
|
124
139
|
- !ruby/object:Gem::Version
|
125
140
|
version: 1.0.4
|
126
141
|
- - <
|
127
142
|
- !ruby/object:Gem::Version
|
128
143
|
version: 1.7.0
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
|
+
name: mime-types
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
148
|
+
requirements:
|
149
|
+
- - ~>
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '1.16'
|
152
|
+
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ~>
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '1.16'
|
129
160
|
- !ruby/object:Gem::Dependency
|
130
161
|
name: bunny
|
131
162
|
requirement: !ruby/object:Gem::Requirement
|
163
|
+
none: false
|
132
164
|
requirements:
|
133
|
-
- - '>='
|
165
|
+
- - ! '>='
|
134
166
|
- !ruby/object:Gem::Version
|
135
167
|
version: 0.6.0
|
136
168
|
- - <
|
@@ -139,8 +171,9 @@ dependencies:
|
|
139
171
|
type: :runtime
|
140
172
|
prerelease: false
|
141
173
|
version_requirements: !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
142
175
|
requirements:
|
143
|
-
- - '>='
|
176
|
+
- - ! '>='
|
144
177
|
- !ruby/object:Gem::Version
|
145
178
|
version: 0.6.0
|
146
179
|
- - <
|
@@ -149,8 +182,9 @@ dependencies:
|
|
149
182
|
- !ruby/object:Gem::Dependency
|
150
183
|
name: json
|
151
184
|
requirement: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
152
186
|
requirements:
|
153
|
-
- - '>='
|
187
|
+
- - ! '>='
|
154
188
|
- !ruby/object:Gem::Version
|
155
189
|
version: 1.4.4
|
156
190
|
- - <=
|
@@ -159,8 +193,9 @@ dependencies:
|
|
159
193
|
type: :runtime
|
160
194
|
prerelease: false
|
161
195
|
version_requirements: !ruby/object:Gem::Requirement
|
196
|
+
none: false
|
162
197
|
requirements:
|
163
|
-
- - '>='
|
198
|
+
- - ! '>='
|
164
199
|
- !ruby/object:Gem::Version
|
165
200
|
version: 1.4.4
|
166
201
|
- - <=
|
@@ -169,6 +204,7 @@ dependencies:
|
|
169
204
|
- !ruby/object:Gem::Dependency
|
170
205
|
name: yajl-ruby
|
171
206
|
requirement: !ruby/object:Gem::Requirement
|
207
|
+
none: false
|
172
208
|
requirements:
|
173
209
|
- - ~>
|
174
210
|
- !ruby/object:Gem::Version
|
@@ -176,6 +212,7 @@ dependencies:
|
|
176
212
|
type: :runtime
|
177
213
|
prerelease: false
|
178
214
|
version_requirements: !ruby/object:Gem::Requirement
|
215
|
+
none: false
|
179
216
|
requirements:
|
180
217
|
- - ~>
|
181
218
|
- !ruby/object:Gem::Version
|
@@ -183,6 +220,7 @@ dependencies:
|
|
183
220
|
- !ruby/object:Gem::Dependency
|
184
221
|
name: treetop
|
185
222
|
requirement: !ruby/object:Gem::Requirement
|
223
|
+
none: false
|
186
224
|
requirements:
|
187
225
|
- - ~>
|
188
226
|
- !ruby/object:Gem::Version
|
@@ -190,6 +228,7 @@ dependencies:
|
|
190
228
|
type: :runtime
|
191
229
|
prerelease: false
|
192
230
|
version_requirements: !ruby/object:Gem::Requirement
|
231
|
+
none: false
|
193
232
|
requirements:
|
194
233
|
- - ~>
|
195
234
|
- !ruby/object:Gem::Version
|
@@ -197,6 +236,7 @@ dependencies:
|
|
197
236
|
- !ruby/object:Gem::Dependency
|
198
237
|
name: net-ssh
|
199
238
|
requirement: !ruby/object:Gem::Requirement
|
239
|
+
none: false
|
200
240
|
requirements:
|
201
241
|
- - ~>
|
202
242
|
- !ruby/object:Gem::Version
|
@@ -204,6 +244,7 @@ dependencies:
|
|
204
244
|
type: :runtime
|
205
245
|
prerelease: false
|
206
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
none: false
|
207
248
|
requirements:
|
208
249
|
- - ~>
|
209
250
|
- !ruby/object:Gem::Version
|
@@ -211,6 +252,7 @@ dependencies:
|
|
211
252
|
- !ruby/object:Gem::Dependency
|
212
253
|
name: net-ssh-multi
|
213
254
|
requirement: !ruby/object:Gem::Requirement
|
255
|
+
none: false
|
214
256
|
requirements:
|
215
257
|
- - ~>
|
216
258
|
- !ruby/object:Gem::Version
|
@@ -218,6 +260,7 @@ dependencies:
|
|
218
260
|
type: :runtime
|
219
261
|
prerelease: false
|
220
262
|
version_requirements: !ruby/object:Gem::Requirement
|
263
|
+
none: false
|
221
264
|
requirements:
|
222
265
|
- - ~>
|
223
266
|
- !ruby/object:Gem::Version
|
@@ -225,8 +268,9 @@ dependencies:
|
|
225
268
|
- !ruby/object:Gem::Dependency
|
226
269
|
name: highline
|
227
270
|
requirement: !ruby/object:Gem::Requirement
|
271
|
+
none: false
|
228
272
|
requirements:
|
229
|
-
- - '>='
|
273
|
+
- - ! '>='
|
230
274
|
- !ruby/object:Gem::Version
|
231
275
|
version: 1.6.9
|
232
276
|
- - ~>
|
@@ -235,8 +279,9 @@ dependencies:
|
|
235
279
|
type: :runtime
|
236
280
|
prerelease: false
|
237
281
|
version_requirements: !ruby/object:Gem::Requirement
|
282
|
+
none: false
|
238
283
|
requirements:
|
239
|
-
- - '>='
|
284
|
+
- - ! '>='
|
240
285
|
- !ruby/object:Gem::Version
|
241
286
|
version: 1.6.9
|
242
287
|
- - ~>
|
@@ -245,6 +290,7 @@ dependencies:
|
|
245
290
|
- !ruby/object:Gem::Dependency
|
246
291
|
name: moneta
|
247
292
|
requirement: !ruby/object:Gem::Requirement
|
293
|
+
none: false
|
248
294
|
requirements:
|
249
295
|
- - <
|
250
296
|
- !ruby/object:Gem::Version
|
@@ -252,6 +298,7 @@ dependencies:
|
|
252
298
|
type: :runtime
|
253
299
|
prerelease: false
|
254
300
|
version_requirements: !ruby/object:Gem::Requirement
|
301
|
+
none: false
|
255
302
|
requirements:
|
256
303
|
- - <
|
257
304
|
- !ruby/object:Gem::Version
|
@@ -259,143 +306,163 @@ dependencies:
|
|
259
306
|
- !ruby/object:Gem::Dependency
|
260
307
|
name: erubis
|
261
308
|
requirement: !ruby/object:Gem::Requirement
|
309
|
+
none: false
|
262
310
|
requirements:
|
263
|
-
- - '>='
|
311
|
+
- - ! '>='
|
264
312
|
- !ruby/object:Gem::Version
|
265
313
|
version: '0'
|
266
314
|
type: :runtime
|
267
315
|
prerelease: false
|
268
316
|
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
none: false
|
269
318
|
requirements:
|
270
|
-
- - '>='
|
319
|
+
- - ! '>='
|
271
320
|
- !ruby/object:Gem::Version
|
272
321
|
version: '0'
|
273
322
|
- !ruby/object:Gem::Dependency
|
274
323
|
name: uuidtools
|
275
324
|
requirement: !ruby/object:Gem::Requirement
|
325
|
+
none: false
|
276
326
|
requirements:
|
277
|
-
- - '>='
|
327
|
+
- - ! '>='
|
278
328
|
- !ruby/object:Gem::Version
|
279
329
|
version: '0'
|
280
330
|
type: :runtime
|
281
331
|
prerelease: false
|
282
332
|
version_requirements: !ruby/object:Gem::Requirement
|
333
|
+
none: false
|
283
334
|
requirements:
|
284
|
-
- - '>='
|
335
|
+
- - ! '>='
|
285
336
|
- !ruby/object:Gem::Version
|
286
337
|
version: '0'
|
287
338
|
- !ruby/object:Gem::Dependency
|
288
339
|
name: rdoc
|
289
340
|
requirement: !ruby/object:Gem::Requirement
|
341
|
+
none: false
|
290
342
|
requirements:
|
291
|
-
- - '>='
|
343
|
+
- - ! '>='
|
292
344
|
- !ruby/object:Gem::Version
|
293
345
|
version: '0'
|
294
346
|
type: :development
|
295
347
|
prerelease: false
|
296
348
|
version_requirements: !ruby/object:Gem::Requirement
|
349
|
+
none: false
|
297
350
|
requirements:
|
298
|
-
- - '>='
|
351
|
+
- - ! '>='
|
299
352
|
- !ruby/object:Gem::Version
|
300
353
|
version: '0'
|
301
354
|
- !ruby/object:Gem::Dependency
|
302
355
|
name: sdoc
|
303
356
|
requirement: !ruby/object:Gem::Requirement
|
357
|
+
none: false
|
304
358
|
requirements:
|
305
|
-
- - '>='
|
359
|
+
- - ! '>='
|
306
360
|
- !ruby/object:Gem::Version
|
307
361
|
version: '0'
|
308
362
|
type: :development
|
309
363
|
prerelease: false
|
310
364
|
version_requirements: !ruby/object:Gem::Requirement
|
365
|
+
none: false
|
311
366
|
requirements:
|
312
|
-
- - '>='
|
367
|
+
- - ! '>='
|
313
368
|
- !ruby/object:Gem::Version
|
314
369
|
version: '0'
|
315
370
|
- !ruby/object:Gem::Dependency
|
316
371
|
name: rake
|
317
372
|
requirement: !ruby/object:Gem::Requirement
|
373
|
+
none: false
|
318
374
|
requirements:
|
319
|
-
- - '>='
|
375
|
+
- - ! '>='
|
320
376
|
- !ruby/object:Gem::Version
|
321
377
|
version: '0'
|
322
378
|
type: :development
|
323
379
|
prerelease: false
|
324
380
|
version_requirements: !ruby/object:Gem::Requirement
|
381
|
+
none: false
|
325
382
|
requirements:
|
326
|
-
- - '>='
|
383
|
+
- - ! '>='
|
327
384
|
- !ruby/object:Gem::Version
|
328
385
|
version: '0'
|
329
386
|
- !ruby/object:Gem::Dependency
|
330
387
|
name: rack
|
331
388
|
requirement: !ruby/object:Gem::Requirement
|
389
|
+
none: false
|
332
390
|
requirements:
|
333
|
-
- - '>='
|
391
|
+
- - ! '>='
|
334
392
|
- !ruby/object:Gem::Version
|
335
393
|
version: '0'
|
336
394
|
type: :development
|
337
395
|
prerelease: false
|
338
396
|
version_requirements: !ruby/object:Gem::Requirement
|
397
|
+
none: false
|
339
398
|
requirements:
|
340
|
-
- - '>='
|
399
|
+
- - ! '>='
|
341
400
|
- !ruby/object:Gem::Version
|
342
401
|
version: '0'
|
343
402
|
- !ruby/object:Gem::Dependency
|
344
403
|
name: rspec_junit_formatter
|
345
404
|
requirement: !ruby/object:Gem::Requirement
|
405
|
+
none: false
|
346
406
|
requirements:
|
347
|
-
- - '>='
|
407
|
+
- - ! '>='
|
348
408
|
- !ruby/object:Gem::Version
|
349
409
|
version: '0'
|
350
410
|
type: :development
|
351
411
|
prerelease: false
|
352
412
|
version_requirements: !ruby/object:Gem::Requirement
|
413
|
+
none: false
|
353
414
|
requirements:
|
354
|
-
- - '>='
|
415
|
+
- - ! '>='
|
355
416
|
- !ruby/object:Gem::Version
|
356
417
|
version: '0'
|
357
418
|
- !ruby/object:Gem::Dependency
|
358
419
|
name: rspec-core
|
359
420
|
requirement: !ruby/object:Gem::Requirement
|
421
|
+
none: false
|
360
422
|
requirements:
|
361
423
|
- - ~>
|
362
424
|
- !ruby/object:Gem::Version
|
363
|
-
version: 2.
|
425
|
+
version: 2.12.0
|
364
426
|
type: :development
|
365
427
|
prerelease: false
|
366
428
|
version_requirements: !ruby/object:Gem::Requirement
|
429
|
+
none: false
|
367
430
|
requirements:
|
368
431
|
- - ~>
|
369
432
|
- !ruby/object:Gem::Version
|
370
|
-
version: 2.
|
433
|
+
version: 2.12.0
|
371
434
|
- !ruby/object:Gem::Dependency
|
372
435
|
name: rspec-expectations
|
373
436
|
requirement: !ruby/object:Gem::Requirement
|
437
|
+
none: false
|
374
438
|
requirements:
|
375
439
|
- - ~>
|
376
440
|
- !ruby/object:Gem::Version
|
377
|
-
version: 2.
|
441
|
+
version: 2.12.0
|
378
442
|
type: :development
|
379
443
|
prerelease: false
|
380
444
|
version_requirements: !ruby/object:Gem::Requirement
|
445
|
+
none: false
|
381
446
|
requirements:
|
382
447
|
- - ~>
|
383
448
|
- !ruby/object:Gem::Version
|
384
|
-
version: 2.
|
449
|
+
version: 2.12.0
|
385
450
|
- !ruby/object:Gem::Dependency
|
386
451
|
name: rspec-mocks
|
387
452
|
requirement: !ruby/object:Gem::Requirement
|
453
|
+
none: false
|
388
454
|
requirements:
|
389
455
|
- - ~>
|
390
456
|
- !ruby/object:Gem::Version
|
391
|
-
version: 2.
|
457
|
+
version: 2.12.0
|
392
458
|
type: :development
|
393
459
|
prerelease: false
|
394
460
|
version_requirements: !ruby/object:Gem::Requirement
|
461
|
+
none: false
|
395
462
|
requirements:
|
396
463
|
- - ~>
|
397
464
|
- !ruby/object:Gem::Version
|
398
|
-
version: 2.
|
465
|
+
version: 2.12.0
|
399
466
|
description: A systems integration framework, built to bring the benefits of configuration
|
400
467
|
management to your entire infrastructure.
|
401
468
|
email: adam@opscode.com
|
@@ -713,6 +780,7 @@ files:
|
|
713
780
|
- lib/chef/monkey_patches/regexp.rb
|
714
781
|
- lib/chef/monkey_patches/string.rb
|
715
782
|
- lib/chef/monkey_patches/tempfile.rb
|
783
|
+
- lib/chef/monkey_patches/uri.rb
|
716
784
|
- lib/chef/nil_argument.rb
|
717
785
|
- lib/chef/node/attribute.rb
|
718
786
|
- lib/chef/node.rb
|
@@ -796,6 +864,7 @@ files:
|
|
796
864
|
- lib/chef/provider/user/useradd.rb
|
797
865
|
- lib/chef/provider/user/windows.rb
|
798
866
|
- lib/chef/provider/user.rb
|
867
|
+
- lib/chef/provider/whyrun_safe_ruby_block.rb
|
799
868
|
- lib/chef/provider.rb
|
800
869
|
- lib/chef/providers.rb
|
801
870
|
- lib/chef/recipe.rb
|
@@ -850,6 +919,7 @@ files:
|
|
850
919
|
- lib/chef/resource/template.rb
|
851
920
|
- lib/chef/resource/timestamped_deploy.rb
|
852
921
|
- lib/chef/resource/user.rb
|
922
|
+
- lib/chef/resource/whyrun_safe_ruby_block.rb
|
853
923
|
- lib/chef/resource/yum_package.rb
|
854
924
|
- lib/chef/resource.rb
|
855
925
|
- lib/chef/resource_collection/stepable_iterator.rb
|
@@ -1052,10 +1122,12 @@ files:
|
|
1052
1122
|
- spec/functional/knife/cookbook_delete_spec.rb
|
1053
1123
|
- spec/functional/knife/exec_spec.rb
|
1054
1124
|
- spec/functional/knife/ssh_spec.rb
|
1125
|
+
- spec/functional/resource/base.rb
|
1055
1126
|
- spec/functional/resource/cookbook_file_spec.rb
|
1056
1127
|
- spec/functional/resource/deploy_revision_spec.rb
|
1057
1128
|
- spec/functional/resource/directory_spec.rb
|
1058
1129
|
- spec/functional/resource/file_spec.rb
|
1130
|
+
- spec/functional/resource/group_spec.rb
|
1059
1131
|
- spec/functional/resource/link_spec.rb
|
1060
1132
|
- spec/functional/resource/remote_directory_spec.rb
|
1061
1133
|
- spec/functional/resource/remote_file_spec.rb
|
@@ -1205,6 +1277,7 @@ files:
|
|
1205
1277
|
- spec/unit/mixin/template_spec.rb
|
1206
1278
|
- spec/unit/mixin/xml_escape_spec.rb
|
1207
1279
|
- spec/unit/monkey_patches/string_spec.rb
|
1280
|
+
- spec/unit/monkey_patches/uri_spec.rb
|
1208
1281
|
- spec/unit/node/attribute_spec.rb
|
1209
1282
|
- spec/unit/node_spec.rb
|
1210
1283
|
- spec/unit/openid_registration_spec.rb
|
@@ -1282,6 +1355,7 @@ files:
|
|
1282
1355
|
- spec/unit/provider/user/useradd_spec.rb
|
1283
1356
|
- spec/unit/provider/user/windows_spec.rb
|
1284
1357
|
- spec/unit/provider/user_spec.rb
|
1358
|
+
- spec/unit/provider/whyrun_safe_ruby_block_spec.rb
|
1285
1359
|
- spec/unit/provider_spec.rb
|
1286
1360
|
- spec/unit/recipe_spec.rb
|
1287
1361
|
- spec/unit/resource/apt_package_spec.rb
|
@@ -1369,26 +1443,27 @@ files:
|
|
1369
1443
|
- bin/shef
|
1370
1444
|
homepage: http://wiki.opscode.com/display/chef
|
1371
1445
|
licenses: []
|
1372
|
-
metadata: {}
|
1373
1446
|
post_install_message:
|
1374
1447
|
rdoc_options: []
|
1375
1448
|
require_paths:
|
1376
1449
|
- lib
|
1377
1450
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1451
|
+
none: false
|
1378
1452
|
requirements:
|
1379
|
-
- - '>='
|
1453
|
+
- - ! '>='
|
1380
1454
|
- !ruby/object:Gem::Version
|
1381
1455
|
version: '0'
|
1382
1456
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1457
|
+
none: false
|
1383
1458
|
requirements:
|
1384
|
-
- - '
|
1459
|
+
- - ! '>'
|
1385
1460
|
- !ruby/object:Gem::Version
|
1386
|
-
version:
|
1461
|
+
version: 1.3.1
|
1387
1462
|
requirements: []
|
1388
1463
|
rubyforge_project:
|
1389
|
-
rubygems_version:
|
1464
|
+
rubygems_version: 1.8.23
|
1390
1465
|
signing_key:
|
1391
|
-
specification_version:
|
1466
|
+
specification_version: 3
|
1392
1467
|
summary: A systems integration framework, built to bring the benefits of configuration
|
1393
1468
|
management to your entire infrastructure.
|
1394
1469
|
test_files: []
|