test-kitchen 1.14.1 → 1.14.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Berksfile +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +1 -1
- data/Guardfile +5 -5
- data/Rakefile +5 -5
- data/bin/kitchen +1 -1
- data/features/step_definitions/gem_steps.rb +6 -6
- data/features/support/env.rb +6 -7
- data/lib/kitchen.rb +5 -7
- data/lib/kitchen/base64_stream.rb +2 -8
- data/lib/kitchen/cli.rb +76 -80
- data/lib/kitchen/collection.rb +0 -2
- data/lib/kitchen/color.rb +7 -9
- data/lib/kitchen/command.rb +0 -4
- data/lib/kitchen/command/action.rb +0 -3
- data/lib/kitchen/command/console.rb +4 -7
- data/lib/kitchen/command/diagnose.rb +7 -14
- data/lib/kitchen/command/driver_discover.rb +1 -4
- data/lib/kitchen/command/exec.rb +0 -3
- data/lib/kitchen/command/list.rb +9 -12
- data/lib/kitchen/command/login.rb +0 -3
- data/lib/kitchen/command/package.rb +0 -3
- data/lib/kitchen/command/sink.rb +6 -9
- data/lib/kitchen/command/test.rb +1 -4
- data/lib/kitchen/config.rb +25 -27
- data/lib/kitchen/configurable.rb +26 -31
- data/lib/kitchen/data_munger.rb +34 -36
- data/lib/kitchen/diagnostic.rb +5 -7
- data/lib/kitchen/driver.rb +3 -5
- data/lib/kitchen/driver/base.rb +0 -3
- data/lib/kitchen/driver/dummy.rb +0 -3
- data/lib/kitchen/driver/proxy.rb +0 -3
- data/lib/kitchen/driver/ssh_base.rb +13 -16
- data/lib/kitchen/errors.rb +11 -16
- data/lib/kitchen/generator/driver_create.rb +18 -21
- data/lib/kitchen/generator/init.rb +21 -26
- data/lib/kitchen/instance.rb +19 -23
- data/lib/kitchen/lazy_hash.rb +1 -2
- data/lib/kitchen/loader/yaml.rb +22 -25
- data/lib/kitchen/logger.rb +9 -14
- data/lib/kitchen/logging.rb +0 -3
- data/lib/kitchen/login_command.rb +0 -2
- data/lib/kitchen/metadata_chopper.rb +0 -2
- data/lib/kitchen/platform.rb +1 -3
- data/lib/kitchen/provisioner.rb +3 -5
- data/lib/kitchen/provisioner/base.rb +2 -5
- data/lib/kitchen/provisioner/chef/berkshelf.rb +1 -5
- data/lib/kitchen/provisioner/chef/common_sandbox.rb +24 -29
- data/lib/kitchen/provisioner/chef/librarian.rb +2 -6
- data/lib/kitchen/provisioner/chef/policyfile.rb +4 -8
- data/lib/kitchen/provisioner/chef_apply.rb +14 -17
- data/lib/kitchen/provisioner/chef_base.rb +43 -46
- data/lib/kitchen/provisioner/chef_solo.rb +10 -13
- data/lib/kitchen/provisioner/chef_zero.rb +22 -29
- data/lib/kitchen/provisioner/dummy.rb +0 -3
- data/lib/kitchen/provisioner/shell.rb +6 -9
- data/lib/kitchen/rake_tasks.rb +4 -6
- data/lib/kitchen/shell_out.rb +3 -5
- data/lib/kitchen/ssh.rb +16 -22
- data/lib/kitchen/state_file.rb +3 -5
- data/lib/kitchen/suite.rb +0 -2
- data/lib/kitchen/thor_tasks.rb +2 -4
- data/lib/kitchen/transport.rb +3 -5
- data/lib/kitchen/transport/base.rb +1 -7
- data/lib/kitchen/transport/dummy.rb +0 -4
- data/lib/kitchen/transport/ssh.rb +41 -47
- data/lib/kitchen/transport/winrm.rb +41 -40
- data/lib/kitchen/util.rb +1 -3
- data/lib/kitchen/verifier.rb +3 -5
- data/lib/kitchen/verifier/base.rb +2 -5
- data/lib/kitchen/verifier/busser.rb +24 -24
- data/lib/kitchen/verifier/dummy.rb +0 -3
- data/lib/kitchen/verifier/shell.rb +1 -3
- data/lib/kitchen/version.rb +1 -1
- data/lib/vendor/hash_recursive_merge.rb +0 -2
- data/spec/kitchen/base64_stream_spec.rb +3 -6
- data/spec/kitchen/cli_spec.rb +0 -2
- data/spec/kitchen/collection_spec.rb +4 -8
- data/spec/kitchen/color_spec.rb +0 -3
- data/spec/kitchen/config_spec.rb +91 -106
- data/spec/kitchen/configurable_spec.rb +44 -76
- data/spec/kitchen/data_munger_spec.rb +1178 -1247
- data/spec/kitchen/diagnostic_spec.rb +37 -38
- data/spec/kitchen/driver/base_spec.rb +7 -14
- data/spec/kitchen/driver/dummy_spec.rb +1 -7
- data/spec/kitchen/driver/proxy_spec.rb +2 -7
- data/spec/kitchen/driver/ssh_base_spec.rb +128 -149
- data/spec/kitchen/driver_spec.rb +7 -13
- data/spec/kitchen/errors_spec.rb +50 -60
- data/spec/kitchen/instance_spec.rb +217 -294
- data/spec/kitchen/lazy_hash_spec.rb +14 -18
- data/spec/kitchen/loader/yaml_spec.rb +201 -227
- data/spec/kitchen/logger_spec.rb +7 -15
- data/spec/kitchen/logging_spec.rb +1 -4
- data/spec/kitchen/login_command_spec.rb +3 -4
- data/spec/kitchen/metadata_chopper_spec.rb +0 -3
- data/spec/kitchen/platform_spec.rb +31 -32
- data/spec/kitchen/provisioner/base_spec.rb +22 -41
- data/spec/kitchen/provisioner/chef/policyfile_spec.rb +15 -15
- data/spec/kitchen/provisioner/chef_apply_spec.rb +8 -13
- data/spec/kitchen/provisioner/chef_base_spec.rb +150 -182
- data/spec/kitchen/provisioner/chef_solo_spec.rb +58 -72
- data/spec/kitchen/provisioner/chef_zero_spec.rb +99 -125
- data/spec/kitchen/provisioner/dummy_spec.rb +8 -11
- data/spec/kitchen/provisioner/shell_spec.rb +86 -103
- data/spec/kitchen/provisioner_spec.rb +5 -11
- data/spec/kitchen/shell_out_spec.rb +15 -19
- data/spec/kitchen/ssh_spec.rb +16 -35
- data/spec/kitchen/state_file_spec.rb +6 -11
- data/spec/kitchen/suite_spec.rb +5 -6
- data/spec/kitchen/transport/base_spec.rb +6 -14
- data/spec/kitchen/transport/ssh_spec.rb +39 -64
- data/spec/kitchen/transport/winrm_spec.rb +99 -127
- data/spec/kitchen/transport_spec.rb +7 -13
- data/spec/kitchen/util_spec.rb +17 -26
- data/spec/kitchen/verifier/base_spec.rb +24 -40
- data/spec/kitchen/verifier/busser_spec.rb +38 -68
- data/spec/kitchen/verifier/dummy_spec.rb +8 -11
- data/spec/kitchen/verifier/shell_spec.rb +14 -17
- data/spec/kitchen/verifier_spec.rb +7 -13
- data/spec/kitchen_spec.rb +4 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/powershell_max_size_spec.rb +1 -2
- data/support/chef-client-zero.rb +3 -4
- data/test-kitchen.gemspec +4 -6
- metadata +9 -9
@@ -23,11 +23,11 @@ describe Kitchen::Provisioner::Chef::Policyfile do
|
|
23
23
|
let(:policyfile) { "" }
|
24
24
|
let(:path) { "" }
|
25
25
|
let(:null_logger) do
|
26
|
-
stub(:
|
27
|
-
:
|
26
|
+
stub(fatal: nil, error: nil, warn: nil, info: nil,
|
27
|
+
debug: nil, banner: nil)
|
28
28
|
end
|
29
29
|
let(:described_object) do
|
30
|
-
Kitchen::Provisioner::Chef::Policyfile.new(policyfile, path, :
|
30
|
+
Kitchen::Provisioner::Chef::Policyfile.new(policyfile, path, logger: null_logger)
|
31
31
|
end
|
32
32
|
let(:os) { "" }
|
33
33
|
before do
|
@@ -64,7 +64,7 @@ describe Kitchen::Provisioner::Chef::Policyfile do
|
|
64
64
|
let(:policyfile) { "/home/jenkins/My Chef Cookbook/workspace/current/Policyfile.rb" }
|
65
65
|
let(:path) { "/tmp/kitchen/cookbooks" }
|
66
66
|
it do
|
67
|
-
described_object.expects(:run_command).with(
|
67
|
+
described_object.expects(:run_command).with('chef export /home/jenkins/My\\ Chef\\ Cookbook/workspace/current/Policyfile.rb /tmp/kitchen/cookbooks --force')
|
68
68
|
subject
|
69
69
|
end
|
70
70
|
end
|
@@ -74,19 +74,19 @@ describe Kitchen::Provisioner::Chef::Policyfile do
|
|
74
74
|
let(:os) { "mswin" }
|
75
75
|
|
76
76
|
describe "with simple paths" do
|
77
|
-
let(:policyfile) {
|
78
|
-
let(:path) {
|
77
|
+
let(:policyfile) { 'C:\\cookbook\\Policyfile.rb' }
|
78
|
+
let(:path) { 'C:\\Temp\\kitchen\\cookbooks' }
|
79
79
|
it do
|
80
|
-
described_object.expects(:run_command).with(
|
80
|
+
described_object.expects(:run_command).with('chef export C:\\cookbook\\Policyfile.rb C:\\Temp\\kitchen\\cookbooks --force')
|
81
81
|
subject
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
85
|
describe "with Jenkins-y paths" do
|
86
|
-
let(:policyfile) {
|
87
|
-
let(:path) {
|
86
|
+
let(:policyfile) { 'C:\\Program Files\\Jenkins\\My Chef Cookbook\\workspace\\current\\Policyfile.rb' }
|
87
|
+
let(:path) { 'C:\\Temp\\kitchen\\cookbooks' }
|
88
88
|
it do
|
89
|
-
described_object.expects(:run_command).with(
|
89
|
+
described_object.expects(:run_command).with('chef export "C:\\\\Program\\ Files\\\\Jenkins\\\\My\\ Chef\\ Cookbook\\\\workspace\\\\current\\\\Policyfile.rb" C:\\Temp\\kitchen\\cookbooks --force')
|
90
90
|
subject
|
91
91
|
end
|
92
92
|
end
|
@@ -110,7 +110,7 @@ describe Kitchen::Provisioner::Chef::Policyfile do
|
|
110
110
|
describe "with Jenkins-y paths" do
|
111
111
|
let(:policyfile) { "/home/jenkins/My Chef Cookbook/workspace/current/Policyfile.rb" }
|
112
112
|
it do
|
113
|
-
described_object.expects(:run_command).with(
|
113
|
+
described_object.expects(:run_command).with('chef install /home/jenkins/My\\ Chef\\ Cookbook/workspace/current/Policyfile.rb')
|
114
114
|
subject
|
115
115
|
end
|
116
116
|
end
|
@@ -120,17 +120,17 @@ describe Kitchen::Provisioner::Chef::Policyfile do
|
|
120
120
|
let(:os) { "mswin" }
|
121
121
|
|
122
122
|
describe "with simple paths" do
|
123
|
-
let(:policyfile) {
|
123
|
+
let(:policyfile) { 'C:\\cookbook\\Policyfile.rb' }
|
124
124
|
it do
|
125
|
-
described_object.expects(:run_command).with(
|
125
|
+
described_object.expects(:run_command).with('chef install C:\\cookbook\\Policyfile.rb')
|
126
126
|
subject
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
130
|
describe "with Jenkins-y paths" do
|
131
|
-
let(:policyfile) {
|
131
|
+
let(:policyfile) { 'C:\\Program Files\\Jenkins\\My Chef Cookbook\\workspace\\current\\Policyfile.rb' }
|
132
132
|
it do
|
133
|
-
described_object.expects(:run_command).with(
|
133
|
+
described_object.expects(:run_command).with('chef install "C:\\\\Program\\ Files\\\\Jenkins\\\\My\\ Chef\\ Cookbook\\\\workspace\\\\current\\\\Policyfile.rb"')
|
134
134
|
subject
|
135
135
|
end
|
136
136
|
end
|
@@ -22,22 +22,21 @@ require "kitchen"
|
|
22
22
|
require "kitchen/provisioner/chef_apply"
|
23
23
|
|
24
24
|
describe Kitchen::Provisioner::ChefApply do
|
25
|
-
|
26
25
|
let(:logged_output) { StringIO.new }
|
27
26
|
let(:logger) { Logger.new(logged_output) }
|
28
|
-
let(:platform) { stub(:
|
29
|
-
let(:suite) { stub(:
|
27
|
+
let(:platform) { stub(os_type: nil) }
|
28
|
+
let(:suite) { stub(name: "fries") }
|
30
29
|
|
31
30
|
let(:config) do
|
32
|
-
{ :
|
31
|
+
{ test_base_path: "/b", kitchen_root: "/r" }
|
33
32
|
end
|
34
33
|
|
35
34
|
let(:instance) do
|
36
35
|
stub(
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
36
|
+
name: "coolbeans",
|
37
|
+
logger: logger,
|
38
|
+
suite: suite,
|
39
|
+
platform: platform
|
41
40
|
)
|
42
41
|
end
|
43
42
|
|
@@ -54,7 +53,6 @@ describe Kitchen::Provisioner::ChefApply do
|
|
54
53
|
end
|
55
54
|
|
56
55
|
describe "default config" do
|
57
|
-
|
58
56
|
it "sets :chef_apply_path to a path using :chef_omnibus_root" do
|
59
57
|
config[:chef_omnibus_root] = "/nice/place"
|
60
58
|
|
@@ -63,7 +61,6 @@ describe Kitchen::Provisioner::ChefApply do
|
|
63
61
|
end
|
64
62
|
|
65
63
|
describe "#create_sandbox" do
|
66
|
-
|
67
64
|
before do
|
68
65
|
@root = Dir.mktmpdir
|
69
66
|
config[:kitchen_root] = @root
|
@@ -79,15 +76,13 @@ describe Kitchen::Provisioner::ChefApply do
|
|
79
76
|
end
|
80
77
|
|
81
78
|
describe "#run_command" do
|
82
|
-
|
83
79
|
before do
|
84
|
-
config[:run_list] = %w
|
80
|
+
config[:run_list] = %w{appry_recipe1 appry_recipe2}
|
85
81
|
end
|
86
82
|
|
87
83
|
let(:cmd) { provisioner.run_command }
|
88
84
|
|
89
85
|
describe "for bourne shells" do
|
90
|
-
|
91
86
|
before { platform.stubs(:shell_type).returns("bourne") }
|
92
87
|
|
93
88
|
it "uses bourne shell" do
|
@@ -22,45 +22,42 @@ require "kitchen"
|
|
22
22
|
require "kitchen/provisioner/chef_base"
|
23
23
|
|
24
24
|
describe Kitchen::Provisioner::ChefBase do
|
25
|
-
|
26
25
|
let(:logged_output) { StringIO.new }
|
27
26
|
let(:logger) { Logger.new(logged_output) }
|
28
|
-
let(:platform) { stub(:
|
29
|
-
let(:driver) { stub(:
|
30
|
-
let(:suite) { stub(:
|
27
|
+
let(:platform) { stub(os_type: nil) }
|
28
|
+
let(:driver) { stub(cache_directory: nil) }
|
29
|
+
let(:suite) { stub(name: "fries") }
|
31
30
|
let(:default_version) { true }
|
32
31
|
|
33
32
|
let(:config) do
|
34
|
-
{ :
|
33
|
+
{ test_base_path: "/basist", kitchen_root: "/rooty" }
|
35
34
|
end
|
36
35
|
|
37
36
|
let(:instance) do
|
38
37
|
stub(
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
38
|
+
name: "coolbeans",
|
39
|
+
logger: logger,
|
40
|
+
suite: suite,
|
41
|
+
platform: platform,
|
42
|
+
driver: driver
|
44
43
|
)
|
45
44
|
end
|
46
45
|
|
47
46
|
let(:provisioner) do
|
48
|
-
Class.new(Kitchen::Provisioner::ChefBase)
|
47
|
+
Class.new(Kitchen::Provisioner::ChefBase) do
|
49
48
|
def calculate_path(path, _opts = {})
|
50
49
|
"<calculated>/#{path}"
|
51
50
|
end
|
52
|
-
|
51
|
+
end.new(config).finalize_config!(instance)
|
53
52
|
end
|
54
53
|
|
55
54
|
describe "configuration" do
|
56
|
-
|
57
55
|
describe "for unix operating systems" do
|
58
|
-
|
59
56
|
before { platform.stubs(:os_type).returns("unix") }
|
60
57
|
|
61
58
|
it ":chef_omnibus_url has a default" do
|
62
|
-
provisioner[:chef_omnibus_url]
|
63
|
-
must_equal "https://omnitruck.chef.io/install.sh"
|
59
|
+
provisioner[:chef_omnibus_url]
|
60
|
+
.must_equal "https://omnitruck.chef.io/install.sh"
|
64
61
|
end
|
65
62
|
|
66
63
|
it ":chef_metadata_url defaults to nil" do
|
@@ -69,12 +66,11 @@ describe Kitchen::Provisioner::ChefBase do
|
|
69
66
|
end
|
70
67
|
|
71
68
|
describe "for windows operating systems" do
|
72
|
-
|
73
69
|
before { platform.stubs(:os_type).returns("windows") }
|
74
70
|
|
75
71
|
it ":chef_omnibus_url has a default" do
|
76
|
-
provisioner[:chef_omnibus_url]
|
77
|
-
must_equal "https://omnitruck.chef.io/install.sh"
|
72
|
+
provisioner[:chef_omnibus_url]
|
73
|
+
.must_equal "https://omnitruck.chef.io/install.sh"
|
78
74
|
end
|
79
75
|
end
|
80
76
|
|
@@ -103,58 +99,57 @@ describe Kitchen::Provisioner::ChefBase do
|
|
103
99
|
end
|
104
100
|
|
105
101
|
it ":data_path uses calculate_path and is expanded" do
|
106
|
-
provisioner[:data_path]
|
107
|
-
must_equal os_safe_root_path("/rooty/<calculated>/data")
|
102
|
+
provisioner[:data_path]
|
103
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/data")
|
108
104
|
end
|
109
105
|
|
110
106
|
it ":data_bags_path uses calculate_path and is expanded" do
|
111
|
-
provisioner[:data_bags_path]
|
112
|
-
must_equal os_safe_root_path("/rooty/<calculated>/data_bags")
|
107
|
+
provisioner[:data_bags_path]
|
108
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/data_bags")
|
113
109
|
end
|
114
110
|
|
115
111
|
it ":environments_path uses calculate_path and is expanded" do
|
116
|
-
provisioner[:environments_path]
|
117
|
-
must_equal os_safe_root_path("/rooty/<calculated>/environments")
|
112
|
+
provisioner[:environments_path]
|
113
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/environments")
|
118
114
|
end
|
119
115
|
|
120
116
|
it ":nodes_path uses calculate_path and is expanded" do
|
121
|
-
provisioner[:nodes_path]
|
122
|
-
must_equal os_safe_root_path("/rooty/<calculated>/nodes")
|
117
|
+
provisioner[:nodes_path]
|
118
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/nodes")
|
123
119
|
end
|
124
120
|
|
125
121
|
it ":roles_path uses calculate_path and is expanded" do
|
126
|
-
provisioner[:roles_path]
|
127
|
-
must_equal os_safe_root_path("/rooty/<calculated>/roles")
|
122
|
+
provisioner[:roles_path]
|
123
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/roles")
|
128
124
|
end
|
129
125
|
|
130
126
|
it ":clients_path uses calculate_path and is expanded" do
|
131
|
-
provisioner[:clients_path]
|
132
|
-
must_equal os_safe_root_path("/rooty/<calculated>/clients")
|
127
|
+
provisioner[:clients_path]
|
128
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/clients")
|
133
129
|
end
|
134
130
|
|
135
131
|
it "...secret_key_path uses calculate_path and is expanded" do
|
136
|
-
provisioner[:encrypted_data_bag_secret_key_path]
|
137
|
-
must_equal os_safe_root_path("/rooty/<calculated>/encrypted_data_bag_secret_key")
|
132
|
+
provisioner[:encrypted_data_bag_secret_key_path]
|
133
|
+
.must_equal os_safe_root_path("/rooty/<calculated>/encrypted_data_bag_secret_key")
|
138
134
|
end
|
139
135
|
end
|
140
136
|
|
141
137
|
describe "#install_command" do
|
142
|
-
|
143
138
|
before do
|
144
139
|
platform.stubs(:shell_type).returns("bourne")
|
145
140
|
Mixlib::Install::ScriptGenerator.stubs(:new).returns(installer)
|
146
141
|
end
|
147
142
|
|
148
|
-
let(:installer) { stub(:
|
143
|
+
let(:installer) { stub(root: "/rooty", install_command: "make_it_so") }
|
149
144
|
|
150
145
|
let(:cmd) { provisioner.install_command }
|
151
146
|
|
152
|
-
let(:install_opts)
|
153
|
-
{ :
|
154
|
-
:
|
155
|
-
:
|
147
|
+
let(:install_opts) do
|
148
|
+
{ omnibus_url: "https://omnitruck.chef.io/install.sh",
|
149
|
+
project: nil, install_flags: nil,
|
150
|
+
sudo_command: "sudo -E", http_proxy: nil, https_proxy: nil
|
156
151
|
}
|
157
|
-
|
152
|
+
end
|
158
153
|
|
159
154
|
it "returns nil if :require_chef_omnibus is falsey" do
|
160
155
|
config[:require_chef_omnibus] = false
|
@@ -171,8 +166,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
171
166
|
end
|
172
167
|
|
173
168
|
it "passes sensible defaults" do
|
174
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
175
|
-
|
169
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
170
|
+
.with(default_version, false, install_opts).returns(installer)
|
176
171
|
cmd
|
177
172
|
end
|
178
173
|
|
@@ -180,8 +175,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
180
175
|
config[:http_proxy] = "http://proxy"
|
181
176
|
install_opts[:http_proxy] = "http://proxy"
|
182
177
|
|
183
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
184
|
-
|
178
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
179
|
+
.with(default_version, false, install_opts).returns(installer)
|
185
180
|
cmd
|
186
181
|
end
|
187
182
|
|
@@ -189,8 +184,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
189
184
|
config[:https_proxy] = "https://proxy"
|
190
185
|
install_opts[:https_proxy] = "https://proxy"
|
191
186
|
|
192
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
193
|
-
|
187
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
188
|
+
.with(default_version, false, install_opts).returns(installer)
|
194
189
|
cmd
|
195
190
|
end
|
196
191
|
|
@@ -200,8 +195,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
200
195
|
install_opts[:http_proxy] = "http://proxy"
|
201
196
|
install_opts[:https_proxy] = "https://proxy"
|
202
197
|
|
203
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
204
|
-
|
198
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
199
|
+
.with(default_version, false, install_opts).returns(installer)
|
205
200
|
cmd
|
206
201
|
end
|
207
202
|
|
@@ -209,32 +204,32 @@ describe Kitchen::Provisioner::ChefBase do
|
|
209
204
|
config[:chef_omnibus_url] = "FROM_HERE"
|
210
205
|
install_opts[:omnibus_url] = "FROM_HERE"
|
211
206
|
|
212
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
213
|
-
|
207
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
208
|
+
.with(default_version, false, install_opts).returns(installer)
|
214
209
|
cmd
|
215
210
|
end
|
216
211
|
|
217
212
|
it "will install a specific version of chef, if necessary" do
|
218
213
|
config[:require_chef_omnibus] = "1.2.3"
|
219
214
|
|
220
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
221
|
-
|
215
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
216
|
+
.with("1.2.3", false, install_opts).returns(installer)
|
222
217
|
cmd
|
223
218
|
end
|
224
219
|
|
225
220
|
it "will install a major/minor version of chef, if necessary" do
|
226
221
|
config[:require_chef_omnibus] = "11.10"
|
227
222
|
|
228
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
229
|
-
|
223
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
224
|
+
.with("11.10", false, install_opts).returns(installer)
|
230
225
|
cmd
|
231
226
|
end
|
232
227
|
|
233
228
|
it "will install a major version of chef, if necessary" do
|
234
229
|
config[:require_chef_omnibus] = "12"
|
235
230
|
|
236
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
237
|
-
|
231
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
232
|
+
.with("12", false, install_opts).returns(installer)
|
238
233
|
cmd
|
239
234
|
end
|
240
235
|
|
@@ -253,16 +248,16 @@ describe Kitchen::Provisioner::ChefBase do
|
|
253
248
|
it "will install the latest chef, if necessary" do
|
254
249
|
config[:require_chef_omnibus] = "latest"
|
255
250
|
|
256
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
257
|
-
|
251
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
252
|
+
.with("latest", false, install_opts).returns(installer)
|
258
253
|
cmd
|
259
254
|
end
|
260
255
|
|
261
256
|
it "will install a version of chef, unless it exists" do
|
262
257
|
config[:require_chef_omnibus] = true
|
263
258
|
|
264
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
265
|
-
|
259
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
260
|
+
.with(default_version, false, install_opts).returns(installer)
|
266
261
|
cmd
|
267
262
|
end
|
268
263
|
|
@@ -271,8 +266,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
271
266
|
install_opts[:install_flags] = "-P chefdk"
|
272
267
|
install_opts[:project] = "chefdk"
|
273
268
|
|
274
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
275
|
-
|
269
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
270
|
+
.with(default_version, false, install_opts).returns(installer)
|
276
271
|
cmd
|
277
272
|
end
|
278
273
|
|
@@ -281,8 +276,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
281
276
|
config[:chef_omnibus_install_options] = "-d /tmp/place"
|
282
277
|
install_opts[:install_flags] = "-d /tmp/place"
|
283
278
|
|
284
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
285
|
-
|
279
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
280
|
+
.with("11", false, install_opts).returns(installer)
|
286
281
|
cmd
|
287
282
|
end
|
288
283
|
|
@@ -290,8 +285,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
290
285
|
config[:chef_omnibus_root] = "/tmp/test"
|
291
286
|
install_opts[:root] = "/tmp/test"
|
292
287
|
|
293
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
294
|
-
|
288
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
289
|
+
.with(default_version, false, install_opts).returns(installer)
|
295
290
|
cmd
|
296
291
|
end
|
297
292
|
|
@@ -299,8 +294,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
299
294
|
config[:install_msi_url] = "http://blah/blah.msi"
|
300
295
|
install_opts[:install_msi_url] = "http://blah/blah.msi"
|
301
296
|
|
302
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
303
|
-
|
297
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
298
|
+
.with(default_version, false, install_opts).returns(installer)
|
304
299
|
cmd
|
305
300
|
end
|
306
301
|
|
@@ -322,8 +317,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
322
317
|
it "will use driver.cache_directory to provide a cache directory" do
|
323
318
|
install_opts[:install_flags] = "-d /tmp/custom/place"
|
324
319
|
|
325
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
326
|
-
|
320
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
321
|
+
.with(default_version, false, install_opts).returns(installer)
|
327
322
|
cmd
|
328
323
|
end
|
329
324
|
|
@@ -332,8 +327,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
332
327
|
install_opts[:install_flags] = "-P cool -v 123 -d /tmp/custom/place"
|
333
328
|
install_opts[:project] = "cool"
|
334
329
|
|
335
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
336
|
-
|
330
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
331
|
+
.with(default_version, false, install_opts).returns(installer)
|
337
332
|
cmd
|
338
333
|
end
|
339
334
|
|
@@ -342,8 +337,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
342
337
|
install_opts[:install_flags] = "-P cool -d /path -v 123"
|
343
338
|
install_opts[:project] = "cool"
|
344
339
|
|
345
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
346
|
-
|
340
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
341
|
+
.with(default_version, false, install_opts).returns(installer)
|
347
342
|
cmd
|
348
343
|
end
|
349
344
|
end
|
@@ -436,8 +431,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
436
431
|
install_opts_clone = install_opts.clone
|
437
432
|
install_opts_clone[:sudo_command] = config[:sudo_command]
|
438
433
|
|
439
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
440
|
-
|
434
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
435
|
+
.with(default_version, false, install_opts_clone).returns(installer)
|
441
436
|
cmd.must_equal "my_sudo_command my_install_command"
|
442
437
|
end
|
443
438
|
|
@@ -455,8 +450,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
455
450
|
|
456
451
|
install_opts_clone = install_opts.clone
|
457
452
|
install_opts_clone[:sudo_command] = ""
|
458
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
459
|
-
|
453
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
454
|
+
.with(default_version, false, install_opts_clone).returns(installer)
|
460
455
|
cmd.must_equal "my_install_command"
|
461
456
|
end
|
462
457
|
end
|
@@ -472,8 +467,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
472
467
|
it "sets the powershell flag for Mixlib::Install" do
|
473
468
|
install_opts_clone = install_opts.clone
|
474
469
|
install_opts_clone[:sudo_command] = ""
|
475
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
476
|
-
|
470
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
471
|
+
.with(default_version, true, install_opts_clone).returns(installer)
|
477
472
|
cmd
|
478
473
|
end
|
479
474
|
|
@@ -487,16 +482,16 @@ describe Kitchen::Provisioner::ChefBase do
|
|
487
482
|
end
|
488
483
|
|
489
484
|
describe "when driver implements the cache_directory" do
|
490
|
-
before { driver.stubs(:cache_directory).returns(
|
485
|
+
before { driver.stubs(:cache_directory).returns('$env:TEMP\\dummy\\place') }
|
491
486
|
|
492
487
|
it "will have the same behavior on windows" do
|
493
488
|
config[:chef_omnibus_install_options] = "-version 123"
|
494
489
|
install_opts_clone = install_opts.clone
|
495
490
|
install_opts_clone[:sudo_command] = ""
|
496
491
|
install_opts_clone[:install_flags] = "-version 123"
|
497
|
-
install_opts_clone[:install_flags] <<
|
498
|
-
Mixlib::Install::ScriptGenerator.expects(:new)
|
499
|
-
|
492
|
+
install_opts_clone[:install_flags] << ' -download_directory $env:TEMP\\dummy\\place'
|
493
|
+
Mixlib::Install::ScriptGenerator.expects(:new)
|
494
|
+
.with(default_version, true, install_opts_clone).returns(installer)
|
500
495
|
cmd
|
501
496
|
end
|
502
497
|
end
|
@@ -504,11 +499,9 @@ describe Kitchen::Provisioner::ChefBase do
|
|
504
499
|
end
|
505
500
|
|
506
501
|
describe "#init_command" do
|
507
|
-
|
508
502
|
let(:cmd) { provisioner.init_command }
|
509
503
|
|
510
504
|
describe "common behavior" do
|
511
|
-
|
512
505
|
before { platform.stubs(:shell_type).returns("fake") }
|
513
506
|
|
514
507
|
it "prefixs the whole command with the command_prefix if set" do
|
@@ -525,7 +518,6 @@ describe Kitchen::Provisioner::ChefBase do
|
|
525
518
|
end
|
526
519
|
|
527
520
|
describe "for bourne shells" do
|
528
|
-
|
529
521
|
before { platform.stubs(:shell_type).returns("bourne") }
|
530
522
|
|
531
523
|
it "uses bourne shell" do
|
@@ -541,18 +533,18 @@ describe Kitchen::Provisioner::ChefBase do
|
|
541
533
|
config[:http_proxy] = "http://proxy"
|
542
534
|
|
543
535
|
cmd.lines.to_a[1..2].must_equal([
|
544
|
-
|
545
|
-
|
546
|
-
|
536
|
+
%{http_proxy="http://proxy"; export http_proxy\n},
|
537
|
+
%{HTTP_PROXY="http://proxy"; export HTTP_PROXY\n},
|
538
|
+
])
|
547
539
|
end
|
548
540
|
|
549
541
|
it "exports https_proxy & HTTPS_PROXY when :https_proxy is set" do
|
550
542
|
config[:https_proxy] = "https://proxy"
|
551
543
|
|
552
544
|
cmd.lines.to_a[1..2].must_equal([
|
553
|
-
|
554
|
-
|
555
|
-
|
545
|
+
%{https_proxy="https://proxy"; export https_proxy\n},
|
546
|
+
%{HTTPS_PROXY="https://proxy"; export HTTPS_PROXY\n},
|
547
|
+
])
|
556
548
|
end
|
557
549
|
|
558
550
|
it "exports all http proxy variables when both are set" do
|
@@ -560,11 +552,11 @@ describe Kitchen::Provisioner::ChefBase do
|
|
560
552
|
config[:https_proxy] = "https://proxy"
|
561
553
|
|
562
554
|
cmd.lines.to_a[1..4].must_equal([
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
555
|
+
%{http_proxy="http://proxy"; export http_proxy\n},
|
556
|
+
%{HTTP_PROXY="http://proxy"; export HTTP_PROXY\n},
|
557
|
+
%{https_proxy="https://proxy"; export https_proxy\n},
|
558
|
+
%{HTTPS_PROXY="https://proxy"; export HTTPS_PROXY\n},
|
559
|
+
])
|
568
560
|
end
|
569
561
|
|
570
562
|
it "prepends sudo for rm when :sudo is set" do
|
@@ -581,10 +573,10 @@ describe Kitchen::Provisioner::ChefBase do
|
|
581
573
|
|
582
574
|
it "sets chef component dirs for deletion" do
|
583
575
|
config[:root_path] = "/route"
|
584
|
-
dirs = %
|
576
|
+
dirs = %w{
|
585
577
|
/route/clients /route/cookbooks /route/data /route/data_bags
|
586
578
|
/route/encrypted_data_bag_secret /route/environments /route/roles
|
587
|
-
|
579
|
+
}.join(" ")
|
588
580
|
|
589
581
|
cmd.must_match regexify(%{dirs="#{dirs}"})
|
590
582
|
end
|
@@ -597,7 +589,6 @@ describe Kitchen::Provisioner::ChefBase do
|
|
597
589
|
end
|
598
590
|
|
599
591
|
describe "for powershell shells on windows os types" do
|
600
|
-
|
601
592
|
before do
|
602
593
|
platform.stubs(:shell_type).returns("powershell")
|
603
594
|
platform.stubs(:os_type).returns("windows")
|
@@ -607,18 +598,18 @@ describe Kitchen::Provisioner::ChefBase do
|
|
607
598
|
config[:http_proxy] = "http://proxy"
|
608
599
|
|
609
600
|
cmd.lines.to_a[0..1].must_equal([
|
610
|
-
|
611
|
-
|
612
|
-
|
601
|
+
%{$env:http_proxy = "http://proxy"\n},
|
602
|
+
%{$env:HTTP_PROXY = "http://proxy"\n},
|
603
|
+
])
|
613
604
|
end
|
614
605
|
|
615
606
|
it "exports https_proxy & HTTPS_PROXY when :https_proxy is set" do
|
616
607
|
config[:https_proxy] = "https://proxy"
|
617
608
|
|
618
609
|
cmd.lines.to_a[0..1].must_equal([
|
619
|
-
|
620
|
-
|
621
|
-
|
610
|
+
%{$env:https_proxy = "https://proxy"\n},
|
611
|
+
%{$env:HTTPS_PROXY = "https://proxy"\n},
|
612
|
+
])
|
622
613
|
end
|
623
614
|
|
624
615
|
it "exports all http proxy variables when both are set" do
|
@@ -626,20 +617,20 @@ describe Kitchen::Provisioner::ChefBase do
|
|
626
617
|
config[:https_proxy] = "https://proxy"
|
627
618
|
|
628
619
|
cmd.lines.to_a[0..3].must_equal([
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
620
|
+
%{$env:http_proxy = "http://proxy"\n},
|
621
|
+
%{$env:HTTP_PROXY = "http://proxy"\n},
|
622
|
+
%{$env:https_proxy = "https://proxy"\n},
|
623
|
+
%{$env:HTTPS_PROXY = "https://proxy"\n},
|
624
|
+
])
|
634
625
|
end
|
635
626
|
|
636
627
|
it "sets chef component dirs for deletion" do
|
637
|
-
config[:root_path] =
|
638
|
-
dirs = %
|
628
|
+
config[:root_path] = '\\route'
|
629
|
+
dirs = %w{
|
639
630
|
"\\route\\clients" "\\route\\cookbooks" "\\route\\data"
|
640
631
|
"\\route\\data_bags" "\\route\\encrypted_data_bag_secret"
|
641
632
|
"\\route\\environments" "\\route\\roles"
|
642
|
-
|
633
|
+
}.join(", ")
|
643
634
|
|
644
635
|
cmd.must_match regexify(%{$dirs = @(#{dirs})})
|
645
636
|
end
|
@@ -653,7 +644,6 @@ describe Kitchen::Provisioner::ChefBase do
|
|
653
644
|
end
|
654
645
|
|
655
646
|
describe "#create_sandbox" do
|
656
|
-
|
657
647
|
before do
|
658
648
|
@root = Dir.mktmpdir
|
659
649
|
config[:kitchen_root] = @root
|
@@ -668,7 +658,7 @@ describe Kitchen::Provisioner::ChefBase do
|
|
668
658
|
end
|
669
659
|
|
670
660
|
let(:provisioner) do
|
671
|
-
Class.new(Kitchen::Provisioner::ChefBase)
|
661
|
+
Class.new(Kitchen::Provisioner::ChefBase) do
|
672
662
|
default_config :generic_rb, {}
|
673
663
|
|
674
664
|
def create_sandbox
|
@@ -679,11 +669,10 @@ describe Kitchen::Provisioner::ChefBase do
|
|
679
669
|
file.write(format_config_file(data))
|
680
670
|
end
|
681
671
|
end
|
682
|
-
|
672
|
+
end.new(config).finalize_config!(instance)
|
683
673
|
end
|
684
674
|
|
685
675
|
describe "json file" do
|
686
|
-
|
687
676
|
let(:json) { JSON.parse(IO.read(sandbox_path("dna.json"))) }
|
688
677
|
|
689
678
|
it "creates a json file with node attributes" do
|
@@ -694,10 +683,10 @@ describe Kitchen::Provisioner::ChefBase do
|
|
694
683
|
end
|
695
684
|
|
696
685
|
it "creates a json file with run_list" do
|
697
|
-
config[:run_list] = %w
|
686
|
+
config[:run_list] = %w{alpha bravo charlie}
|
698
687
|
provisioner.create_sandbox
|
699
688
|
|
700
|
-
json["run_list"].must_equal %w
|
689
|
+
json["run_list"].must_equal %w{alpha bravo charlie}
|
701
690
|
end
|
702
691
|
|
703
692
|
it "creates a json file with an empty run_list" do
|
@@ -717,8 +706,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
717
706
|
config[:run_list] = ["yo"]
|
718
707
|
provisioner.create_sandbox
|
719
708
|
|
720
|
-
logged_output.string
|
721
|
-
|
709
|
+
logged_output.string
|
710
|
+
.must_match debug_line(%(Creating dna.json from {:run_list=>["yo"]}))
|
722
711
|
end
|
723
712
|
end
|
724
713
|
|
@@ -728,9 +717,8 @@ describe Kitchen::Provisioner::ChefBase do
|
|
728
717
|
sandbox_path("cache").directory?.must_equal true
|
729
718
|
end
|
730
719
|
|
731
|
-
%w
|
720
|
+
%w{data data_bags environments nodes roles clients}.each do |thing|
|
732
721
|
describe "#{thing} files" do
|
733
|
-
|
734
722
|
before do
|
735
723
|
create_files_under("#{config[:kitchen_root]}/my_#{thing}")
|
736
724
|
config[:"#{thing}_path"] = "#{config[:kitchen_root]}/my_#{thing}"
|
@@ -769,7 +757,6 @@ describe Kitchen::Provisioner::ChefBase do
|
|
769
757
|
end
|
770
758
|
|
771
759
|
describe "secret files" do
|
772
|
-
|
773
760
|
before do
|
774
761
|
config[:encrypted_data_bag_secret_key_path] =
|
775
762
|
"#{config[:kitchen_root]}/my_secret"
|
@@ -807,22 +794,20 @@ describe Kitchen::Provisioner::ChefBase do
|
|
807
794
|
end
|
808
795
|
|
809
796
|
describe "cookbooks" do
|
810
|
-
|
811
797
|
let(:kitchen_root) { config[:kitchen_root] }
|
812
798
|
|
813
799
|
describe "with a cookbooks/ directory under kitchen_root" do
|
814
|
-
|
815
800
|
it "copies cookbooks/" do
|
816
801
|
create_cookbook("#{kitchen_root}/cookbooks/epache")
|
817
802
|
create_cookbook("#{kitchen_root}/cookbooks/jahva")
|
818
803
|
provisioner.create_sandbox
|
819
804
|
|
820
805
|
sandbox_path("cookbooks/epache").directory?.must_equal true
|
821
|
-
sandbox_path("cookbooks/epache/recipes/default.rb")
|
822
|
-
file?.must_equal true
|
806
|
+
sandbox_path("cookbooks/epache/recipes/default.rb")
|
807
|
+
.file?.must_equal true
|
823
808
|
sandbox_path("cookbooks/jahva").directory?.must_equal true
|
824
|
-
sandbox_path("cookbooks/jahva/recipes/default.rb")
|
825
|
-
file?.must_equal true
|
809
|
+
sandbox_path("cookbooks/jahva/recipes/default.rb")
|
810
|
+
.file?.must_equal true
|
826
811
|
end
|
827
812
|
|
828
813
|
it "copies from kitchen_root as cookbook if it contains metadata.rb" do
|
@@ -883,7 +868,6 @@ describe Kitchen::Provisioner::ChefBase do
|
|
883
868
|
end
|
884
869
|
|
885
870
|
describe "with a cookbook as the project" do
|
886
|
-
|
887
871
|
before do
|
888
872
|
File.open("#{kitchen_root}/metadata.rb", "wb") do |file|
|
889
873
|
file.write("name 'wat'")
|
@@ -921,15 +905,14 @@ describe Kitchen::Provisioner::ChefBase do
|
|
921
905
|
end
|
922
906
|
|
923
907
|
describe "with no referenced cookbooks" do
|
924
|
-
|
925
908
|
it "makes a fake cookbook" do
|
926
909
|
name = File.basename(@root)
|
927
910
|
provisioner.create_sandbox
|
928
911
|
|
929
912
|
sandbox_path("cookbooks/#{name}").directory?.must_equal true
|
930
913
|
sandbox_path("cookbooks/#{name}/metadata.rb").file?.must_equal true
|
931
|
-
IO.read(sandbox_path("cookbooks/#{name}/metadata.rb"))
|
932
|
-
must_equal %{name "#{name}"\n}
|
914
|
+
IO.read(sandbox_path("cookbooks/#{name}/metadata.rb"))
|
915
|
+
.must_equal %{name "#{name}"\n}
|
933
916
|
end
|
934
917
|
|
935
918
|
it "logs a warning" do
|
@@ -943,12 +926,11 @@ describe Kitchen::Provisioner::ChefBase do
|
|
943
926
|
end
|
944
927
|
|
945
928
|
describe "with a Policyfile under kitchen_root" do
|
946
|
-
|
947
929
|
let(:policyfile_path) { "#{kitchen_root}/Policyfile.rb" }
|
948
930
|
let(:policyfile_lock_path) { "#{kitchen_root}/Policyfile.lock.json" }
|
949
|
-
let(:resolver)
|
950
|
-
stub(:
|
951
|
-
|
931
|
+
let(:resolver) do
|
932
|
+
stub(compile: true, resolve: true, lockfile: policyfile_lock_path)
|
933
|
+
end
|
952
934
|
|
953
935
|
describe "with the default name `Policyfile.rb`" do
|
954
936
|
before do
|
@@ -986,7 +968,6 @@ POLICYFILE
|
|
986
968
|
end
|
987
969
|
|
988
970
|
describe "when the chef executable is in the PATH" do
|
989
|
-
|
990
971
|
before do
|
991
972
|
Kitchen::Provisioner::Chef::Policyfile.stubs(:load!)
|
992
973
|
provisioner.stubs(:supports_policyfile?).returns(true)
|
@@ -1021,7 +1002,7 @@ POLICYFILE
|
|
1021
1002
|
|
1022
1003
|
expected = {
|
1023
1004
|
"policy_name" => "wat",
|
1024
|
-
"policy_group" => "local"
|
1005
|
+
"policy_group" => "local",
|
1025
1006
|
}
|
1026
1007
|
|
1027
1008
|
dna_json_data.must_equal(expected)
|
@@ -1029,12 +1010,11 @@ POLICYFILE
|
|
1029
1010
|
end
|
1030
1011
|
end
|
1031
1012
|
describe "with a custom policyfile_path" do
|
1032
|
-
|
1033
1013
|
let(:config) do
|
1034
1014
|
{
|
1035
|
-
:
|
1036
|
-
:
|
1037
|
-
:
|
1015
|
+
policyfile_path: "foo-policy.rb",
|
1016
|
+
test_base_path: "/basist",
|
1017
|
+
kitchen_root: "/rooty",
|
1038
1018
|
}
|
1039
1019
|
end
|
1040
1020
|
|
@@ -1045,7 +1025,6 @@ POLICYFILE
|
|
1045
1025
|
end
|
1046
1026
|
|
1047
1027
|
describe "when the policyfile exists" do
|
1048
|
-
|
1049
1028
|
let(:policyfile_path) { "#{kitchen_root}/foo-policy.rb" }
|
1050
1029
|
let(:policyfile_lock_path) { "#{kitchen_root}/foo-policy.lock.json" }
|
1051
1030
|
|
@@ -1075,10 +1054,10 @@ POLICYFILE
|
|
1075
1054
|
end
|
1076
1055
|
|
1077
1056
|
it "passes the correct path to the policyfile resolver" do
|
1078
|
-
Kitchen::Provisioner::Chef::Policyfile
|
1079
|
-
expects(:new)
|
1080
|
-
with(policyfile_path, instance_of(String), anything)
|
1081
|
-
returns(resolver)
|
1057
|
+
Kitchen::Provisioner::Chef::Policyfile
|
1058
|
+
.expects(:new)
|
1059
|
+
.with(policyfile_path, instance_of(String), anything)
|
1060
|
+
.returns(resolver)
|
1082
1061
|
|
1083
1062
|
Kitchen::Provisioner::Chef::Policyfile.stubs(:load!)
|
1084
1063
|
resolver.expects(:compile)
|
@@ -1088,11 +1067,9 @@ POLICYFILE
|
|
1088
1067
|
end
|
1089
1068
|
end
|
1090
1069
|
describe "when the policyfile doesn't exist" do
|
1091
|
-
|
1092
1070
|
it "raises a UserError" do
|
1093
1071
|
proc { provisioner.create_sandbox }.must_raise Kitchen::UserError
|
1094
1072
|
end
|
1095
|
-
|
1096
1073
|
end
|
1097
1074
|
describe "when the policyfile lock doesn't exist" do
|
1098
1075
|
before do
|
@@ -1112,12 +1089,11 @@ POLICYFILE
|
|
1112
1089
|
end
|
1113
1090
|
end
|
1114
1091
|
describe "with a fallback policyfile" do
|
1115
|
-
|
1116
1092
|
let(:config) do
|
1117
1093
|
{
|
1118
|
-
:
|
1119
|
-
:
|
1120
|
-
:
|
1094
|
+
policyfile: "foo-policy.rb",
|
1095
|
+
test_base_path: "/basist",
|
1096
|
+
kitchen_root: "/rooty",
|
1121
1097
|
}
|
1122
1098
|
end
|
1123
1099
|
|
@@ -1128,7 +1104,6 @@ POLICYFILE
|
|
1128
1104
|
end
|
1129
1105
|
|
1130
1106
|
describe "when the policyfile exists" do
|
1131
|
-
|
1132
1107
|
let(:policyfile_path) { "#{kitchen_root}/foo-policy.rb" }
|
1133
1108
|
let(:policyfile_lock_path) { "#{kitchen_root}/foo-policy.lock.json" }
|
1134
1109
|
|
@@ -1158,10 +1133,10 @@ POLICYFILE
|
|
1158
1133
|
end
|
1159
1134
|
|
1160
1135
|
it "passes the correct path to the policyfile resolver" do
|
1161
|
-
Kitchen::Provisioner::Chef::Policyfile
|
1162
|
-
expects(:new)
|
1163
|
-
with(policyfile_path, instance_of(String), anything)
|
1164
|
-
returns(resolver)
|
1136
|
+
Kitchen::Provisioner::Chef::Policyfile
|
1137
|
+
.expects(:new)
|
1138
|
+
.with(policyfile_path, instance_of(String), anything)
|
1139
|
+
.returns(resolver)
|
1165
1140
|
|
1166
1141
|
Kitchen::Provisioner::Chef::Policyfile.stubs(:load!)
|
1167
1142
|
resolver.expects(:compile)
|
@@ -1171,18 +1146,15 @@ POLICYFILE
|
|
1171
1146
|
end
|
1172
1147
|
end
|
1173
1148
|
describe "when the policyfile doesn't exist" do
|
1174
|
-
|
1175
1149
|
it "raises a UserError" do
|
1176
1150
|
proc { provisioner.create_sandbox }.must_raise Kitchen::UserError
|
1177
1151
|
end
|
1178
|
-
|
1179
1152
|
end
|
1180
1153
|
end
|
1181
1154
|
end
|
1182
1155
|
|
1183
1156
|
describe "with a Berksfile under kitchen_root" do
|
1184
|
-
|
1185
|
-
let(:resolver) { stub(:resolve => true) }
|
1157
|
+
let(:resolver) { stub(resolve: true) }
|
1186
1158
|
|
1187
1159
|
before do
|
1188
1160
|
File.open("#{kitchen_root}/Berksfile", "wb") do |file|
|
@@ -1222,8 +1194,7 @@ POLICYFILE
|
|
1222
1194
|
end
|
1223
1195
|
|
1224
1196
|
describe "with a Cheffile under kitchen_root" do
|
1225
|
-
|
1226
|
-
let(:resolver) { stub(:resolve => true) }
|
1197
|
+
let(:resolver) { stub(resolve: true) }
|
1227
1198
|
|
1228
1199
|
before do
|
1229
1200
|
File.open("#{kitchen_root}/Cheffile", "wb") do |file|
|
@@ -1261,7 +1232,6 @@ POLICYFILE
|
|
1261
1232
|
end
|
1262
1233
|
|
1263
1234
|
describe "filtering cookbooks files" do
|
1264
|
-
|
1265
1235
|
it "retains all useful cookbook files" do
|
1266
1236
|
create_full_cookbook("#{kitchen_root}/cookbooks/full")
|
1267
1237
|
provisioner.create_sandbox
|
@@ -1272,10 +1242,10 @@ POLICYFILE
|
|
1272
1242
|
end
|
1273
1243
|
|
1274
1244
|
it "strips extra cookbook files" do
|
1275
|
-
extras = %w
|
1245
|
+
extras = %w{
|
1276
1246
|
.gitignore tmp/librarian chefignore .git/info/excludes
|
1277
1247
|
cookbooks/another/metadata.rb CONTRIBUTING.md metadata.py
|
1278
|
-
|
1248
|
+
}
|
1279
1249
|
|
1280
1250
|
create_full_cookbook("#{kitchen_root}/cookbooks/full")
|
1281
1251
|
extras.each do |file|
|
@@ -1298,7 +1268,6 @@ POLICYFILE
|
|
1298
1268
|
end
|
1299
1269
|
|
1300
1270
|
describe "Chef config files" do
|
1301
|
-
|
1302
1271
|
let(:file) do
|
1303
1272
|
IO.read(sandbox_path("generic.rb")).lines.map(&:chomp)
|
1304
1273
|
end
|
@@ -1310,7 +1279,6 @@ POLICYFILE
|
|
1310
1279
|
end
|
1311
1280
|
|
1312
1281
|
describe "defaults" do
|
1313
|
-
|
1314
1282
|
before { provisioner.create_sandbox }
|
1315
1283
|
|
1316
1284
|
it "sets node_name to the instance name" do
|
@@ -1378,9 +1346,9 @@ POLICYFILE
|
|
1378
1346
|
|
1379
1347
|
it "supports overwriting defaults" do
|
1380
1348
|
config[:generic_rb] = {
|
1381
|
-
:
|
1382
|
-
:
|
1383
|
-
:
|
1349
|
+
node_name: "eagles",
|
1350
|
+
user_path: "/a/b/c/u",
|
1351
|
+
chef_server_url: "https://whereever.io",
|
1384
1352
|
}
|
1385
1353
|
provisioner.create_sandbox
|
1386
1354
|
|
@@ -1391,7 +1359,7 @@ POLICYFILE
|
|
1391
1359
|
|
1392
1360
|
it " supports adding new configuration" do
|
1393
1361
|
config[:generic_rb] = {
|
1394
|
-
:
|
1362
|
+
dark_secret: "golang",
|
1395
1363
|
}
|
1396
1364
|
provisioner.create_sandbox
|
1397
1365
|
|
@@ -1400,18 +1368,18 @@ POLICYFILE
|
|
1400
1368
|
end
|
1401
1369
|
|
1402
1370
|
def create_cookbook(path)
|
1403
|
-
%w
|
1371
|
+
%w{metadata.rb attributes/all.rb recipes/default.rb}.each do |file|
|
1404
1372
|
create_file(File.join(path, file))
|
1405
1373
|
end
|
1406
1374
|
end
|
1407
1375
|
|
1408
1376
|
def full_cookbook_files
|
1409
|
-
%w
|
1377
|
+
%w{
|
1410
1378
|
README.org metadata.rb attributes/all.rb definitions/def.rb
|
1411
1379
|
files/default/config.conf libraries/one.rb libraries/two.rb
|
1412
1380
|
providers/sweet.rb recipes/default.rb resources/sweet.rb
|
1413
1381
|
templates/ubuntu/12.04/nginx.conf.erb
|
1414
|
-
|
1382
|
+
}
|
1415
1383
|
end
|
1416
1384
|
|
1417
1385
|
def create_full_cookbook(path)
|
@@ -1439,11 +1407,11 @@ POLICYFILE
|
|
1439
1407
|
end
|
1440
1408
|
|
1441
1409
|
def info_line(msg)
|
1442
|
-
|
1410
|
+
/^I, .* : #{Regexp.escape(msg)}$/
|
1443
1411
|
end
|
1444
1412
|
|
1445
1413
|
def debug_line(msg)
|
1446
|
-
|
1414
|
+
/^D, .* : #{Regexp.escape(msg)}$/
|
1447
1415
|
end
|
1448
1416
|
end
|
1449
1417
|
|