vagrant 0.7.0.beta → 0.7.0.beta2
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.
- data/.gitignore +2 -0
- data/CHANGELOG.md +26 -0
- data/Gemfile +0 -8
- data/config/default.rb +1 -2
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/lib/vagrant.rb +14 -18
- data/lib/vagrant/action.rb +12 -0
- data/lib/vagrant/action/box.rb +11 -0
- data/lib/vagrant/action/box/download.rb +0 -1
- data/lib/vagrant/action/env.rb +7 -0
- data/lib/vagrant/action/general.rb +8 -0
- data/lib/vagrant/action/vm.rb +30 -0
- data/lib/vagrant/action/vm/boot.rb +3 -2
- data/lib/vagrant/action/vm/check_box.rb +1 -0
- data/lib/vagrant/action/vm/network.rb +1 -1
- data/lib/vagrant/action/vm/nfs.rb +3 -1
- data/lib/vagrant/action/vm/provision.rb +14 -25
- data/lib/vagrant/action/vm/share_folders.rb +11 -4
- data/lib/vagrant/command.rb +25 -0
- data/lib/vagrant/config.rb +78 -128
- data/lib/vagrant/config/base.rb +17 -3
- data/lib/vagrant/config/ssh.rb +1 -0
- data/lib/vagrant/config/top.rb +61 -0
- data/lib/vagrant/config/vagrant.rb +1 -6
- data/lib/vagrant/config/vm.rb +34 -20
- data/lib/vagrant/config/vm/provisioner.rb +56 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/file.rb +1 -0
- data/lib/vagrant/downloaders/http.rb +9 -0
- data/lib/vagrant/environment.rb +25 -13
- data/lib/vagrant/errors.rb +0 -15
- data/lib/vagrant/hosts.rb +7 -0
- data/lib/vagrant/provisioners.rb +8 -0
- data/lib/vagrant/provisioners/base.rb +19 -1
- data/lib/vagrant/provisioners/chef.rb +31 -52
- data/lib/vagrant/provisioners/chef_server.rb +34 -10
- data/lib/vagrant/provisioners/chef_solo.rb +31 -9
- data/lib/vagrant/provisioners/puppet.rb +70 -60
- data/lib/vagrant/provisioners/puppet_server.rb +57 -0
- data/lib/vagrant/ssh.rb +3 -72
- data/lib/vagrant/ssh/session.rb +81 -0
- data/lib/vagrant/systems.rb +9 -0
- data/lib/vagrant/systems/base.rb +16 -1
- data/lib/vagrant/systems/debian.rb +26 -0
- data/lib/vagrant/systems/gentoo.rb +27 -0
- data/lib/vagrant/systems/linux.rb +14 -56
- data/lib/vagrant/systems/linux/config.rb +21 -0
- data/lib/vagrant/systems/linux/error.rb +9 -0
- data/lib/vagrant/systems/redhat.rb +31 -0
- data/lib/vagrant/test_helpers.rb +1 -1
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +25 -5
- data/templates/chef_solo_solo.erb +11 -3
- data/templates/locales/en.yml +65 -25
- data/templates/{network_entry.erb → network_entry_debian.erb} +0 -0
- data/templates/network_entry_gentoo.erb +7 -0
- data/templates/network_entry_redhat.erb +8 -0
- data/test/vagrant/action/vm/check_box_test.rb +1 -0
- data/test/vagrant/action/vm/nfs_test.rb +7 -1
- data/test/vagrant/action/vm/provision_test.rb +24 -79
- data/test/vagrant/action/vm/share_folders_test.rb +6 -1
- data/test/vagrant/command/helpers_test.rb +2 -2
- data/test/vagrant/config/base_test.rb +0 -6
- data/test/vagrant/config/vagrant_test.rb +0 -8
- data/test/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/vagrant/config/vm_test.rb +8 -0
- data/test/vagrant/config_test.rb +49 -89
- data/test/vagrant/downloaders/file_test.rb +18 -4
- data/test/vagrant/environment_test.rb +36 -12
- data/test/vagrant/provisioners/base_test.rb +28 -1
- data/test/vagrant/provisioners/chef_server_test.rb +50 -41
- data/test/vagrant/provisioners/chef_solo_test.rb +39 -16
- data/test/vagrant/provisioners/chef_test.rb +11 -81
- data/test/vagrant/provisioners/puppet_server_test.rb +69 -0
- data/test/vagrant/provisioners/puppet_test.rb +69 -54
- data/test/vagrant/{ssh_session_test.rb → ssh/session_test.rb} +0 -0
- data/test/vagrant/ssh_test.rb +12 -1
- data/test/vagrant/systems/base_test.rb +18 -0
- data/test/vagrant/systems/linux_test.rb +2 -2
- data/test/vagrant/vm_test.rb +33 -5
- data/vagrant.gemspec +6 -5
- metadata +42 -16
- data/lib/vagrant/util/glob_loader.rb +0 -24
@@ -1,14 +1,37 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
|
3
3
|
class BaseProvisionerTest < Test::Unit::TestCase
|
4
|
+
setup do
|
5
|
+
@klass = Vagrant::Provisioners::Base
|
6
|
+
end
|
7
|
+
|
4
8
|
should "include the util class so subclasses have access to it" do
|
5
9
|
assert Vagrant::Provisioners::Base.include?(Vagrant::Util)
|
6
10
|
end
|
7
11
|
|
12
|
+
context "registering provisioners" do
|
13
|
+
teardown do
|
14
|
+
@klass.registered.delete(:zomg)
|
15
|
+
end
|
16
|
+
|
17
|
+
should "not have unregistered provisioners" do
|
18
|
+
assert_nil @klass.registered[:foo]
|
19
|
+
end
|
20
|
+
|
21
|
+
should "be able to register a provisioner" do
|
22
|
+
foo = Class.new(@klass) do
|
23
|
+
register :zomg
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_equal foo, @klass.registered[:zomg]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
8
30
|
context "base instance" do
|
9
31
|
setup do
|
10
32
|
@env = Vagrant::Action::Environment.new(vagrant_env)
|
11
|
-
@
|
33
|
+
@config = mock("config")
|
34
|
+
@base = Vagrant::Provisioners::Base.new(@env, @config)
|
12
35
|
end
|
13
36
|
|
14
37
|
should "set the environment" do
|
@@ -19,6 +42,10 @@ class BaseProvisionerTest < Test::Unit::TestCase
|
|
19
42
|
assert_equal @env.env.vm, @base.vm
|
20
43
|
end
|
21
44
|
|
45
|
+
should "provide access to the config" do
|
46
|
+
assert_equal @config, @base.config
|
47
|
+
end
|
48
|
+
|
22
49
|
should "implement provision! which does nothing" do
|
23
50
|
assert_nothing_raised do
|
24
51
|
assert @base.respond_to?(:provision!)
|
@@ -2,13 +2,44 @@ require "test_helper"
|
|
2
2
|
|
3
3
|
class ChefServerProvisionerTest < Test::Unit::TestCase
|
4
4
|
setup do
|
5
|
+
@klass = Vagrant::Provisioners::ChefServer
|
6
|
+
|
5
7
|
@action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
|
6
8
|
|
7
|
-
@
|
9
|
+
@config = @klass::Config.new
|
10
|
+
@action = @klass.new(@action_env, @config)
|
8
11
|
@env = @action.env
|
9
12
|
@vm = @action.vm
|
10
13
|
end
|
11
14
|
|
15
|
+
context "config validation" do
|
16
|
+
setup do
|
17
|
+
@errors = Vagrant::Config::ErrorRecorder.new
|
18
|
+
|
19
|
+
@config.run_list = ["foo"]
|
20
|
+
@config.chef_server_url = "foo"
|
21
|
+
@config.validation_key_path = "foo"
|
22
|
+
end
|
23
|
+
|
24
|
+
should "be invalid if run list is empty" do
|
25
|
+
@config.run_list = []
|
26
|
+
@config.validate(@errors)
|
27
|
+
assert !@errors.errors.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
should "be invalid if run list is empty" do
|
31
|
+
@config.chef_server_url = nil
|
32
|
+
@config.validate(@errors)
|
33
|
+
assert !@errors.errors.empty?
|
34
|
+
end
|
35
|
+
|
36
|
+
should "be invalid if run list is empty" do
|
37
|
+
@config.validation_key_path = nil
|
38
|
+
@config.validate(@errors)
|
39
|
+
assert !@errors.errors.empty?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
12
43
|
context "provisioning" do
|
13
44
|
should "run the proper sequence of methods in order" do
|
14
45
|
prov_seq = sequence("prov_seq")
|
@@ -29,21 +60,14 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
29
60
|
end
|
30
61
|
|
31
62
|
should "not raise an exception if validation_key_path is set" do
|
32
|
-
@
|
33
|
-
|
34
|
-
config.chef.chef_server_url = "7"
|
35
|
-
vf
|
63
|
+
@config.validation_key_path = "7"
|
64
|
+
@config.chef_server_url = "7"
|
36
65
|
|
37
|
-
@action.stubs(:env).returns(@env)
|
38
66
|
assert_nothing_raised { @action.prepare }
|
39
67
|
end
|
40
68
|
|
41
69
|
should "raise an exception if validation_key_path is nil" do
|
42
|
-
@
|
43
|
-
config.chef.validation_key_path = nil
|
44
|
-
vf
|
45
|
-
|
46
|
-
@action.stubs(:env).returns(@env)
|
70
|
+
@config.validation_key_path = nil
|
47
71
|
|
48
72
|
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
49
73
|
@action.prepare
|
@@ -51,23 +75,15 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
51
75
|
end
|
52
76
|
|
53
77
|
should "not raise an exception if validation_key_path does exist" do
|
54
|
-
@
|
55
|
-
|
56
|
-
config.chef.chef_server_url = "7"
|
57
|
-
vf
|
78
|
+
@config.validation_key_path = vagrantfile(tmp_path)
|
79
|
+
@config.chef_server_url = "7"
|
58
80
|
|
59
|
-
@action.stubs(:env).returns(@env)
|
60
81
|
assert_nothing_raised { @action.prepare }
|
61
82
|
end
|
62
83
|
|
63
84
|
should "raise an exception if validation_key_path doesn't exist" do
|
64
|
-
@
|
65
|
-
|
66
|
-
config.chef.chef_server_url = "7"
|
67
|
-
vf
|
68
|
-
|
69
|
-
@action.stubs(:env).returns(@env)
|
70
|
-
@action.stubs(:validation_key_path).returns("9")
|
85
|
+
@config.validation_key_path = "7"
|
86
|
+
@config.chef_server_url = "7"
|
71
87
|
|
72
88
|
File.expects(:file?).with(@action.validation_key_path).returns(false)
|
73
89
|
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
@@ -76,21 +92,14 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
76
92
|
end
|
77
93
|
|
78
94
|
should "not raise an exception if chef_server_url is set" do
|
79
|
-
@
|
80
|
-
|
81
|
-
config.chef.chef_server_url = "7"
|
82
|
-
vf
|
95
|
+
@config.validation_key_path = vagrantfile(tmp_path)
|
96
|
+
@config.chef_server_url = "7"
|
83
97
|
|
84
|
-
@action.stubs(:env).returns(@env)
|
85
98
|
assert_nothing_raised { @action.prepare }
|
86
99
|
end
|
87
100
|
|
88
101
|
should "raise an exception if chef_server_url is nil" do
|
89
|
-
@
|
90
|
-
config.chef.chef_server_url = nil
|
91
|
-
vf
|
92
|
-
|
93
|
-
@action.stubs(:env).returns(@env)
|
102
|
+
@config.chef_server_url = nil
|
94
103
|
|
95
104
|
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
96
105
|
@action.prepare
|
@@ -101,7 +110,7 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
101
110
|
context "creating the client key folder" do
|
102
111
|
setup do
|
103
112
|
@raw_path = "/foo/bar/baz.pem"
|
104
|
-
@
|
113
|
+
@config.client_key_path = @raw_path
|
105
114
|
|
106
115
|
@path = Pathname.new(@raw_path)
|
107
116
|
end
|
@@ -126,7 +135,7 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
126
135
|
context "the validation key path" do
|
127
136
|
should "expand the configured key path" do
|
128
137
|
result = mock("result")
|
129
|
-
File.expects(:expand_path).with(@
|
138
|
+
File.expects(:expand_path).with(@config.validation_key_path, @env.root_path).once.returns(result)
|
130
139
|
assert_equal result, @action.validation_key_path
|
131
140
|
end
|
132
141
|
end
|
@@ -134,7 +143,7 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
134
143
|
context "the guest validation key path" do
|
135
144
|
should "be the provisioning path joined with validation.pem" do
|
136
145
|
result = mock("result")
|
137
|
-
File.expects(:join).with(@
|
146
|
+
File.expects(:join).with(@config.provisioning_path, "validation.pem").once.returns(result)
|
138
147
|
assert_equal result, @action.guest_validation_key_path
|
139
148
|
end
|
140
149
|
end
|
@@ -146,11 +155,11 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
146
155
|
|
147
156
|
should "call setup_config with proper variables" do
|
148
157
|
@action.expects(:setup_config).with("chef_server_client", "client.rb", {
|
149
|
-
:node_name => @
|
150
|
-
:chef_server_url => @
|
151
|
-
:validation_client_name => @
|
158
|
+
:node_name => @config.node_name,
|
159
|
+
:chef_server_url => @config.chef_server_url,
|
160
|
+
:validation_client_name => @config.validation_client_name,
|
152
161
|
:validation_key => @action.guest_validation_key_path,
|
153
|
-
:client_key => @
|
162
|
+
:client_key => @config.client_key_path
|
154
163
|
})
|
155
164
|
|
156
165
|
@action.setup_server_config
|
@@ -164,7 +173,7 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
164
173
|
end
|
165
174
|
|
166
175
|
should "cd into the provisioning directory and run chef client" do
|
167
|
-
@ssh.expects(:exec!).with("cd #{@
|
176
|
+
@ssh.expects(:exec!).with("sudo -i 'cd #{@config.provisioning_path} && chef-client -c client.rb -j dna.json'").once
|
168
177
|
@action.run_chef_client
|
169
178
|
end
|
170
179
|
|
@@ -2,13 +2,36 @@ require "test_helper"
|
|
2
2
|
|
3
3
|
class ChefSoloProvisionerTest < Test::Unit::TestCase
|
4
4
|
setup do
|
5
|
+
@klass = Vagrant::Provisioners::ChefSolo
|
6
|
+
|
5
7
|
@action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
|
6
8
|
|
7
|
-
@
|
9
|
+
@config = @klass::Config.new
|
10
|
+
@action = @klass.new(@action_env, @config)
|
8
11
|
@env = @action.env
|
9
12
|
@vm = @action.vm
|
10
13
|
end
|
11
14
|
|
15
|
+
context "config validation" do
|
16
|
+
setup do
|
17
|
+
@errors = Vagrant::Config::ErrorRecorder.new
|
18
|
+
@config.run_list = ["foo"]
|
19
|
+
@config.cookbooks_path = "cookbooks"
|
20
|
+
end
|
21
|
+
|
22
|
+
should "be invalid if run list is empty" do
|
23
|
+
@config.run_list = []
|
24
|
+
@config.validate(@errors)
|
25
|
+
assert !@errors.errors.empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
should "be invalid if cookbooks path is empty" do
|
29
|
+
@config.cookbooks_path = nil
|
30
|
+
@config.validate(@errors)
|
31
|
+
assert !@errors.errors.empty?
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
12
35
|
context "preparing" do
|
13
36
|
should "share cookbook folders" do
|
14
37
|
@action.expects(:share_cookbook_folders).once
|
@@ -87,8 +110,8 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
|
|
87
110
|
context "host cookbooks paths" do
|
88
111
|
should "get folders path for configured cookbooks path" do
|
89
112
|
result = mock("result")
|
90
|
-
@
|
91
|
-
@action.expects(:host_folder_paths).with(@
|
113
|
+
@config.stubs(:cookbooks_path).returns("foo")
|
114
|
+
@action.expects(:host_folder_paths).with(@config.cookbooks_path).returns(result)
|
92
115
|
assert_equal result, @action.host_cookbook_paths
|
93
116
|
end
|
94
117
|
end
|
@@ -96,15 +119,15 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
|
|
96
119
|
context "host roles paths" do
|
97
120
|
should "get folders path for configured roles path" do
|
98
121
|
result = mock("result")
|
99
|
-
@
|
100
|
-
@action.expects(:host_folder_paths).with(@
|
122
|
+
@config.stubs(:roles_path).returns("foo")
|
123
|
+
@action.expects(:host_folder_paths).with(@config.roles_path).returns(result)
|
101
124
|
assert_equal result, @action.host_role_paths
|
102
125
|
end
|
103
126
|
end
|
104
127
|
|
105
128
|
context "folder path" do
|
106
129
|
should "return a proper path to a single folder" do
|
107
|
-
expected = File.join(@
|
130
|
+
expected = File.join(@config.provisioning_path, "cookbooks-5")
|
108
131
|
assert_equal expected, @action.folder_path("cookbooks", 5)
|
109
132
|
end
|
110
133
|
|
@@ -125,33 +148,33 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
|
|
125
148
|
end
|
126
149
|
|
127
150
|
should "properly format VM folder paths" do
|
128
|
-
@
|
151
|
+
@config.provisioning_path = "/foo"
|
129
152
|
assert_equal "/foo/bar", @action.folders_path([:vm, "bar"], nil)
|
130
153
|
end
|
131
154
|
end
|
132
155
|
|
133
156
|
context "cookbooks path" do
|
134
157
|
should "return a proper path to a single cookbook" do
|
135
|
-
expected = File.join(@
|
158
|
+
expected = File.join(@config.provisioning_path, "cookbooks-5")
|
136
159
|
assert_equal expected, @action.cookbook_path(5)
|
137
160
|
end
|
138
161
|
|
139
162
|
should "properly call folders path and return result" do
|
140
163
|
result = [:a, :b, :c]
|
141
|
-
@action.expects(:folders_path).with(@
|
164
|
+
@action.expects(:folders_path).with(@config.cookbooks_path, "cookbooks").once.returns(result)
|
142
165
|
assert_equal result.to_json, @action.cookbooks_path
|
143
166
|
end
|
144
167
|
end
|
145
168
|
|
146
169
|
context "roles path" do
|
147
170
|
should "return a proper path to a single role" do
|
148
|
-
expected = File.join(@
|
171
|
+
expected = File.join(@config.provisioning_path, "roles-5")
|
149
172
|
assert_equal expected, @action.role_path(5)
|
150
173
|
end
|
151
174
|
|
152
175
|
should "properly call folders path and return result" do
|
153
176
|
result = [:a, :b, :c]
|
154
|
-
@action.expects(:folders_path).with(@
|
177
|
+
@action.expects(:folders_path).with(@config.roles_path, "roles").once.returns(result)
|
155
178
|
assert_equal result.to_json, @action.roles_path
|
156
179
|
end
|
157
180
|
end
|
@@ -160,15 +183,15 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
|
|
160
183
|
setup do
|
161
184
|
@vm.ssh.stubs(:upload!)
|
162
185
|
|
163
|
-
@
|
186
|
+
@config.recipe_url = "foo/bar/baz"
|
164
187
|
end
|
165
188
|
|
166
189
|
should "call setup_config with proper variables" do
|
167
190
|
@action.expects(:setup_config).with("chef_solo_solo", "solo.rb", {
|
168
|
-
:node_name => @
|
169
|
-
:provisioning_path => @
|
191
|
+
:node_name => @config.node_name,
|
192
|
+
:provisioning_path => @config.provisioning_path,
|
170
193
|
:cookbooks_path => @action.cookbooks_path,
|
171
|
-
:recipe_url => @
|
194
|
+
:recipe_url => @config.recipe_url,
|
172
195
|
:roles_path => @action.roles_path
|
173
196
|
})
|
174
197
|
|
@@ -183,7 +206,7 @@ class ChefSoloProvisionerTest < Test::Unit::TestCase
|
|
183
206
|
end
|
184
207
|
|
185
208
|
should "cd into the provisioning directory and run chef solo" do
|
186
|
-
@ssh.expects(:exec!).with("cd #{@
|
209
|
+
@ssh.expects(:exec!).with("sudo -i 'cd #{@config.provisioning_path} && chef-solo -c solo.rb -j dna.json'").once
|
187
210
|
@action.run_chef_solo
|
188
211
|
end
|
189
212
|
|
@@ -4,24 +4,22 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
5
5
|
@action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
|
6
6
|
|
7
|
-
@
|
7
|
+
@klass = Vagrant::Provisioners::Chef
|
8
|
+
@config = @klass::Config.new
|
9
|
+
@action = @klass.new(@action_env, @config)
|
8
10
|
@env = @action.env
|
9
11
|
@vm = @action.vm
|
10
12
|
end
|
11
13
|
|
12
14
|
context "preparing" do
|
13
15
|
should "error the environment" do
|
14
|
-
assert_raises(
|
16
|
+
assert_raises(@klass::ChefError) {
|
15
17
|
@action.prepare
|
16
18
|
}
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
20
22
|
context "config" do
|
21
|
-
setup do
|
22
|
-
@config = Vagrant::Provisioners::Chef::ChefConfig.new
|
23
|
-
end
|
24
|
-
|
25
23
|
should "not include the 'json' key in the config dump" do
|
26
24
|
result = @config.to_json
|
27
25
|
assert result !~ /"json":/
|
@@ -65,74 +63,6 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
65
63
|
@config.add_role("role[user]")
|
66
64
|
assert_equal "role[user]", @config.run_list[0]
|
67
65
|
end
|
68
|
-
|
69
|
-
context "validation" do
|
70
|
-
setup do
|
71
|
-
@errors = Vagrant::Config::ErrorRecorder.new
|
72
|
-
@top = @config.top = Vagrant::Config::Top.new(@env)
|
73
|
-
end
|
74
|
-
|
75
|
-
context "chef solo" do
|
76
|
-
setup do
|
77
|
-
@top.vm.provisioner = :chef_solo
|
78
|
-
|
79
|
-
@config.run_list = ["foo"]
|
80
|
-
@config.cookbooks_path = "cookbooks"
|
81
|
-
end
|
82
|
-
|
83
|
-
should "be valid if provisioner is not chef solo" do
|
84
|
-
@top.vm.provisioner = nil
|
85
|
-
@config.validate(@errors)
|
86
|
-
assert @errors.errors.empty?
|
87
|
-
end
|
88
|
-
|
89
|
-
should "be invalid if run list is empty" do
|
90
|
-
@config.run_list = []
|
91
|
-
@config.validate(@errors)
|
92
|
-
assert !@errors.errors.empty?
|
93
|
-
end
|
94
|
-
|
95
|
-
should "be invalid if cookbooks path is empty" do
|
96
|
-
@config.cookbooks_path = nil
|
97
|
-
@config.validate(@errors)
|
98
|
-
assert !@errors.errors.empty?
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context "chef server" do
|
103
|
-
setup do
|
104
|
-
@top.vm.provisioner = :chef_server
|
105
|
-
|
106
|
-
@config.run_list = ["foo"]
|
107
|
-
@config.chef_server_url = "foo"
|
108
|
-
@config.validation_key_path = "foo"
|
109
|
-
end
|
110
|
-
|
111
|
-
should "be valid if provisioner is not chef solo" do
|
112
|
-
@top.vm.provisioner = nil
|
113
|
-
@config.validate(@errors)
|
114
|
-
assert @errors.errors.empty?
|
115
|
-
end
|
116
|
-
|
117
|
-
should "be invalid if run list is empty" do
|
118
|
-
@config.run_list = []
|
119
|
-
@config.validate(@errors)
|
120
|
-
assert !@errors.errors.empty?
|
121
|
-
end
|
122
|
-
|
123
|
-
should "be invalid if run list is empty" do
|
124
|
-
@config.chef_server_url = nil
|
125
|
-
@config.validate(@errors)
|
126
|
-
assert !@errors.errors.empty?
|
127
|
-
end
|
128
|
-
|
129
|
-
should "be invalid if run list is empty" do
|
130
|
-
@config.validation_key_path = nil
|
131
|
-
@config.validate(@errors)
|
132
|
-
assert !@errors.errors.empty?
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
66
|
end
|
137
67
|
|
138
68
|
context "verifying binary" do
|
@@ -143,7 +73,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
143
73
|
|
144
74
|
should "verify binary exists" do
|
145
75
|
binary = "foo"
|
146
|
-
@ssh.expects(:exec!).with("which #{binary}", anything)
|
76
|
+
@ssh.expects(:exec!).with("sudo -i which #{binary}", anything)
|
147
77
|
@action.verify_binary(binary)
|
148
78
|
end
|
149
79
|
end
|
@@ -152,8 +82,8 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
152
82
|
should "create and chown the folder to the ssh user" do
|
153
83
|
ssh_seq = sequence("ssh_seq")
|
154
84
|
ssh = mock("ssh")
|
155
|
-
ssh.expects(:exec!).with("sudo mkdir -p #{@
|
156
|
-
ssh.expects(:exec!).with("sudo chown #{@env.config.ssh.username} #{@
|
85
|
+
ssh.expects(:exec!).with("sudo mkdir -p #{@config.provisioning_path}").once.in_sequence(ssh_seq)
|
86
|
+
ssh.expects(:exec!).with("sudo chown #{@env.config.ssh.username} #{@config.provisioning_path}").once.in_sequence(ssh_seq)
|
157
87
|
@vm.ssh.expects(:execute).yields(ssh)
|
158
88
|
@action.chown_provisioning_folder
|
159
89
|
end
|
@@ -174,7 +104,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
174
104
|
string_io = mock("string_io")
|
175
105
|
Vagrant::Util::TemplateRenderer.expects(:render).with(@template, anything).returns(template_data)
|
176
106
|
StringIO.expects(:new).with(template_data).returns(string_io)
|
177
|
-
File.expects(:join).with(@
|
107
|
+
File.expects(:join).with(@config.provisioning_path, @filename).once.returns("bar")
|
178
108
|
@vm.ssh.expects(:upload!).with(string_io, "bar")
|
179
109
|
|
180
110
|
@action.setup_config(@template, @filename, {})
|
@@ -183,7 +113,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
183
113
|
should "provide log level by default" do
|
184
114
|
Vagrant::Util::TemplateRenderer.expects(:render).returns("foo").with() do |template, vars|
|
185
115
|
assert vars.has_key?(:log_level)
|
186
|
-
assert_equal @
|
116
|
+
assert_equal @config.log_level.to_sym, vars[:log_level]
|
187
117
|
true
|
188
118
|
end
|
189
119
|
|
@@ -221,7 +151,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
221
151
|
end
|
222
152
|
|
223
153
|
should "merge in the extra json specified in the config" do
|
224
|
-
@
|
154
|
+
@config.json = { :foo => "BAR" }
|
225
155
|
assert_json do |data|
|
226
156
|
assert_equal "BAR", data["foo"]
|
227
157
|
end
|
@@ -241,7 +171,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
|
|
241
171
|
|
242
172
|
should "upload a StringIO to dna.json" do
|
243
173
|
StringIO.expects(:new).with(anything).returns("bar")
|
244
|
-
File.expects(:join).with(@
|
174
|
+
File.expects(:join).with(@config.provisioning_path, "dna.json").once.returns("baz")
|
245
175
|
@vm.ssh.expects(:upload!).with("bar", "baz").once
|
246
176
|
@action.setup_json
|
247
177
|
end
|