vagrant 0.5.4 → 0.6.0
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 +1 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +56 -0
- data/Gemfile +14 -3
- data/Gemfile.lock +38 -11
- data/README.md +1 -1
- data/bin/vagrant +20 -5
- data/config/default.rb +6 -8
- data/lib/vagrant.rb +40 -13
- data/lib/vagrant/action.rb +56 -16
- data/lib/vagrant/action/box/destroy.rb +3 -1
- data/lib/vagrant/action/box/download.rb +8 -13
- data/lib/vagrant/action/box/unpackage.rb +8 -11
- data/lib/vagrant/action/box/verify.rb +3 -3
- data/lib/vagrant/action/builder.rb +3 -30
- data/lib/vagrant/action/builtin.rb +6 -1
- data/lib/vagrant/action/environment.rb +14 -62
- data/lib/vagrant/action/general/package.rb +29 -22
- data/lib/vagrant/action/vm/boot.rb +5 -12
- data/lib/vagrant/action/vm/check_box.rb +4 -4
- data/lib/vagrant/action/vm/check_guest_additions.rb +4 -6
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +2 -2
- data/lib/vagrant/action/vm/clear_nfs_exports.rb +1 -1
- data/lib/vagrant/action/vm/clear_shared_folders.rb +1 -1
- data/lib/vagrant/action/vm/customize.rb +1 -1
- data/lib/vagrant/action/vm/destroy.rb +1 -2
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +1 -1
- data/lib/vagrant/action/vm/disable_networks.rb +11 -9
- data/lib/vagrant/action/vm/discard_state.rb +2 -2
- data/lib/vagrant/action/vm/export.rb +10 -11
- data/lib/vagrant/action/vm/forward_ports.rb +21 -9
- data/lib/vagrant/action/vm/halt.rb +3 -8
- data/lib/vagrant/action/vm/import.rb +16 -14
- data/lib/vagrant/action/vm/match_mac_address.rb +1 -1
- data/lib/vagrant/action/vm/network.rb +9 -16
- data/lib/vagrant/action/vm/nfs.rb +14 -18
- data/lib/vagrant/action/vm/provision.rb +5 -5
- data/lib/vagrant/action/vm/resume.rb +1 -1
- data/lib/vagrant/action/vm/share_folders.rb +6 -44
- data/lib/vagrant/action/vm/suspend.rb +1 -1
- data/lib/vagrant/action/warden.rb +74 -0
- data/lib/vagrant/box.rb +18 -82
- data/lib/vagrant/box_collection.rb +47 -0
- data/lib/vagrant/cli.rb +55 -0
- data/lib/vagrant/command/base.rb +106 -0
- data/lib/vagrant/command/box.rb +33 -0
- data/lib/vagrant/command/destroy.rb +17 -0
- data/lib/vagrant/command/group_base.rb +99 -0
- data/lib/vagrant/command/halt.rb +18 -0
- data/lib/vagrant/command/helpers.rb +33 -0
- data/lib/vagrant/command/init.rb +14 -0
- data/lib/vagrant/command/named_base.rb +14 -0
- data/lib/vagrant/command/package.rb +41 -0
- data/lib/vagrant/command/provision.rb +17 -0
- data/lib/vagrant/command/reload.rb +17 -0
- data/lib/vagrant/command/resume.rb +17 -0
- data/lib/vagrant/command/ssh.rb +41 -0
- data/lib/vagrant/command/ssh_config.rb +21 -0
- data/lib/vagrant/command/status.rb +23 -0
- data/lib/vagrant/command/suspend.rb +17 -0
- data/lib/vagrant/command/up.rb +20 -0
- data/lib/vagrant/command/upgrade_to_060.rb +45 -0
- data/lib/vagrant/command/version.rb +13 -0
- data/lib/vagrant/config.rb +107 -189
- data/lib/vagrant/config/base.rb +67 -0
- data/lib/vagrant/config/error_recorder.rb +19 -0
- data/lib/vagrant/config/nfs.rb +10 -0
- data/lib/vagrant/config/package.rb +9 -0
- data/lib/vagrant/config/ssh.rb +28 -0
- data/lib/vagrant/config/vagrant.rb +21 -0
- data/lib/vagrant/config/vm.rb +111 -0
- data/lib/vagrant/data_store.rb +68 -0
- data/lib/vagrant/downloaders/file.rb +3 -3
- data/lib/vagrant/downloaders/http.rb +5 -5
- data/lib/vagrant/environment.rb +246 -243
- data/lib/vagrant/errors.rb +306 -0
- data/lib/vagrant/hosts/base.rb +1 -1
- data/lib/vagrant/hosts/bsd.rb +3 -9
- data/lib/vagrant/hosts/linux.rb +3 -9
- data/lib/vagrant/plugin.rb +50 -0
- data/lib/vagrant/provisioners/base.rb +0 -6
- data/lib/vagrant/provisioners/chef.rb +63 -58
- data/lib/vagrant/provisioners/chef_server.rb +9 -11
- data/lib/vagrant/provisioners/chef_solo.rb +2 -2
- data/lib/vagrant/ssh.rb +34 -37
- data/lib/vagrant/systems/base.rb +0 -13
- data/lib/vagrant/systems/linux.rb +10 -33
- data/lib/vagrant/systems/solaris.rb +59 -0
- data/lib/vagrant/test_helpers.rb +109 -0
- data/lib/vagrant/ui.rb +65 -0
- data/lib/vagrant/util.rb +9 -19
- data/lib/vagrant/util/glob_loader.rb +19 -17
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/plain_logger.rb +2 -0
- data/lib/vagrant/util/platform.rb +2 -0
- data/lib/vagrant/util/resource_logger.rb +5 -70
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/template_renderer.rb +1 -1
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +27 -13
- data/templates/commands/init/Vagrantfile.erb +13 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/locales/en.yml +402 -0
- data/templates/package_Vagrantfile.erb +1 -1
- data/test/locales/en.yml +8 -0
- data/test/test_helper.rb +19 -103
- data/test/vagrant/action/box/destroy_test.rb +7 -19
- data/test/vagrant/action/box/download_test.rb +9 -25
- data/test/vagrant/action/box/package_test.rb +2 -2
- data/test/vagrant/action/box/unpackage_test.rb +8 -34
- data/test/vagrant/action/box/verify_test.rb +10 -19
- data/test/vagrant/action/builder_test.rb +0 -15
- data/test/vagrant/action/env/set_test.rb +1 -1
- data/test/vagrant/action/environment_test.rb +8 -26
- data/test/vagrant/action/general/package_test.rb +53 -53
- data/test/vagrant/action/vm/boot_test.rb +5 -22
- data/test/vagrant/action/vm/check_box_test.rb +35 -25
- data/test/vagrant/action/vm/clean_machine_folder_test.rb +1 -1
- data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +1 -1
- data/test/vagrant/action/vm/clear_nfs_exports_test.rb +1 -1
- data/test/vagrant/action/vm/clear_shared_folders_test.rb +1 -1
- data/test/vagrant/action/vm/customize_test.rb +2 -1
- data/test/vagrant/action/vm/destroy_test.rb +1 -2
- data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +1 -1
- data/test/vagrant/action/vm/disable_networks_test.rb +10 -1
- data/test/vagrant/action/vm/discard_state_test.rb +10 -1
- data/test/vagrant/action/vm/export_test.rb +9 -37
- data/test/vagrant/action/vm/forward_ports_helpers_test.rb +2 -2
- data/test/vagrant/action/vm/forward_ports_test.rb +19 -16
- data/test/vagrant/action/vm/halt_test.rb +11 -1
- data/test/vagrant/action/vm/import_test.rb +37 -21
- data/test/vagrant/action/vm/match_mac_address_test.rb +1 -1
- data/test/vagrant/action/vm/network_test.rb +8 -7
- data/test/vagrant/action/vm/nfs_helpers_test.rb +6 -3
- data/test/vagrant/action/vm/nfs_test.rb +20 -45
- data/test/vagrant/action/vm/package_test.rb +1 -1
- data/test/vagrant/action/vm/package_vagrantfile_test.rb +1 -1
- data/test/vagrant/action/vm/provision_test.rb +10 -17
- data/test/vagrant/action/vm/resume_test.rb +1 -1
- data/test/vagrant/action/vm/share_folders_test.rb +25 -106
- data/test/vagrant/action/vm/suspend_test.rb +1 -1
- data/test/vagrant/action/warden_test.rb +105 -0
- data/test/vagrant/action_test.rb +5 -27
- data/test/vagrant/box_collection_test.rb +44 -0
- data/test/vagrant/box_test.rb +5 -105
- data/test/vagrant/cli_test.rb +35 -0
- data/test/vagrant/command/base_test.rb +23 -0
- data/test/vagrant/command/group_base_test.rb +15 -0
- data/test/vagrant/command/helpers_test.rb +88 -0
- data/test/vagrant/config/base_test.rb +52 -0
- data/test/vagrant/config/error_recorder_test.rb +18 -0
- data/test/vagrant/config/ssh_test.rb +12 -0
- data/test/vagrant/config/vagrant_test.rb +11 -0
- data/test/vagrant/config/vm_test.rb +70 -0
- data/test/vagrant/config_test.rb +113 -206
- data/test/vagrant/data_store_test.rb +68 -0
- data/test/vagrant/downloaders/base_test.rb +1 -1
- data/test/vagrant/downloaders/file_test.rb +4 -3
- data/test/vagrant/downloaders/http_test.rb +14 -4
- data/test/vagrant/environment_test.rb +290 -590
- data/test/vagrant/errors_test.rb +42 -0
- data/test/vagrant/hosts/base_test.rb +1 -1
- data/test/vagrant/hosts/bsd_test.rb +3 -6
- data/test/vagrant/hosts/linux_test.rb +3 -5
- data/test/vagrant/plugin_test.rb +9 -0
- data/test/vagrant/provisioners/base_test.rb +1 -1
- data/test/vagrant/provisioners/chef_server_test.rb +31 -35
- data/test/vagrant/provisioners/chef_solo_test.rb +1 -1
- data/test/vagrant/provisioners/chef_test.rb +7 -7
- data/test/vagrant/ssh_session_test.rb +3 -10
- data/test/vagrant/ssh_test.rb +25 -33
- data/test/vagrant/systems/linux_test.rb +6 -71
- data/test/vagrant/ui_test.rb +29 -0
- data/test/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
- data/test/vagrant/util/resource_logger_test.rb +14 -81
- data/test/vagrant/util/retryable_test.rb +38 -0
- data/test/vagrant/util/template_renderer_test.rb +4 -4
- data/test/vagrant/vm_test.rb +47 -26
- data/vagrant.gemspec +14 -12
- metadata +142 -108
- data/bin/.gitignore +0 -0
- data/lib/vagrant/action/action_exception.rb +0 -16
- data/lib/vagrant/action/env/error_halt.rb +0 -16
- data/lib/vagrant/action/exception_catcher.rb +0 -14
- data/lib/vagrant/action/vm/persist.rb +0 -22
- data/lib/vagrant/active_list.rb +0 -83
- data/lib/vagrant/command.rb +0 -27
- data/lib/vagrant/commands/base.rb +0 -181
- data/lib/vagrant/commands/box.rb +0 -16
- data/lib/vagrant/commands/box/add.rb +0 -30
- data/lib/vagrant/commands/box/list.rb +0 -30
- data/lib/vagrant/commands/box/remove.rb +0 -30
- data/lib/vagrant/commands/box/repackage.rb +0 -35
- data/lib/vagrant/commands/destroy.rb +0 -37
- data/lib/vagrant/commands/halt.rb +0 -43
- data/lib/vagrant/commands/init.rb +0 -36
- data/lib/vagrant/commands/package.rb +0 -81
- data/lib/vagrant/commands/provision.rb +0 -31
- data/lib/vagrant/commands/reload.rb +0 -36
- data/lib/vagrant/commands/resume.rb +0 -35
- data/lib/vagrant/commands/ssh.rb +0 -78
- data/lib/vagrant/commands/ssh_config.rb +0 -45
- data/lib/vagrant/commands/status.rb +0 -125
- data/lib/vagrant/commands/suspend.rb +0 -36
- data/lib/vagrant/commands/up.rb +0 -44
- data/lib/vagrant/exceptions/uncallable_action.rb +0 -17
- data/lib/vagrant/util/translator.rb +0 -35
- data/templates/strings.yml +0 -341
- data/templates/unison/crontab_entry.erb +0 -1
- data/templates/unison/script.erb +0 -71
- data/test/vagrant/action/env/error_halt_test.rb +0 -21
- data/test/vagrant/action/exception_catcher_test.rb +0 -30
- data/test/vagrant/action/vm/persist_test.rb +0 -50
- data/test/vagrant/active_list_test.rb +0 -173
- data/test/vagrant/command_test.rb +0 -53
- data/test/vagrant/commands/base_test.rb +0 -139
- data/test/vagrant/commands/box/add_test.rb +0 -34
- data/test/vagrant/commands/box/list_test.rb +0 -32
- data/test/vagrant/commands/box/remove_test.rb +0 -41
- data/test/vagrant/commands/box/repackage_test.rb +0 -52
- data/test/vagrant/commands/destroy_test.rb +0 -44
- data/test/vagrant/commands/halt_test.rb +0 -50
- data/test/vagrant/commands/init_test.rb +0 -71
- data/test/vagrant/commands/package_test.rb +0 -97
- data/test/vagrant/commands/provision_test.rb +0 -60
- data/test/vagrant/commands/reload_test.rb +0 -47
- data/test/vagrant/commands/resume_test.rb +0 -44
- data/test/vagrant/commands/ssh_config_test.rb +0 -77
- data/test/vagrant/commands/ssh_test.rb +0 -129
- data/test/vagrant/commands/status_test.rb +0 -40
- data/test/vagrant/commands/suspend_test.rb +0 -44
- data/test/vagrant/commands/up_test.rb +0 -49
- data/test/vagrant/util/translator_test.rb +0 -61
- data/test/vagrant/util_test.rb +0 -27
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
|
3
3
|
class HaltVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
@klass = Vagrant::Action::VM::Halt
|
|
6
|
-
@app, @env =
|
|
6
|
+
@app, @env = action_env
|
|
7
7
|
|
|
8
8
|
@vm = mock("vm")
|
|
9
9
|
@vm.stubs(:name).returns("foo")
|
|
@@ -26,6 +26,7 @@ class HaltVMActionTest < Test::Unit::TestCase
|
|
|
26
26
|
|
|
27
27
|
context "calling" do
|
|
28
28
|
setup do
|
|
29
|
+
@vm.stubs(:created?).returns(true)
|
|
29
30
|
@internal_vm.stubs(:running?).returns(true)
|
|
30
31
|
|
|
31
32
|
@vm.system.stubs(:halt)
|
|
@@ -33,6 +34,15 @@ class HaltVMActionTest < Test::Unit::TestCase
|
|
|
33
34
|
@internal_vm.stubs(:state).returns(:powered_off)
|
|
34
35
|
end
|
|
35
36
|
|
|
37
|
+
should "do nothing if VM is not created" do
|
|
38
|
+
@internal_vm.stubs(:created?).returns(false)
|
|
39
|
+
@vm.system.expects(:halt).never
|
|
40
|
+
@internal_vm.expects(:stop).never
|
|
41
|
+
@app.expects(:call).once
|
|
42
|
+
|
|
43
|
+
@instance.call(@env)
|
|
44
|
+
end
|
|
45
|
+
|
|
36
46
|
should "do nothing if VM not running" do
|
|
37
47
|
@internal_vm.stubs(:running?).returns(false)
|
|
38
48
|
@vm.system.expects(:halt).never
|
|
@@ -2,49 +2,65 @@ require "test_helper"
|
|
|
2
2
|
|
|
3
3
|
class ImportVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
|
+
clean_paths
|
|
6
|
+
vagrant_box("foo")
|
|
7
|
+
|
|
5
8
|
@klass = Vagrant::Action::VM::Import
|
|
6
|
-
@app, @env =
|
|
7
|
-
|
|
9
|
+
@app, @env = action_env(vagrant_env(vagrantfile(<<-vf)))
|
|
10
|
+
config.vm.box = "foo"
|
|
11
|
+
vf
|
|
8
12
|
|
|
9
|
-
|
|
10
|
-
@box = mock("box")
|
|
11
|
-
@box.stubs(:ovf_file).returns(ovf_file)
|
|
12
|
-
@env.env.stubs(:box).returns(@box)
|
|
13
|
+
@instance = @klass.new(@app, @env)
|
|
13
14
|
|
|
14
|
-
@env.env.vm = Vagrant::VM.new
|
|
15
|
+
@env.env.vm = Vagrant::VM.new(:env => @env.env, :name => "foobar")
|
|
15
16
|
|
|
16
17
|
VirtualBox::VM.stubs(:import)
|
|
18
|
+
|
|
19
|
+
@vm = mock("vm")
|
|
20
|
+
@vm.stubs(:uuid).returns("foobar")
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
should "call import on VirtualBox with proper base" do
|
|
20
|
-
VirtualBox::VM.expects(:import).once.with(@env.env.box.ovf_file).returns(
|
|
24
|
+
VirtualBox::VM.expects(:import).once.with(@env.env.box.ovf_file.to_s).returns(@vm)
|
|
21
25
|
@instance.call(@env)
|
|
22
26
|
end
|
|
23
27
|
|
|
24
28
|
should "call next in chain on success and set VM" do
|
|
25
|
-
|
|
26
|
-
VirtualBox::VM.stubs(:import).returns(vm)
|
|
29
|
+
VirtualBox::VM.stubs(:import).returns(@vm)
|
|
27
30
|
@app.expects(:call).with(@env).once
|
|
28
31
|
@instance.call(@env)
|
|
29
32
|
|
|
30
|
-
assert_equal vm, @env["vm"].vm
|
|
33
|
+
assert_equal @vm, @env["vm"].vm
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
should "mark environment erroneous and not continue chain on failure" do
|
|
34
37
|
@app.expects(:call).never
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
assert_raises(Vagrant::Errors::VMImportFailure) {
|
|
39
|
+
@instance.call(@env)
|
|
40
|
+
}
|
|
38
41
|
end
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
assert_equal @env, env
|
|
44
|
-
@env.error!(:interrupt)
|
|
43
|
+
context "recovery" do
|
|
44
|
+
setup do
|
|
45
|
+
@env.env.vm.stubs(:created?).returns(true)
|
|
45
46
|
end
|
|
46
|
-
@env.env.actions.expects(:run).with(:destroy).once
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
should "not run the destroy action on recover if error is a VagrantError" do
|
|
49
|
+
@env["vagrant.error"] = Vagrant::Errors::VMImportFailure.new
|
|
50
|
+
@env.env.actions.expects(:run).never
|
|
51
|
+
@instance.recover(@env)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
should "not run the destroy action on recover if VM is not created" do
|
|
55
|
+
@env.env.vm.stubs(:created?).returns(false)
|
|
56
|
+
@env.env.actions.expects(:run).never
|
|
57
|
+
@instance.recover(@env)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
should "run the destroy action on recover" do
|
|
61
|
+
@env.env.vm.stubs(:created?).returns(true)
|
|
62
|
+
@env.env.actions.expects(:run).with(:destroy).once
|
|
63
|
+
@instance.recover(@env)
|
|
64
|
+
end
|
|
49
65
|
end
|
|
50
66
|
end
|
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
|
3
3
|
class NetworkVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
@klass = Vagrant::Action::VM::Network
|
|
6
|
-
@app, @env =
|
|
6
|
+
@app, @env = action_env
|
|
7
7
|
|
|
8
8
|
@vm = mock("vm")
|
|
9
9
|
@vm.stubs(:name).returns("foo")
|
|
@@ -18,7 +18,7 @@ class NetworkVMActionTest < Test::Unit::TestCase
|
|
|
18
18
|
context "initializing" do
|
|
19
19
|
should "verify no bridge collisions for each network enabled" do
|
|
20
20
|
@env.env.config.vm.network("foo")
|
|
21
|
-
@klass.any_instance.expects(:verify_no_bridge_collision).once.with() do |options|
|
|
21
|
+
@klass.any_instance.expects(:verify_no_bridge_collision).returns(true).once.with() do |options|
|
|
22
22
|
assert_equal "foo", options[:ip]
|
|
23
23
|
true
|
|
24
24
|
end
|
|
@@ -139,8 +139,9 @@ class NetworkVMActionTest < Test::Unit::TestCase
|
|
|
139
139
|
mock_interface(:name => @options[:name],
|
|
140
140
|
:interface_type => :bridged)
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
assert_raises(Vagrant::Errors::NetworkNotFound) {
|
|
143
|
+
@instance.network_name(@options)
|
|
144
|
+
}
|
|
144
145
|
end
|
|
145
146
|
|
|
146
147
|
should "return the network which matches the name if given" do
|
|
@@ -154,9 +155,9 @@ class NetworkVMActionTest < Test::Unit::TestCase
|
|
|
154
155
|
@options[:name] = "foo"
|
|
155
156
|
|
|
156
157
|
@interfaces.expects(:create).never
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
assert_raises(Vagrant::Errors::NetworkNotFound) {
|
|
159
|
+
@instance.network_name(@options)
|
|
160
|
+
}
|
|
160
161
|
end
|
|
161
162
|
|
|
162
163
|
should "create a network for the IP and netmask" do
|
|
@@ -2,9 +2,11 @@ require "test_helper"
|
|
|
2
2
|
|
|
3
3
|
class NFSHelpersVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
|
-
@klass = Class.new
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
@klass = Class.new do
|
|
6
|
+
include Vagrant::Action::VM::NFSHelpers
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
@app, @env = action_env
|
|
8
10
|
|
|
9
11
|
@instance = @klass.new
|
|
10
12
|
end
|
|
@@ -18,6 +20,7 @@ class NFSHelpersVMActionTest < Test::Unit::TestCase
|
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
should "not do anything if host is nil" do
|
|
23
|
+
@env.env.stubs(:host).returns(nil)
|
|
21
24
|
assert_nothing_raised { @instance.clear_nfs_exports(@env) }
|
|
22
25
|
end
|
|
23
26
|
end
|
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
|
3
3
|
class NFSVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
@klass = Vagrant::Action::VM::NFS
|
|
6
|
-
@app, @env =
|
|
6
|
+
@app, @env = action_env
|
|
7
7
|
|
|
8
8
|
@vm = mock("vm")
|
|
9
9
|
@vm.stubs(:system).returns(mock("system"))
|
|
@@ -65,32 +65,12 @@ class NFSVMActionTest < Test::Unit::TestCase
|
|
|
65
65
|
@instance.expects(:mount_folders).never
|
|
66
66
|
@instance.call(@env)
|
|
67
67
|
end
|
|
68
|
+
end
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
@instance.expects(:extract_folders).in_sequence(seq)
|
|
74
|
-
@instance.expects(:prepare_folders).in_sequence(seq)
|
|
75
|
-
@instance.expects(:clear_nfs_exports).in_sequence(seq)
|
|
76
|
-
@instance.expects(:export_folders).in_sequence(seq)
|
|
77
|
-
@app.expects(:call).never
|
|
78
|
-
@instance.call(@env)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
should "not mount folders if an error occured" do
|
|
82
|
-
seq = sequence("seq")
|
|
83
|
-
@app.expects(:call).in_sequence(seq).with() do
|
|
84
|
-
# Use this mark the env as error
|
|
85
|
-
@env.error!(:foo)
|
|
86
|
-
|
|
87
|
-
true
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
@instance.expects(:clear_nfs_exports).with(@env).in_sequence(seq)
|
|
91
|
-
|
|
92
|
-
@instance.expects(:mount_folders).never
|
|
93
|
-
@instance.call(@env)
|
|
70
|
+
context "recovery" do
|
|
71
|
+
should "clear NFS exports" do
|
|
72
|
+
@instance.expects(:clear_nfs_exports).with(@env).once
|
|
73
|
+
@instance.recover(@env)
|
|
94
74
|
end
|
|
95
75
|
end
|
|
96
76
|
|
|
@@ -129,11 +109,12 @@ class NFSVMActionTest < Test::Unit::TestCase
|
|
|
129
109
|
end
|
|
130
110
|
|
|
131
111
|
should "return nil if the perm is not set" do
|
|
112
|
+
@env.env.config.nfs.map_uid = nil
|
|
132
113
|
assert_nil @instance.prepare_permission(:uid, {:gid => 7})
|
|
133
114
|
end
|
|
134
115
|
|
|
135
116
|
should "return nil if the perm explicitly says nil" do
|
|
136
|
-
assert_nil @instance.prepare_permission(:uid, {:
|
|
117
|
+
assert_nil @instance.prepare_permission(:uid, {:map_uid => nil})
|
|
137
118
|
end
|
|
138
119
|
|
|
139
120
|
should "return the set value if it is set" do
|
|
@@ -164,13 +145,6 @@ class NFSVMActionTest < Test::Unit::TestCase
|
|
|
164
145
|
@env["host"].expects(:nfs_export).with(@instance.guest_ip, @instance.folders)
|
|
165
146
|
@instance.export_folders
|
|
166
147
|
end
|
|
167
|
-
|
|
168
|
-
should "error the environment if exception is raised" do
|
|
169
|
-
@env["host"].expects(:nfs_export).raises(Vagrant::Action::ActionException.new(:foo))
|
|
170
|
-
@instance.export_folders
|
|
171
|
-
assert @env.error?
|
|
172
|
-
assert_equal :foo, @env.error.first
|
|
173
|
-
end
|
|
174
148
|
end
|
|
175
149
|
|
|
176
150
|
context "mounting folders" do
|
|
@@ -240,29 +214,30 @@ class NFSVMActionTest < Test::Unit::TestCase
|
|
|
240
214
|
|
|
241
215
|
should "error environment if host is nil" do
|
|
242
216
|
@env.env.stubs(:host).returns(nil)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
217
|
+
assert_raises(Vagrant::Errors::NFSHostRequired) {
|
|
218
|
+
@instance.verify_settings
|
|
219
|
+
}
|
|
246
220
|
end
|
|
247
221
|
|
|
248
222
|
should "error environment if host does not support NFS" do
|
|
249
223
|
@env.env.host.stubs(:nfs?).returns(false)
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
224
|
+
assert_raises(Vagrant::Errors::NFSNotSupported) {
|
|
225
|
+
@instance.verify_settings
|
|
226
|
+
}
|
|
253
227
|
end
|
|
254
228
|
|
|
255
229
|
should "error environment if host only networking is not enabled" do
|
|
256
230
|
@env.env.config.vm.network_options.clear
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
231
|
+
assert_raises(Vagrant::Errors::NFSNoHostNetwork) {
|
|
232
|
+
@instance.verify_settings
|
|
233
|
+
}
|
|
260
234
|
end
|
|
261
235
|
|
|
262
236
|
should "be fine if everything passes" do
|
|
263
237
|
@env.env.host.stubs(:nfs?).returns(true)
|
|
264
|
-
|
|
265
|
-
|
|
238
|
+
assert_nothing_raised {
|
|
239
|
+
@instance.verify_settings
|
|
240
|
+
}
|
|
266
241
|
end
|
|
267
242
|
end
|
|
268
243
|
end
|
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
|
3
3
|
class ProvisionVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
@klass = Vagrant::Action::VM::Provision
|
|
6
|
-
@app, @env =
|
|
6
|
+
@app, @env = action_env
|
|
7
7
|
|
|
8
8
|
@vm = mock("vm")
|
|
9
9
|
@vm.stubs(:name).returns("foo")
|
|
@@ -65,9 +65,10 @@ class ProvisionVMActionTest < Test::Unit::TestCase
|
|
|
65
65
|
|
|
66
66
|
should "error environment if the class is not a subclass of the provisioner base" do
|
|
67
67
|
@prov.expects(:is_a?).with(Vagrant::Provisioners::Base).returns(false)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
|
|
69
|
+
assert_raises(Vagrant::Errors::ProvisionInvalidClass) {
|
|
70
|
+
@instance.load_provisioner
|
|
71
|
+
}
|
|
71
72
|
end
|
|
72
73
|
end
|
|
73
74
|
|
|
@@ -81,11 +82,12 @@ class ProvisionVMActionTest < Test::Unit::TestCase
|
|
|
81
82
|
assert_equal instance, @instance.load_provisioner
|
|
82
83
|
end
|
|
83
84
|
|
|
84
|
-
should "raise an
|
|
85
|
+
should "raise an error if its an unknown symbol" do
|
|
85
86
|
@env["config"].vm.provisioner = :this_will_never_exist
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
|
|
88
|
+
assert_raises(Vagrant::Errors::ProvisionUnknownType) {
|
|
89
|
+
@instance.load_provisioner
|
|
90
|
+
}
|
|
89
91
|
end
|
|
90
92
|
|
|
91
93
|
should "set :chef_solo to the ChefSolo provisioner" do
|
|
@@ -120,15 +122,6 @@ class ProvisionVMActionTest < Test::Unit::TestCase
|
|
|
120
122
|
|
|
121
123
|
@instance.call(@env)
|
|
122
124
|
end
|
|
123
|
-
|
|
124
|
-
should "not provision if erroneous environment" do
|
|
125
|
-
@env.error!(:foo)
|
|
126
|
-
|
|
127
|
-
@prov.expects(:provision!).never
|
|
128
|
-
@app.expects(:call).with(@env).once
|
|
129
|
-
|
|
130
|
-
@instance.call(@env)
|
|
131
|
-
end
|
|
132
125
|
end
|
|
133
126
|
end
|
|
134
127
|
end
|
|
@@ -3,7 +3,7 @@ require "test_helper"
|
|
|
3
3
|
class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
4
4
|
setup do
|
|
5
5
|
@klass = Vagrant::Action::VM::ShareFolders
|
|
6
|
-
@app, @env =
|
|
6
|
+
@app, @env = action_env
|
|
7
7
|
|
|
8
8
|
@vm = mock("vm")
|
|
9
9
|
@vm.stubs(:name).returns("foo")
|
|
@@ -14,22 +14,18 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
14
14
|
@internal_vm = mock("internal")
|
|
15
15
|
@vm.stubs(:vm).returns(@internal_vm)
|
|
16
16
|
|
|
17
|
+
# No validation for this test since its a nightmare due to all the
|
|
18
|
+
# nonexistent shared folders.
|
|
19
|
+
Vagrant::Config::Top.any_instance.stubs(:validate!)
|
|
20
|
+
|
|
17
21
|
@instance = @klass.new(@app, @env)
|
|
18
22
|
end
|
|
19
23
|
|
|
20
|
-
def stub_shared_folders
|
|
21
|
-
env =
|
|
24
|
+
def stub_shared_folders(contents)
|
|
25
|
+
env = vagrant_env(vagrantfile(<<-vf))
|
|
22
26
|
config.vm.shared_folders.clear
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
yield config
|
|
26
|
-
else
|
|
27
|
-
folders = [%w{foo fooguest foohost}, %w{bar barguest barhost}]
|
|
28
|
-
folders.each do |data|
|
|
29
|
-
config.vm.share_folder(*data)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
27
|
+
#{contents}
|
|
28
|
+
vf
|
|
33
29
|
|
|
34
30
|
@env.stubs(:env).returns(env)
|
|
35
31
|
env.config.vm.shared_folders
|
|
@@ -41,40 +37,22 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
41
37
|
@instance.expects(:create_metadata).once.in_sequence(before_seq)
|
|
42
38
|
@app.expects(:call).with(@env).in_sequence(before_seq)
|
|
43
39
|
@instance.expects(:mount_shared_folders).once.in_sequence(before_seq)
|
|
44
|
-
@instance.expects(:setup_unison).once.in_sequence(before_seq)
|
|
45
|
-
|
|
46
|
-
@instance.call(@env)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
should "run only the metadata actions if erroneous environment" do
|
|
50
|
-
@env.error!(:foo)
|
|
51
|
-
|
|
52
|
-
before_seq = sequence("before")
|
|
53
|
-
@instance.expects(:create_metadata).once.in_sequence(before_seq)
|
|
54
|
-
@app.expects(:call).with(@env).in_sequence(before_seq)
|
|
55
|
-
@instance.expects(:mount_shared_folders).never
|
|
56
|
-
@instance.expects(:setup_unison).never
|
|
57
40
|
|
|
58
41
|
@instance.call(@env)
|
|
59
42
|
end
|
|
60
43
|
end
|
|
61
44
|
|
|
62
45
|
context "collecting shared folders" do
|
|
63
|
-
setup do
|
|
64
|
-
File.stubs(:expand_path).returns("baz")
|
|
65
|
-
end
|
|
66
|
-
|
|
67
46
|
should "return a hash of the shared folders" do
|
|
68
47
|
data = {
|
|
69
48
|
"foo" => %W[bar baz],
|
|
70
49
|
"bar" => %W[foo baz]
|
|
71
50
|
}
|
|
72
51
|
|
|
73
|
-
stub_shared_folders
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
end
|
|
52
|
+
stub_shared_folders(<<-sf)
|
|
53
|
+
config.vm.share_folder("foo", "bar", "baz")
|
|
54
|
+
config.vm.share_folder("bar", "foo", "baz")
|
|
55
|
+
sf
|
|
78
56
|
|
|
79
57
|
result = @instance.shared_folders
|
|
80
58
|
assert_equal data.length, result.length
|
|
@@ -86,34 +64,20 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
86
64
|
end
|
|
87
65
|
|
|
88
66
|
should "ignore disabled shared folders" do
|
|
89
|
-
stub_shared_folders
|
|
67
|
+
stub_shared_folders(<<-sf)
|
|
90
68
|
config.vm.share_folder("v-foo", "/foo", "/foo")
|
|
91
69
|
config.vm.share_folder("v-root", "/vagrant", ".", :disabled => true)
|
|
92
70
|
config.vm.share_folder("v-bar", "/bar", "/bar")
|
|
93
|
-
|
|
71
|
+
sf
|
|
94
72
|
|
|
95
73
|
assert_equal 2, @instance.shared_folders.length
|
|
96
74
|
assert_equal %W[v-bar v-foo], @instance.shared_folders.keys.sort
|
|
97
75
|
end
|
|
98
76
|
|
|
99
|
-
should "append sync suffix if sync enabled to a folder" do
|
|
100
|
-
name = "foo"
|
|
101
|
-
guest = "bar"
|
|
102
|
-
host = "baz"
|
|
103
|
-
|
|
104
|
-
stub_shared_folders do |config|
|
|
105
|
-
config.vm.share_folder(name, guest, host, :sync => true)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
result = @instance.shared_folders
|
|
109
|
-
assert_equal "#{guest}#{@env.env.config.unison.folder_suffix}", result[name][:guestpath]
|
|
110
|
-
assert_equal guest, result[name][:original][:guestpath]
|
|
111
|
-
end
|
|
112
|
-
|
|
113
77
|
should "not destroy original hash" do
|
|
114
|
-
@folders = stub_shared_folders
|
|
78
|
+
@folders = stub_shared_folders(<<-sf)
|
|
115
79
|
config.vm.share_folder("foo", "bar", "baz", :sync => true)
|
|
116
|
-
|
|
80
|
+
sf
|
|
117
81
|
|
|
118
82
|
folder = @folders["foo"].dup
|
|
119
83
|
|
|
@@ -122,25 +86,12 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
122
86
|
end
|
|
123
87
|
end
|
|
124
88
|
|
|
125
|
-
context "unison shared folders" do
|
|
126
|
-
setup do
|
|
127
|
-
@folders = stub_shared_folders do |config|
|
|
128
|
-
config.vm.share_folder("foo", "bar", "baz", :sync => true)
|
|
129
|
-
config.vm.share_folder("bar", "foo", "baz")
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
should "only return the folders marked for syncing" do
|
|
134
|
-
result = @instance.unison_folders
|
|
135
|
-
assert_equal 1, result.length
|
|
136
|
-
assert result.has_key?("foo")
|
|
137
|
-
assert !result.has_key?("bar")
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
89
|
context "setting up shared folder metadata" do
|
|
142
90
|
setup do
|
|
143
|
-
stub_shared_folders
|
|
91
|
+
stub_shared_folders(<<-sf)
|
|
92
|
+
config.vm.share_folder("foo", "fooguest", "foohost")
|
|
93
|
+
config.vm.share_folder("bar", "barguest", "barhost")
|
|
94
|
+
sf
|
|
144
95
|
end
|
|
145
96
|
|
|
146
97
|
should "add all shared folders to the VM" do
|
|
@@ -162,7 +113,10 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
162
113
|
|
|
163
114
|
context "mounting the shared folders" do
|
|
164
115
|
setup do
|
|
165
|
-
@folders = stub_shared_folders
|
|
116
|
+
@folders = stub_shared_folders(<<-sf)
|
|
117
|
+
config.vm.share_folder("foo", "fooguest", "foohost")
|
|
118
|
+
config.vm.share_folder("bar", "barguest", "barhost")
|
|
119
|
+
sf
|
|
166
120
|
@ssh = mock("ssh")
|
|
167
121
|
@vm.ssh.stubs(:execute).yields(@ssh)
|
|
168
122
|
@vm.system.stubs(:mount_shared_folder)
|
|
@@ -177,39 +131,4 @@ class ShareFoldersVMActionTest < Test::Unit::TestCase
|
|
|
177
131
|
@instance.mount_shared_folders
|
|
178
132
|
end
|
|
179
133
|
end
|
|
180
|
-
|
|
181
|
-
context "setting up unison" do
|
|
182
|
-
setup do
|
|
183
|
-
@ssh = mock("ssh")
|
|
184
|
-
@vm.ssh.stubs(:execute).yields(@ssh)
|
|
185
|
-
|
|
186
|
-
@folders = stub_shared_folders do |config|
|
|
187
|
-
config.vm.share_folder("foo", "bar", "baz", :sync => true)
|
|
188
|
-
config.vm.share_folder("bar", "foo", "baz")
|
|
189
|
-
end
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
should "do nothing if unison folders is empty" do
|
|
193
|
-
@instance.stubs(:unison_folders).returns({})
|
|
194
|
-
@vm.ssh.expects(:execute).never
|
|
195
|
-
@instance.setup_unison
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
should "prepare unison then create for each folder" do
|
|
199
|
-
seq = sequence("unison seq")
|
|
200
|
-
@vm.system.expects(:prepare_unison).with(@ssh).once.in_sequence(seq)
|
|
201
|
-
@instance.unison_folders.each do |name, data|
|
|
202
|
-
if data[:sync]
|
|
203
|
-
@vm.system.expects(:create_unison).with do |ssh, opts|
|
|
204
|
-
assert_equal @ssh, ssh
|
|
205
|
-
assert_equal data, opts
|
|
206
|
-
|
|
207
|
-
true
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
@instance.setup_unison
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
134
|
end
|