vagrant 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. data/README.md +1 -0
  2. data/config/default.rb +6 -6
  3. data/lib/vagrant.rb +6 -3
  4. data/lib/vagrant/action.rb +77 -0
  5. data/lib/vagrant/action/action_exception.rb +16 -0
  6. data/lib/vagrant/action/box/destroy.rb +19 -0
  7. data/lib/vagrant/action/box/download.rb +78 -0
  8. data/lib/vagrant/action/box/unpackage.rb +58 -0
  9. data/lib/vagrant/action/box/verify.rb +23 -0
  10. data/lib/vagrant/action/builder.rb +151 -0
  11. data/lib/vagrant/action/builtin.rb +114 -0
  12. data/lib/vagrant/action/env/error_halt.rb +16 -0
  13. data/lib/vagrant/action/env/set.rb +18 -0
  14. data/lib/vagrant/action/environment.rb +98 -0
  15. data/lib/vagrant/action/exception_catcher.rb +14 -0
  16. data/lib/vagrant/action/vm/boot.rb +54 -0
  17. data/lib/vagrant/action/vm/check_box.rb +27 -0
  18. data/lib/vagrant/action/vm/check_guest_additions.rb +32 -0
  19. data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
  20. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +39 -0
  21. data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
  22. data/lib/vagrant/action/vm/clear_shared_folders.rb +32 -0
  23. data/lib/vagrant/action/vm/customize.rb +21 -0
  24. data/lib/vagrant/action/vm/destroy.rb +20 -0
  25. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +35 -0
  26. data/lib/vagrant/action/vm/disable_networks.rb +26 -0
  27. data/lib/vagrant/action/vm/export.rb +53 -0
  28. data/lib/vagrant/action/vm/forward_ports.rb +121 -0
  29. data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
  30. data/lib/vagrant/action/vm/halt.rb +34 -0
  31. data/lib/vagrant/action/vm/import.rb +33 -0
  32. data/lib/vagrant/action/vm/match_mac_address.rb +19 -0
  33. data/lib/vagrant/{actions → action}/vm/network.rb +47 -55
  34. data/lib/vagrant/action/vm/nfs.rb +161 -0
  35. data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
  36. data/lib/vagrant/action/vm/package.rb +99 -0
  37. data/lib/vagrant/action/vm/persist.rb +22 -0
  38. data/lib/vagrant/action/vm/provision.rb +50 -0
  39. data/lib/vagrant/action/vm/resume.rb +20 -0
  40. data/lib/vagrant/{actions/vm/shared_folders.rb → action/vm/share_folders.rb} +48 -45
  41. data/lib/vagrant/action/vm/suspend.rb +20 -0
  42. data/lib/vagrant/box.rb +3 -7
  43. data/lib/vagrant/commands/base.rb +1 -3
  44. data/lib/vagrant/commands/package.rb +4 -9
  45. data/lib/vagrant/commands/up.rb +0 -2
  46. data/lib/vagrant/config.rb +15 -1
  47. data/lib/vagrant/downloaders/file.rb +1 -1
  48. data/lib/vagrant/downloaders/http.rb +2 -1
  49. data/lib/vagrant/environment.rb +18 -14
  50. data/lib/vagrant/hosts/base.rb +77 -0
  51. data/lib/vagrant/hosts/bsd.rb +53 -0
  52. data/lib/vagrant/hosts/linux.rb +52 -0
  53. data/lib/vagrant/provisioners/base.rb +17 -9
  54. data/lib/vagrant/provisioners/chef.rb +1 -1
  55. data/lib/vagrant/provisioners/chef_server.rb +4 -8
  56. data/lib/vagrant/provisioners/chef_solo.rb +1 -2
  57. data/lib/vagrant/ssh.rb +12 -4
  58. data/lib/vagrant/systems/base.rb +4 -0
  59. data/lib/vagrant/systems/linux.rb +12 -1
  60. data/lib/vagrant/util.rb +16 -0
  61. data/lib/vagrant/util/busy.rb +59 -0
  62. data/lib/vagrant/util/plain_logger.rb +11 -0
  63. data/lib/vagrant/util/platform.rb +18 -0
  64. data/lib/vagrant/util/resource_logger.rb +128 -0
  65. data/lib/vagrant/version.rb +6 -0
  66. data/lib/vagrant/vm.rb +10 -12
  67. data/templates/chef_solo_solo.erb +2 -1
  68. data/templates/nfs/exports.erb +3 -0
  69. data/templates/nfs/exports_linux.erb +3 -0
  70. data/templates/strings.yml +23 -3
  71. metadata +128 -198
  72. data/.gitignore +0 -11
  73. data/Gemfile +0 -18
  74. data/Rakefile +0 -41
  75. data/VERSION +0 -1
  76. data/bin/.gitignore +0 -0
  77. data/lib/vagrant/actions/base.rb +0 -130
  78. data/lib/vagrant/actions/box/add.rb +0 -23
  79. data/lib/vagrant/actions/box/destroy.rb +0 -14
  80. data/lib/vagrant/actions/box/download.rb +0 -67
  81. data/lib/vagrant/actions/box/unpackage.rb +0 -42
  82. data/lib/vagrant/actions/box/verify.rb +0 -32
  83. data/lib/vagrant/actions/collection.rb +0 -36
  84. data/lib/vagrant/actions/runner.rb +0 -131
  85. data/lib/vagrant/actions/vm/boot.rb +0 -43
  86. data/lib/vagrant/actions/vm/customize.rb +0 -19
  87. data/lib/vagrant/actions/vm/destroy.rb +0 -24
  88. data/lib/vagrant/actions/vm/down.rb +0 -22
  89. data/lib/vagrant/actions/vm/export.rb +0 -45
  90. data/lib/vagrant/actions/vm/forward_ports.rb +0 -134
  91. data/lib/vagrant/actions/vm/halt.rb +0 -24
  92. data/lib/vagrant/actions/vm/import.rb +0 -23
  93. data/lib/vagrant/actions/vm/move_hard_drive.rb +0 -51
  94. data/lib/vagrant/actions/vm/package.rb +0 -94
  95. data/lib/vagrant/actions/vm/provision.rb +0 -49
  96. data/lib/vagrant/actions/vm/reload.rb +0 -17
  97. data/lib/vagrant/actions/vm/resume.rb +0 -16
  98. data/lib/vagrant/actions/vm/start.rb +0 -26
  99. data/lib/vagrant/actions/vm/suspend.rb +0 -16
  100. data/lib/vagrant/actions/vm/up.rb +0 -53
  101. data/lib/vagrant/busy.rb +0 -79
  102. data/lib/vagrant/resource_logger.rb +0 -126
  103. data/lib/vagrant/util/error_helper.rb +0 -13
  104. data/lib/vagrant/util/output_helper.rb +0 -9
  105. data/test/test_helper.rb +0 -149
  106. data/test/vagrant/actions/base_test.rb +0 -32
  107. data/test/vagrant/actions/box/add_test.rb +0 -36
  108. data/test/vagrant/actions/box/destroy_test.rb +0 -17
  109. data/test/vagrant/actions/box/download_test.rb +0 -137
  110. data/test/vagrant/actions/box/unpackage_test.rb +0 -99
  111. data/test/vagrant/actions/box/verify_test.rb +0 -44
  112. data/test/vagrant/actions/collection_test.rb +0 -113
  113. data/test/vagrant/actions/runner_test.rb +0 -268
  114. data/test/vagrant/actions/vm/boot_test.rb +0 -49
  115. data/test/vagrant/actions/vm/customize_test.rb +0 -21
  116. data/test/vagrant/actions/vm/destroy_test.rb +0 -37
  117. data/test/vagrant/actions/vm/down_test.rb +0 -39
  118. data/test/vagrant/actions/vm/export_test.rb +0 -88
  119. data/test/vagrant/actions/vm/forward_ports_test.rb +0 -253
  120. data/test/vagrant/actions/vm/halt_test.rb +0 -65
  121. data/test/vagrant/actions/vm/import_test.rb +0 -45
  122. data/test/vagrant/actions/vm/move_hard_drive_test.rb +0 -106
  123. data/test/vagrant/actions/vm/network_test.rb +0 -291
  124. data/test/vagrant/actions/vm/package_test.rb +0 -254
  125. data/test/vagrant/actions/vm/provision_test.rb +0 -99
  126. data/test/vagrant/actions/vm/reload_test.rb +0 -46
  127. data/test/vagrant/actions/vm/resume_test.rb +0 -26
  128. data/test/vagrant/actions/vm/shared_folders_test.rb +0 -211
  129. data/test/vagrant/actions/vm/start_test.rb +0 -73
  130. data/test/vagrant/actions/vm/suspend_test.rb +0 -26
  131. data/test/vagrant/actions/vm/up_test.rb +0 -96
  132. data/test/vagrant/active_list_test.rb +0 -173
  133. data/test/vagrant/box_test.rb +0 -154
  134. data/test/vagrant/busy_test.rb +0 -78
  135. data/test/vagrant/command_test.rb +0 -53
  136. data/test/vagrant/commands/base_test.rb +0 -139
  137. data/test/vagrant/commands/box/add_test.rb +0 -34
  138. data/test/vagrant/commands/box/list_test.rb +0 -32
  139. data/test/vagrant/commands/box/remove_test.rb +0 -41
  140. data/test/vagrant/commands/destroy_test.rb +0 -44
  141. data/test/vagrant/commands/halt_test.rb +0 -50
  142. data/test/vagrant/commands/init_test.rb +0 -55
  143. data/test/vagrant/commands/package_test.rb +0 -104
  144. data/test/vagrant/commands/provision_test.rb +0 -60
  145. data/test/vagrant/commands/reload_test.rb +0 -44
  146. data/test/vagrant/commands/resume_test.rb +0 -44
  147. data/test/vagrant/commands/ssh_config_test.rb +0 -77
  148. data/test/vagrant/commands/ssh_test.rb +0 -129
  149. data/test/vagrant/commands/status_test.rb +0 -40
  150. data/test/vagrant/commands/suspend_test.rb +0 -44
  151. data/test/vagrant/commands/up_test.rb +0 -47
  152. data/test/vagrant/config_test.rb +0 -287
  153. data/test/vagrant/downloaders/base_test.rb +0 -28
  154. data/test/vagrant/downloaders/file_test.rb +0 -33
  155. data/test/vagrant/downloaders/http_test.rb +0 -62
  156. data/test/vagrant/environment_test.rb +0 -770
  157. data/test/vagrant/provisioners/base_test.rb +0 -33
  158. data/test/vagrant/provisioners/chef_server_test.rb +0 -176
  159. data/test/vagrant/provisioners/chef_solo_test.rb +0 -183
  160. data/test/vagrant/provisioners/chef_test.rb +0 -175
  161. data/test/vagrant/resource_logger_test.rb +0 -145
  162. data/test/vagrant/ssh_session_test.rb +0 -46
  163. data/test/vagrant/ssh_test.rb +0 -296
  164. data/test/vagrant/systems/linux_test.rb +0 -179
  165. data/test/vagrant/util/error_helper_test.rb +0 -5
  166. data/test/vagrant/util/output_helper_test.rb +0 -5
  167. data/test/vagrant/util/plain_logger_test.rb +0 -17
  168. data/test/vagrant/util/platform_test.rb +0 -18
  169. data/test/vagrant/util/stacked_proc_runner_test.rb +0 -43
  170. data/test/vagrant/util/template_renderer_test.rb +0 -144
  171. data/test/vagrant/util/translator_test.rb +0 -61
  172. data/test/vagrant/util_test.rb +0 -27
  173. data/test/vagrant/vm_test.rb +0 -235
  174. data/vagrant.gemspec +0 -291
@@ -1,99 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
2
-
3
- class ProvisionActionTest < Test::Unit::TestCase
4
- setup do
5
- @runner, @vm, @action = mock_action(Vagrant::Actions::VM::Provision)
6
- end
7
-
8
- context "initialization" do
9
- should "have a nil provisioner by default" do
10
- assert_nil @action.provisioner
11
- end
12
- end
13
-
14
- context "executing" do
15
- should "do nothing if the provisioner is nil" do
16
- @action.expects(:provisioner).returns(nil)
17
- assert_nothing_raised { @action.execute! }
18
- end
19
-
20
- should "call `provision!` on the provisioner" do
21
- provisioner = mock("provisioner")
22
- provisioner.expects(:provision!).once
23
- @action.expects(:provisioner).twice.returns(provisioner)
24
- @action.execute!
25
- end
26
- end
27
-
28
- context "preparing" do
29
- context "with a nil provisioner" do
30
- setup do
31
- @runner.env.config.vm.provisioner = nil
32
- end
33
-
34
- should "not set a provisioner if set to nil" do
35
- @action.prepare
36
- assert_nil @action.provisioner
37
- end
38
- end
39
-
40
- context "with a Class provisioner" do
41
- setup do
42
- @instance = mock("instance")
43
- @instance.stubs(:is_a?).with(Vagrant::Provisioners::Base).returns(true)
44
- @instance.stubs(:prepare)
45
- @klass = mock("klass")
46
- @klass.stubs(:is_a?).with(Class).returns(true)
47
- @klass.stubs(:new).with(@runner).returns(@instance)
48
-
49
- @runner.env.config.vm.provisioner = @klass
50
- end
51
-
52
- should "set the provisioner to an instantiation of the class" do
53
- @klass.expects(:new).with(@runner).once.returns(@instance)
54
- assert_nothing_raised { @action.prepare }
55
- assert_equal @instance, @action.provisioner
56
- end
57
-
58
- should "call prepare on the instance" do
59
- @instance.expects(:prepare).once
60
- @action.prepare
61
- end
62
-
63
- should "raise an exception if the class is not a subclass of the provisioner base" do
64
- @instance.expects(:is_a?).with(Vagrant::Provisioners::Base).returns(false)
65
- assert_raises(Vagrant::Actions::ActionException) {
66
- @action.prepare
67
- }
68
- end
69
- end
70
-
71
- context "with a Symbol provisioner" do
72
- def provisioner_expectation(symbol, provisioner)
73
- @runner.env.config.vm.provisioner = symbol
74
-
75
- instance = mock("instance")
76
- instance.expects(:prepare).once
77
- provisioner.expects(:new).with(@runner).returns(instance)
78
- assert_nothing_raised { @action.prepare }
79
- assert_equal instance, @action.provisioner
80
- end
81
-
82
- should "raise an ActionException if its an unknown symbol" do
83
- @runner.env.config.vm.provisioner = :this_will_never_exist
84
-
85
- assert_raises(Vagrant::Actions::ActionException) {
86
- @action.prepare
87
- }
88
- end
89
-
90
- should "set :chef_solo to the ChefSolo provisioner" do
91
- provisioner_expectation(:chef_solo, Vagrant::Provisioners::ChefSolo)
92
- end
93
-
94
- should "set :chef_server to the ChefServer provisioner" do
95
- provisioner_expectation(:chef_server, Vagrant::Provisioners::ChefServer)
96
- end
97
- end
98
- end
99
- end
@@ -1,46 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
2
-
3
- class ReloadActionTest < Test::Unit::TestCase
4
- setup do
5
- @runner, @vm, @action = mock_action(Vagrant::Actions::VM::Reload)
6
- end
7
-
8
- context "sub-actions" do
9
- setup do
10
- @default_order = [Vagrant::Actions::VM::Customize, Vagrant::Actions::VM::ForwardPorts, Vagrant::Actions::VM::SharedFolders, Vagrant::Actions::VM::Network, Vagrant::Actions::VM::Boot]
11
- @vm.stubs(:running?).returns(false)
12
- end
13
-
14
- def setup_action_expectations
15
- default_seq = sequence("default_seq")
16
- @default_order.each do |action|
17
- @runner.expects(:add_action).with(action).once.in_sequence(default_seq)
18
- end
19
- end
20
-
21
- should "do the proper actions by default" do
22
- setup_action_expectations
23
- @action.prepare
24
- end
25
-
26
- should "halt if the VM is running" do
27
- @vm.expects(:running?).returns(true)
28
- @default_order.unshift(Vagrant::Actions::VM::Halt)
29
- setup_action_expectations
30
- @action.prepare
31
- end
32
-
33
- should "add in the provisioning step if enabled" do
34
- env = mock_environment do |config|
35
- # Dummy provisioner to test
36
- config.vm.provisioner = "foo"
37
- end
38
-
39
- @runner.stubs(:env).returns(env)
40
-
41
- @default_order.push(Vagrant::Actions::VM::Provision)
42
- setup_action_expectations
43
- @action.prepare
44
- end
45
- end
46
- end
@@ -1,26 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
2
-
3
- class ResumeActionTest < Test::Unit::TestCase
4
- setup do
5
- @runner, @vm, @action = mock_action(Vagrant::Actions::VM::Resume)
6
- end
7
-
8
- context "executing" do
9
- setup do
10
- @vm.stubs(:saved?).returns(true)
11
- end
12
-
13
- should "save the state of the VM" do
14
- @runner.expects(:start).once
15
- @action.execute!
16
- end
17
-
18
- should "raise an ActionException if the VM is not saved" do
19
- @vm.expects(:saved?).returns(false)
20
- @vm.expects(:start).never
21
- assert_raises(Vagrant::Actions::ActionException) {
22
- @action.execute!
23
- }
24
- end
25
- end
26
- end
@@ -1,211 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
2
-
3
- class SharedFoldersActionTest < Test::Unit::TestCase
4
- setup do
5
- @runner, @vm, @action = mock_action(Vagrant::Actions::VM::SharedFolders)
6
- @runner.stubs(:system).returns(linux_system(@vm))
7
- end
8
-
9
- def stub_shared_folders
10
- env = mock_environment do |config|
11
- config.vm.shared_folders.clear
12
-
13
- if block_given?
14
- yield config
15
- else
16
- folders = [%w{foo fooguest foohost}, %w{bar barguest barhost}]
17
- folders.each do |data|
18
- config.vm.share_folder(*data)
19
- end
20
- end
21
- end
22
-
23
- @runner.stubs(:env).returns(env)
24
- env.config.vm.shared_folders
25
- end
26
-
27
- context "before boot" do
28
- should "clear folders and create metadata, in order" do
29
- before_seq = sequence("before")
30
- @action.expects(:clear_shared_folders).once.in_sequence(before_seq)
31
- @action.expects(:create_metadata).once.in_sequence(before_seq)
32
- @action.before_boot
33
- end
34
- end
35
-
36
- context "after boot" do
37
- should "mount folders then setup unison" do
38
- seq = sequence("after")
39
- @action.expects(:mount_shared_folders).once.in_sequence(seq)
40
- @action.expects(:setup_unison).once.in_sequence(seq)
41
- @action.after_boot
42
- end
43
- end
44
-
45
- context "collecting shared folders" do
46
- setup do
47
- File.stubs(:expand_path).returns("baz")
48
- end
49
-
50
- should "return a hash of the shared folders" do
51
- data = {
52
- "foo" => %W[bar baz],
53
- "bar" => %W[foo baz]
54
- }
55
-
56
- stub_shared_folders do |config|
57
- data.each do |name, value|
58
- config.vm.share_folder(name, *value)
59
- end
60
- end
61
-
62
- result = @action.shared_folders
63
- assert_equal data.length, result.length
64
- data.each do |name, value|
65
- guest, host = value
66
- assert_equal guest, result[name][:guestpath]
67
- assert_equal host, result[name][:hostpath]
68
- end
69
- end
70
-
71
- should "append sync suffix if sync enabled to a folder" do
72
- name = "foo"
73
- guest = "bar"
74
- host = "baz"
75
-
76
- stub_shared_folders do |config|
77
- config.vm.share_folder(name, guest, host, :sync => true)
78
- end
79
-
80
- result = @action.shared_folders
81
- assert_equal "#{guest}#{@runner.env.config.unison.folder_suffix}", result[name][:guestpath]
82
- assert_equal guest, result[name][:original][:guestpath]
83
- end
84
-
85
- should "not destroy original hash" do
86
- @folders = stub_shared_folders do |config|
87
- config.vm.share_folder("foo", "bar", "baz", :sync => true)
88
- end
89
-
90
- folder = @folders["foo"].dup
91
-
92
- @action.shared_folders
93
- assert_equal folder, @runner.env.config.vm.shared_folders["foo"]
94
- end
95
- end
96
-
97
- context "unison shared folders" do
98
- setup do
99
- @folders = stub_shared_folders do |config|
100
- config.vm.share_folder("foo", "bar", "baz", :sync => true)
101
- config.vm.share_folder("bar", "foo", "baz")
102
- end
103
- end
104
-
105
- should "only return the folders marked for syncing" do
106
- result = @action.unison_folders
107
- assert_equal 1, result.length
108
- assert result.has_key?("foo")
109
- assert !result.has_key?("bar")
110
- end
111
- end
112
-
113
- context "clearing shared folders" do
114
- setup do
115
- @shared_folder = mock("shared_folder")
116
- @shared_folders = [@shared_folder]
117
- @vm.stubs(:shared_folders).returns(@shared_folders)
118
- end
119
-
120
- should "call destroy on each shared folder then reload" do
121
- destroy_seq = sequence("destroy")
122
- @shared_folders.each do |sf|
123
- sf.expects(:destroy).once.in_sequence(destroy_seq)
124
- end
125
-
126
- @runner.expects(:reload!).once.in_sequence(destroy_seq)
127
- @action.clear_shared_folders
128
- end
129
-
130
- should "do nothing if no shared folders existed" do
131
- @shared_folders.clear
132
- @runner.expects(:reload!).never
133
- @action.clear_shared_folders
134
- end
135
- end
136
-
137
- context "setting up shared folder metadata" do
138
- setup do
139
- stub_shared_folders
140
- end
141
-
142
- should "add all shared folders to the VM" do
143
- shared_folders = []
144
- data = %W[foo bar]
145
- shared_folders.expects(:<<).times(data.length).with() do |sf|
146
- hostpath = File.expand_path("#{sf.name}host", @runner.env.root_path)
147
- assert data.include?(sf.name)
148
- assert_equal hostpath, sf.host_path
149
- true
150
- end
151
-
152
- @vm.stubs(:shared_folders).returns(shared_folders)
153
- @vm.expects(:save).once
154
-
155
- @action.create_metadata
156
- end
157
- end
158
-
159
- context "mounting the shared folders" do
160
- setup do
161
- @folders = stub_shared_folders
162
- @ssh = mock("ssh")
163
- @runner.ssh.stubs(:execute).yields(@ssh)
164
- @runner.system.stubs(:mount_shared_folder)
165
- end
166
-
167
- should "mount all shared folders to the VM" do
168
- mount_seq = sequence("mount_seq")
169
- @folders.each do |name, data|
170
- @runner.system.expects(:mount_shared_folder).with(@ssh, name, data[:guestpath]).in_sequence(mount_seq)
171
- end
172
-
173
- @action.mount_shared_folders
174
- end
175
- end
176
-
177
- context "setting up unison" do
178
- setup do
179
- @ssh = mock("ssh")
180
- @runner.ssh.stubs(:execute).yields(@ssh)
181
-
182
- @folders = stub_shared_folders do |config|
183
- config.vm.share_folder("foo", "bar", "baz", :sync => true)
184
- config.vm.share_folder("bar", "foo", "baz")
185
- end
186
- end
187
-
188
- should "do nothing if unison folders is empty" do
189
- @action.stubs(:unison_folders).returns({})
190
- @runner.ssh.expects(:execute).never
191
- @action.setup_unison
192
- end
193
-
194
- should "prepare unison then create for each folder" do
195
- seq = sequence("unison seq")
196
- @runner.system.expects(:prepare_unison).with(@ssh).once.in_sequence(seq)
197
- @action.unison_folders.each do |name, data|
198
- if data[:sync]
199
- @runner.system.expects(:create_unison).with do |ssh, opts|
200
- assert_equal @ssh, ssh
201
- assert_equal data, opts
202
-
203
- true
204
- end
205
- end
206
- end
207
-
208
- @action.setup_unison
209
- end
210
- end
211
- end
@@ -1,73 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper')
2
-
3
- class StartActionTest < Test::Unit::TestCase
4
- setup do
5
- @runner, @vm, @action = mock_action(Vagrant::Actions::VM::Start)
6
-
7
- @action.options[:provision] = true
8
- end
9
-
10
- context "sub-actions" do
11
- setup do
12
- @runner.stubs(:created?).returns(false)
13
- @vm.stubs(:saved?).returns(true)
14
- File.stubs(:file?).returns(true)
15
- File.stubs(:exist?).returns(true)
16
- @default_order = [Vagrant::Actions::VM::Boot]
17
- end
18
-
19
- def setup_action_expectations
20
- default_seq = sequence("default_seq")
21
- @default_order.flatten.each do |action|
22
- @runner.expects(:add_action).with(action, @action.options).once.in_sequence(default_seq)
23
- end
24
- end
25
-
26
- should "do the proper actions by default" do
27
- setup_action_expectations
28
- @action.prepare
29
- end
30
-
31
- should "add customize to the beginning if its not saved" do
32
- @vm.expects(:saved?).returns(false)
33
- @default_order.unshift([Vagrant::Actions::VM::Customize, Vagrant::Actions::VM::ForwardPorts, Vagrant::Actions::VM::SharedFolders, Vagrant::Actions::VM::Network])
34
- setup_action_expectations
35
- @action.prepare
36
- end
37
-
38
- should "add do additional if VM is not created yet" do
39
- @runner.stubs(:vm).returns(nil)
40
- @default_order.unshift([Vagrant::Actions::VM::Customize, Vagrant::Actions::VM::ForwardPorts, Vagrant::Actions::VM::SharedFolders, Vagrant::Actions::VM::Network])
41
- setup_action_expectations
42
- @action.prepare
43
- end
44
-
45
- should "add provisioning if its enabled and not saved" do
46
- @vm.env.config.vm.provisioner = :chef_solo
47
-
48
- @runner.stubs(:vm).returns(nil)
49
- @default_order.unshift([Vagrant::Actions::VM::Customize, Vagrant::Actions::VM::ForwardPorts, Vagrant::Actions::VM::SharedFolders, Vagrant::Actions::VM::Network])
50
- @default_order << Vagrant::Actions::VM::Provision
51
- setup_action_expectations
52
- @action.prepare
53
- end
54
- end
55
-
56
- context "provision?" do
57
- should "return false if no provisioner is set" do
58
- @vm.env.config.vm.provisioner = nil
59
- assert !@action.provision?
60
- end
61
-
62
- should "return true if a provisioner is set" do
63
- @vm.env.config.vm.provisioner = :chef_solo
64
- assert @action.provision?
65
- end
66
-
67
- should "return false if provisioning is specifically disabled" do
68
- @vm.env.config.vm.provisioner = :chef_solo
69
- @action.options[:provision] = false
70
- assert !@action.provision?
71
- end
72
- end
73
- end