chef 11.14.0.alpha.3 → 11.14.0.alpha.4
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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +140 -99
- data/lib/chef/application.rb +80 -2
- data/lib/chef/application/apply.rb +1 -0
- data/lib/chef/application/client.rb +5 -0
- data/lib/chef/application/knife.rb +4 -0
- data/lib/chef/application/windows_service.rb +1 -0
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +6 -4
- data/lib/chef/config.rb +5 -3
- data/lib/chef/exceptions.rb +2 -0
- data/lib/chef/http/basic_client.rb +1 -0
- data/lib/chef/knife.rb +1 -0
- data/lib/chef/platform/provider_mapping.rb +7 -0
- data/lib/chef/provider/env/windows.rb +2 -0
- data/lib/chef/provider/group/usermod.rb +1 -1
- data/lib/chef/provider/mount/solaris.rb +233 -0
- data/lib/chef/provider/package/apt.rb +9 -0
- data/lib/chef/provider/package/windows.rb +3 -0
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/resource/mount.rb +6 -1
- data/lib/chef/util/path_helper.rb +94 -0
- data/lib/chef/version.rb +1 -1
- data/spec/functional/application_spec.rb +58 -0
- data/spec/functional/resource/mount_spec.rb +14 -11
- data/spec/integration/client/client_spec.rb +11 -0
- data/spec/integration/knife/common_options_spec.rb +9 -0
- data/spec/unit/application_spec.rb +157 -0
- data/spec/unit/http/basic_client_spec.rb +42 -0
- data/spec/unit/provider/env/windows_spec.rb +67 -0
- data/spec/unit/provider/group/usermod_spec.rb +2 -1
- data/spec/unit/provider/mount/mount_spec.rb +3 -3
- data/spec/unit/provider/mount/solaris_spec.rb +646 -0
- data/spec/unit/provider/package/apt_spec.rb +5 -0
- data/spec/unit/provider/package/windows_spec.rb +6 -0
- data/spec/unit/resource_reporter_spec.rb +2 -2
- data/spec/unit/util/path_helper_spec.rb +136 -0
- metadata +23 -16
@@ -169,6 +169,11 @@ SHOWPKG_STDOUT
|
|
169
169
|
@provider.load_current_resource
|
170
170
|
end
|
171
171
|
|
172
|
+
it "raises an exception if a source is specified (CHEF-5113)" do
|
173
|
+
@new_resource.source "pluto"
|
174
|
+
@provider.define_resource_requirements
|
175
|
+
expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
|
176
|
+
end
|
172
177
|
end
|
173
178
|
|
174
179
|
context "after loading the current resource" do
|
@@ -27,6 +27,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
27
27
|
|
28
28
|
describe "load_current_resource" do
|
29
29
|
before(:each) do
|
30
|
+
Chef::Util::PathHelper.stub(:validate_path)
|
30
31
|
provider.stub(:package_provider).and_return(double('package_provider',
|
31
32
|
:installed_version => "1.0", :package_version => "2.0"))
|
32
33
|
end
|
@@ -46,6 +47,11 @@ describe Chef::Provider::Package::Windows, :windows_only do
|
|
46
47
|
provider.load_current_resource
|
47
48
|
expect(provider.new_resource.version).to eql("2.0")
|
48
49
|
end
|
50
|
+
|
51
|
+
it "checks that the source path is valid" do
|
52
|
+
expect(Chef::Util::PathHelper).to receive(:validate_path)
|
53
|
+
provider.load_current_resource
|
54
|
+
end
|
49
55
|
end
|
50
56
|
|
51
57
|
describe "package_provider" do
|
@@ -436,7 +436,7 @@ describe Chef::ResourceReporter do
|
|
436
436
|
@backtrace = ["foo.rb:1 in `foo!'","bar.rb:2 in `bar!","'baz.rb:3 in `baz!'"]
|
437
437
|
@node = Chef::Node.new
|
438
438
|
@node.name("spitfire")
|
439
|
-
@exception =
|
439
|
+
@exception = ArgumentError.new
|
440
440
|
@exception.stub(:inspect).and_return("Net::HTTPServerException")
|
441
441
|
@exception.stub(:message).and_return("Object not found")
|
442
442
|
@exception.stub(:backtrace).and_return(@backtrace)
|
@@ -463,7 +463,7 @@ describe Chef::ResourceReporter do
|
|
463
463
|
|
464
464
|
it "includes the error inspector output in the event data" do
|
465
465
|
@report["data"]["exception"].should have_key("description")
|
466
|
-
@report["data"]["exception"]["description"].should include({"title"=>"Error expanding the run_list:", "sections"=>[{"Unexpected Error:" => "
|
466
|
+
@report["data"]["exception"]["description"].should include({"title"=>"Error expanding the run_list:", "sections"=>[{"Unexpected Error:" => "ArgumentError: Object not found"}]})
|
467
467
|
end
|
468
468
|
|
469
469
|
end
|
@@ -0,0 +1,136 @@
|
|
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 'chef/util/path_helper'
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe Chef::Util::PathHelper do
|
23
|
+
let(:path_helper) { Chef::Util::PathHelper }
|
24
|
+
|
25
|
+
describe "validate_path" do
|
26
|
+
context "on windows" do
|
27
|
+
before(:each) do
|
28
|
+
# pass by default
|
29
|
+
Chef::Platform.stub(:windows?).and_return(true)
|
30
|
+
path_helper.stub(:printable?).and_return(true)
|
31
|
+
path_helper.stub(:windows_max_length_exceeded?).and_return(false)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "returns the path if the path passes the tests" do
|
35
|
+
expect(path_helper.validate_path("C:\\ThisIsRigged")).to eql("C:\\ThisIsRigged")
|
36
|
+
end
|
37
|
+
|
38
|
+
it "does not raise an error if everything looks great" do
|
39
|
+
expect { path_helper.validate_path("C:\\cool path\\dude.exe") }.not_to raise_error
|
40
|
+
end
|
41
|
+
|
42
|
+
it "raises an error if the path has invalid characters" do
|
43
|
+
path_helper.stub(:printable?).and_return(false)
|
44
|
+
expect { path_helper.validate_path("Newline!\n") }.to raise_error(Chef::Exceptions::ValidationFailed)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "Adds the \\\\?\\ prefix if the path exceeds MAX_LENGTH and does not have it" do
|
48
|
+
long_path = "C:\\" + "a" * 250 + "\\" + "b" * 250
|
49
|
+
prefixed_long_path = "\\\\?\\" + long_path
|
50
|
+
path_helper.stub(:windows_max_length_exceeded?).and_return(true)
|
51
|
+
expect(path_helper.validate_path(long_path)).to eql(prefixed_long_path)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "windows_max_length_exceeded?" do
|
57
|
+
it "returns true if the path is too long (259 + NUL) for the API" do
|
58
|
+
expect(path_helper.windows_max_length_exceeded?("C:\\" + "a" * 250 + "\\" + "b" * 6)).to be_true
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns false if the path is not too long (259 + NUL) for the standard API" do
|
62
|
+
expect(path_helper.windows_max_length_exceeded?("C:\\" + "a" * 250 + "\\" + "b" * 5)).to be_false
|
63
|
+
end
|
64
|
+
|
65
|
+
it "returns false if the path is over 259 characters but uses the \\\\?\\ prefix" do
|
66
|
+
expect(path_helper.windows_max_length_exceeded?("\\\\?\\C:\\" + "a" * 250 + "\\" + "b" * 250)).to be_false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "printable?" do
|
71
|
+
it "returns true if the string contains no non-printable characters" do
|
72
|
+
expect(path_helper.printable?("C:\\Program Files (x86)\\Microsoft Office\\Files.lst")).to be_true
|
73
|
+
end
|
74
|
+
|
75
|
+
it "returns true when given 'abc' in unicode" do
|
76
|
+
expect(path_helper.printable?("\u0061\u0062\u0063")).to be_true
|
77
|
+
end
|
78
|
+
|
79
|
+
it "returns true when given japanese unicode" do
|
80
|
+
expect(path_helper.printable?("\uff86\uff87\uff88")).to be_true
|
81
|
+
end
|
82
|
+
|
83
|
+
it "returns false if the string contains a non-printable character" do
|
84
|
+
expect(path_helper.printable?("\my files\work\notes.txt")).to be_false
|
85
|
+
end
|
86
|
+
|
87
|
+
# This isn't necessarily a requirement, but here to be explicit about functionality.
|
88
|
+
it "returns false if the string contains a newline or tab" do
|
89
|
+
expect(path_helper.printable?("\tThere's no way,\n\t *no* way,\n\t that you came from my loins.\n")).to be_false
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "canonical_path" do
|
94
|
+
context "on windows", :windows_only do
|
95
|
+
it "returns an absolute path with backslashes instead of slashes" do
|
96
|
+
expect(path_helper.canonical_path("\\\\?\\C:/windows/win.ini")).to eq("\\\\?\\c:\\windows\\win.ini")
|
97
|
+
end
|
98
|
+
|
99
|
+
it "adds the \\\\?\\ prefix if it is missing" do
|
100
|
+
expect(path_helper.canonical_path("C:/windows/win.ini")).to eq("\\\\?\\c:\\windows\\win.ini")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "returns a lowercase path" do
|
104
|
+
expect(path_helper.canonical_path("\\\\?\\C:\\CASE\\INSENSITIVE")).to eq("\\\\?\\c:\\case\\insensitive")
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "not on windows", :unix_only do
|
109
|
+
context "ruby is at least 1.9", :ruby_gte_19_only do
|
110
|
+
it "returns a canonical path" do
|
111
|
+
expect(path_helper.canonical_path("/etc//apache.d/sites-enabled/../sites-available/default")).to eq("/etc/apache.d/sites-available/default")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "ruby is less than 1.9", :ruby_18_only do
|
116
|
+
it "returns a canonical path" do
|
117
|
+
expect { path_helper.canonical_path("/etc//apache.d/sites-enabled/../sites-available/default") }.to raise_error(NotImplementedError)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "paths_eql?" do
|
124
|
+
it "returns true if the paths are the same" do
|
125
|
+
path_helper.stub(:canonical_path).with("bandit").and_return("c:/bandit/bandit")
|
126
|
+
path_helper.stub(:canonical_path).with("../bandit/bandit").and_return("c:/bandit/bandit")
|
127
|
+
expect(path_helper.paths_eql?("bandit", "../bandit/bandit")).to be_true
|
128
|
+
end
|
129
|
+
|
130
|
+
it "returns false if the paths are different" do
|
131
|
+
path_helper.stub(:canonical_path).with("bandit").and_return("c:/Bo/Bandit")
|
132
|
+
path_helper.stub(:canonical_path).with("../bandit/bandit").and_return("c:/bandit/bandit")
|
133
|
+
expect(path_helper.paths_eql?("bandit", "../bandit/bandit")).to be_false
|
134
|
+
end
|
135
|
+
end
|
136
|
+
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: 11.14.0.alpha.
|
4
|
+
version: 11.14.0.alpha.4
|
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-
|
11
|
+
date: 2014-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-config
|
@@ -279,47 +279,47 @@ dependencies:
|
|
279
279
|
- !ruby/object:Gem::Version
|
280
280
|
version: '0.9'
|
281
281
|
- !ruby/object:Gem::Dependency
|
282
|
-
name:
|
282
|
+
name: rack
|
283
283
|
requirement: !ruby/object:Gem::Requirement
|
284
284
|
requirements:
|
285
|
-
- - "
|
285
|
+
- - ">="
|
286
286
|
- !ruby/object:Gem::Version
|
287
|
-
version:
|
287
|
+
version: '0'
|
288
288
|
type: :development
|
289
289
|
prerelease: false
|
290
290
|
version_requirements: !ruby/object:Gem::Requirement
|
291
291
|
requirements:
|
292
|
-
- - "
|
292
|
+
- - ">="
|
293
293
|
- !ruby/object:Gem::Version
|
294
|
-
version:
|
294
|
+
version: '0'
|
295
295
|
- !ruby/object:Gem::Dependency
|
296
|
-
name:
|
296
|
+
name: rake
|
297
297
|
requirement: !ruby/object:Gem::Requirement
|
298
298
|
requirements:
|
299
|
-
- - "
|
299
|
+
- - "~>"
|
300
300
|
- !ruby/object:Gem::Version
|
301
|
-
version:
|
301
|
+
version: 10.1.0
|
302
302
|
type: :development
|
303
303
|
prerelease: false
|
304
304
|
version_requirements: !ruby/object:Gem::Requirement
|
305
305
|
requirements:
|
306
|
-
- - "
|
306
|
+
- - "~>"
|
307
307
|
- !ruby/object:Gem::Version
|
308
|
-
version:
|
308
|
+
version: 10.1.0
|
309
309
|
- !ruby/object:Gem::Dependency
|
310
310
|
name: rspec_junit_formatter
|
311
311
|
requirement: !ruby/object:Gem::Requirement
|
312
312
|
requirements:
|
313
|
-
- - "
|
313
|
+
- - "~>"
|
314
314
|
- !ruby/object:Gem::Version
|
315
|
-
version:
|
315
|
+
version: 0.1.0
|
316
316
|
type: :development
|
317
317
|
prerelease: false
|
318
318
|
version_requirements: !ruby/object:Gem::Requirement
|
319
319
|
requirements:
|
320
|
-
- - "
|
320
|
+
- - "~>"
|
321
321
|
- !ruby/object:Gem::Version
|
322
|
-
version:
|
322
|
+
version: 0.1.0
|
323
323
|
- !ruby/object:Gem::Dependency
|
324
324
|
name: rspec-core
|
325
325
|
requirement: !ruby/object:Gem::Requirement
|
@@ -957,6 +957,7 @@ files:
|
|
957
957
|
- lib/chef/provider/mount.rb
|
958
958
|
- lib/chef/provider/mount/aix.rb
|
959
959
|
- lib/chef/provider/mount/mount.rb
|
960
|
+
- lib/chef/provider/mount/solaris.rb
|
960
961
|
- lib/chef/provider/mount/windows.rb
|
961
962
|
- lib/chef/provider/ohai.rb
|
962
963
|
- lib/chef/provider/package.rb
|
@@ -1123,6 +1124,7 @@ files:
|
|
1123
1124
|
- lib/chef/util/diff.rb
|
1124
1125
|
- lib/chef/util/editor.rb
|
1125
1126
|
- lib/chef/util/file_edit.rb
|
1127
|
+
- lib/chef/util/path_helper.rb
|
1126
1128
|
- lib/chef/util/selinux.rb
|
1127
1129
|
- lib/chef/util/threaded_job_queue.rb
|
1128
1130
|
- lib/chef/util/windows.rb
|
@@ -1409,6 +1411,7 @@ files:
|
|
1409
1411
|
- spec/data/trusted_certs/intermediate.pem
|
1410
1412
|
- spec/data/trusted_certs/opscode.pem
|
1411
1413
|
- spec/data/trusted_certs/root.pem
|
1414
|
+
- spec/functional/application_spec.rb
|
1412
1415
|
- spec/functional/assets/PkgA.1.0.0.0.bff
|
1413
1416
|
- spec/functional/assets/PkgA.2.0.0.0.bff
|
1414
1417
|
- spec/functional/assets/dummy-1-0.aix6.1.noarch.rpm
|
@@ -1576,6 +1579,7 @@ files:
|
|
1576
1579
|
- spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb
|
1577
1580
|
- spec/unit/handler/json_file_spec.rb
|
1578
1581
|
- spec/unit/handler_spec.rb
|
1582
|
+
- spec/unit/http/basic_client_spec.rb
|
1579
1583
|
- spec/unit/http/simple_spec.rb
|
1580
1584
|
- spec/unit/http/ssl_policies_spec.rb
|
1581
1585
|
- spec/unit/http/validate_content_length_spec.rb
|
@@ -1690,6 +1694,7 @@ files:
|
|
1690
1694
|
- spec/unit/provider/deploy/timestamped_spec.rb
|
1691
1695
|
- spec/unit/provider/deploy_spec.rb
|
1692
1696
|
- spec/unit/provider/directory_spec.rb
|
1697
|
+
- spec/unit/provider/env/windows_spec.rb
|
1693
1698
|
- spec/unit/provider/env_spec.rb
|
1694
1699
|
- spec/unit/provider/erl_call_spec.rb
|
1695
1700
|
- spec/unit/provider/execute_spec.rb
|
@@ -1714,6 +1719,7 @@ files:
|
|
1714
1719
|
- spec/unit/provider/mdadm_spec.rb
|
1715
1720
|
- spec/unit/provider/mount/aix_spec.rb
|
1716
1721
|
- spec/unit/provider/mount/mount_spec.rb
|
1722
|
+
- spec/unit/provider/mount/solaris_spec.rb
|
1717
1723
|
- spec/unit/provider/mount/windows_spec.rb
|
1718
1724
|
- spec/unit/provider/mount_spec.rb
|
1719
1725
|
- spec/unit/provider/ohai_spec.rb
|
@@ -1865,6 +1871,7 @@ files:
|
|
1865
1871
|
- spec/unit/util/diff_spec.rb
|
1866
1872
|
- spec/unit/util/editor_spec.rb
|
1867
1873
|
- spec/unit/util/file_edit_spec.rb
|
1874
|
+
- spec/unit/util/path_helper_spec.rb
|
1868
1875
|
- spec/unit/util/selinux_spec.rb
|
1869
1876
|
- spec/unit/util/threaded_job_queue_spec.rb
|
1870
1877
|
- spec/unit/version/platform_spec.rb
|