fixed-vagrant 0.7.4.dev
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 +15 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +272 -0
- data/Gemfile +21 -0
- data/LICENSE +21 -0
- data/README.md +75 -0
- data/Rakefile +22 -0
- data/bin/vagrant +22 -0
- data/config/default.rb +39 -0
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.ppk +26 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant.rb +42 -0
- data/lib/vagrant/action.rb +134 -0
- data/lib/vagrant/action/box.rb +11 -0
- data/lib/vagrant/action/box/destroy.rb +21 -0
- data/lib/vagrant/action/box/download.rb +72 -0
- data/lib/vagrant/action/box/package.rb +19 -0
- data/lib/vagrant/action/box/unpackage.rb +55 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +124 -0
- data/lib/vagrant/action/builtin.rb +104 -0
- data/lib/vagrant/action/env.rb +7 -0
- data/lib/vagrant/action/env/set.rb +18 -0
- data/lib/vagrant/action/environment.rb +50 -0
- data/lib/vagrant/action/general.rb +8 -0
- data/lib/vagrant/action/general/package.rb +109 -0
- data/lib/vagrant/action/general/validate.rb +19 -0
- data/lib/vagrant/action/vm.rb +31 -0
- data/lib/vagrant/action/vm/boot.rb +48 -0
- data/lib/vagrant/action/vm/check_box.rb +28 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +30 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +39 -0
- data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +32 -0
- data/lib/vagrant/action/vm/customize.rb +21 -0
- data/lib/vagrant/action/vm/destroy.rb +19 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +30 -0
- data/lib/vagrant/action/vm/discard_state.rb +22 -0
- data/lib/vagrant/action/vm/export.rb +52 -0
- data/lib/vagrant/action/vm/forward_ports.rb +134 -0
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
- data/lib/vagrant/action/vm/halt.rb +29 -0
- data/lib/vagrant/action/vm/host_name.rb +21 -0
- data/lib/vagrant/action/vm/import.rb +35 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
- data/lib/vagrant/action/vm/network.rb +139 -0
- data/lib/vagrant/action/vm/nfs.rb +159 -0
- data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
- data/lib/vagrant/action/vm/package.rb +23 -0
- data/lib/vagrant/action/vm/package_vagrantfile.rb +33 -0
- data/lib/vagrant/action/vm/provision.rb +41 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/share_folders.rb +70 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +79 -0
- data/lib/vagrant/box.rb +90 -0
- data/lib/vagrant/box_collection.rb +53 -0
- data/lib/vagrant/cli.rb +55 -0
- data/lib/vagrant/command.rb +25 -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 +107 -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 +42 -0
- data/lib/vagrant/command/ssh_config.rb +26 -0
- data/lib/vagrant/command/status.rb +22 -0
- data/lib/vagrant/command/suspend.rb +17 -0
- data/lib/vagrant/command/up.rb +19 -0
- data/lib/vagrant/command/upgrade_to_060.rb +45 -0
- data/lib/vagrant/command/version.rb +13 -0
- data/lib/vagrant/config.rb +123 -0
- data/lib/vagrant/config/base.rb +85 -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 +33 -0
- data/lib/vagrant/config/top.rb +61 -0
- data/lib/vagrant/config/vagrant.rb +16 -0
- data/lib/vagrant/config/vm.rb +137 -0
- data/lib/vagrant/config/vm/provisioner.rb +56 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/data_store.rb +70 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/base.rb +23 -0
- data/lib/vagrant/downloaders/file.rb +22 -0
- data/lib/vagrant/downloaders/http.rb +64 -0
- data/lib/vagrant/environment.rb +392 -0
- data/lib/vagrant/errors.rb +332 -0
- data/lib/vagrant/hosts.rb +8 -0
- data/lib/vagrant/hosts/arch.rb +27 -0
- data/lib/vagrant/hosts/base.rb +78 -0
- data/lib/vagrant/hosts/bsd.rb +52 -0
- data/lib/vagrant/hosts/linux.rb +47 -0
- data/lib/vagrant/plugin.rb +57 -0
- data/lib/vagrant/provisioners.rb +9 -0
- data/lib/vagrant/provisioners/base.rb +63 -0
- data/lib/vagrant/provisioners/chef.rb +130 -0
- data/lib/vagrant/provisioners/chef_server.rb +103 -0
- data/lib/vagrant/provisioners/chef_solo.rb +142 -0
- data/lib/vagrant/provisioners/puppet.rb +137 -0
- data/lib/vagrant/provisioners/puppet_server.rb +55 -0
- data/lib/vagrant/provisioners/shell.rb +52 -0
- data/lib/vagrant/ssh.rb +173 -0
- data/lib/vagrant/ssh/session.rb +125 -0
- data/lib/vagrant/systems.rb +11 -0
- data/lib/vagrant/systems/base.rb +87 -0
- data/lib/vagrant/systems/debian.rb +36 -0
- data/lib/vagrant/systems/freebsd.rb +84 -0
- data/lib/vagrant/systems/gentoo.rb +27 -0
- data/lib/vagrant/systems/linux.rb +83 -0
- data/lib/vagrant/systems/linux/config.rb +21 -0
- data/lib/vagrant/systems/linux/error.rb +9 -0
- data/lib/vagrant/systems/redhat.rb +39 -0
- data/lib/vagrant/systems/solaris.rb +62 -0
- data/lib/vagrant/systems/ubuntu.rb +17 -0
- data/lib/vagrant/test_helpers.rb +128 -0
- data/lib/vagrant/ui.rb +69 -0
- data/lib/vagrant/util.rb +13 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/plain_logger.rb +25 -0
- data/lib/vagrant/util/platform.rb +65 -0
- data/lib/vagrant/util/resource_logger.rb +63 -0
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +177 -0
- data/templates/chef_server_client.erb +18 -0
- data/templates/chef_solo_solo.erb +19 -0
- data/templates/commands/init/Vagrantfile.erb +82 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/locales/en.yml +535 -0
- data/templates/network_entry_debian.erb +8 -0
- data/templates/network_entry_gentoo.erb +5 -0
- data/templates/network_entry_redhat.erb +8 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/ssh_config.erb +9 -0
- data/test/locales/en.yml +8 -0
- data/test/test_helper.rb +26 -0
- data/test/vagrant/action/box/destroy_test.rb +18 -0
- data/test/vagrant/action/box/download_test.rb +125 -0
- data/test/vagrant/action/box/package_test.rb +25 -0
- data/test/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/vagrant/action/box/verify_test.rb +30 -0
- data/test/vagrant/action/builder_test.rb +203 -0
- data/test/vagrant/action/env/set_test.rb +24 -0
- data/test/vagrant/action/environment_test.rb +27 -0
- data/test/vagrant/action/general/package_test.rb +268 -0
- data/test/vagrant/action/general/validate_test.rb +31 -0
- data/test/vagrant/action/vm/boot_test.rb +66 -0
- data/test/vagrant/action/vm/check_box_test.rb +56 -0
- data/test/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +72 -0
- data/test/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/vagrant/action/vm/clear_shared_folders_test.rb +49 -0
- data/test/vagrant/action/vm/customize_test.rb +30 -0
- data/test/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/vagrant/action/vm/export_test.rb +107 -0
- data/test/vagrant/action/vm/forward_ports_helpers_test.rb +70 -0
- data/test/vagrant/action/vm/forward_ports_test.rb +194 -0
- data/test/vagrant/action/vm/halt_test.rb +79 -0
- data/test/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/vagrant/action/vm/import_test.rb +66 -0
- data/test/vagrant/action/vm/match_mac_address_test.rb +36 -0
- data/test/vagrant/action/vm/network_test.rb +286 -0
- data/test/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/vagrant/action/vm/package_test.rb +25 -0
- data/test/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/vagrant/action/vm/provision_test.rb +90 -0
- data/test/vagrant/action/vm/resume_test.rb +35 -0
- data/test/vagrant/action/vm/share_folders_test.rb +139 -0
- data/test/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/vagrant/action/warden_test.rb +119 -0
- data/test/vagrant/action_test.rb +89 -0
- data/test/vagrant/box_collection_test.rb +45 -0
- data/test/vagrant/box_test.rb +74 -0
- 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/command/package_test.rb +27 -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 +35 -0
- data/test/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/vagrant/config/vm_test.rb +86 -0
- data/test/vagrant/config_test.rb +162 -0
- data/test/vagrant/data_store_test.rb +77 -0
- data/test/vagrant/downloaders/base_test.rb +28 -0
- data/test/vagrant/downloaders/file_test.rb +48 -0
- data/test/vagrant/downloaders/http_test.rb +80 -0
- data/test/vagrant/environment_test.rb +508 -0
- data/test/vagrant/errors_test.rb +42 -0
- data/test/vagrant/hosts/base_test.rb +46 -0
- data/test/vagrant/hosts/bsd_test.rb +53 -0
- data/test/vagrant/hosts/linux_test.rb +54 -0
- data/test/vagrant/plugin_test.rb +9 -0
- data/test/vagrant/provisioners/base_test.rb +63 -0
- data/test/vagrant/provisioners/chef_server_test.rb +188 -0
- data/test/vagrant/provisioners/chef_solo_test.rb +219 -0
- data/test/vagrant/provisioners/chef_test.rb +179 -0
- data/test/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/vagrant/provisioners/shell_test.rb +68 -0
- data/test/vagrant/ssh/session_test.rb +40 -0
- data/test/vagrant/ssh_test.rb +342 -0
- data/test/vagrant/systems/base_test.rb +18 -0
- data/test/vagrant/systems/linux_test.rb +114 -0
- data/test/vagrant/ui_test.rb +29 -0
- data/test/vagrant/util/busy_test.rb +106 -0
- data/test/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
- data/test/vagrant/util/plain_logger_test.rb +17 -0
- data/test/vagrant/util/platform_test.rb +18 -0
- data/test/vagrant/util/resource_logger_test.rb +78 -0
- data/test/vagrant/util/retryable_test.rb +50 -0
- data/test/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/vagrant/util/template_renderer_test.rb +145 -0
- data/test/vagrant/vm_test.rb +291 -0
- data/vagrant.gemspec +36 -0
- metadata +514 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ErrorsTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Errors::VagrantError
|
|
6
|
+
@super = Class.new(@klass) { error_namespace("vagrant.test.errors") }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
should "set the given status code" do
|
|
10
|
+
klass = Class.new(@super) { status_code(4444) }
|
|
11
|
+
assert_equal 4444, klass.new.status_code
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should "raise an error if attempting to set the same status code twice" do
|
|
15
|
+
klass = Class.new(@super) { status_code(4445) }
|
|
16
|
+
|
|
17
|
+
assert_raises(RuntimeError) {
|
|
18
|
+
Class.new(@super) { status_code(4445) }
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "translate the given message if non-hash is given" do
|
|
23
|
+
klass = Class.new(@super)
|
|
24
|
+
assert_equal I18n.t("vagrant.test.errors.test_key"), klass.new("test_key").message
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should "use the alternate namespace if given" do
|
|
28
|
+
klass = Class.new(@super)
|
|
29
|
+
instance = klass.new(:_key => :test_key, :_namespace => "vagrant.test.alternate")
|
|
30
|
+
assert_equal I18n.t("vagrant.test.alternate.test_key"), instance.message
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
should "use the translation from I18n if specified" do
|
|
34
|
+
klass = Class.new(@super) { error_key(:test_key) }
|
|
35
|
+
assert_equal I18n.t("vagrant.test.errors.test_key"), klass.new.message
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "use the translation with the options specified if key given" do
|
|
39
|
+
klass = Class.new(@super) { error_key(:test_key_with_interpolation) }
|
|
40
|
+
assert_equal I18n.t("vagrant.test.errors.test_key_with_interpolation", :key => "yo"), klass.new(:key => "yo").message
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class BaseHostTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Hosts::Base
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "class methods" do
|
|
9
|
+
context "loading" do
|
|
10
|
+
setup do
|
|
11
|
+
@env = vagrant_env
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should "return detected class if klass is nil" do
|
|
15
|
+
Vagrant::Util::Platform.stubs(:platform).returns("darwin")
|
|
16
|
+
result = @klass.load(@env, nil)
|
|
17
|
+
assert result.is_a?(Vagrant::Hosts::BSD)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
should "instantiate the given class" do
|
|
21
|
+
result = @klass.load(@env, Vagrant::Hosts::BSD)
|
|
22
|
+
assert result.is_a?(Vagrant::Hosts::BSD)
|
|
23
|
+
assert_equal @env, result.env
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "detecting class" do
|
|
28
|
+
should "return the proper class" do
|
|
29
|
+
Vagrant::Util::Platform.stubs(:platform).returns("darwin10")
|
|
30
|
+
assert_equal Vagrant::Hosts::BSD, @klass.detect
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
should "return nil if no class is detected" do
|
|
34
|
+
Vagrant::Util::Platform.stubs(:platform).returns("boo")
|
|
35
|
+
assert_nil @klass.detect
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "return nil if an exception is raised" do
|
|
39
|
+
Vagrant::Util::Platform.stubs(:platform).returns("boo")
|
|
40
|
+
assert_nothing_raised {
|
|
41
|
+
assert_nil @klass.detect
|
|
42
|
+
}
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class BSDHostTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Hosts::BSD
|
|
6
|
+
@env = vagrant_env
|
|
7
|
+
@instance = @klass.new(@env.vms.values.first.env)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "supporting nfs check" do
|
|
11
|
+
should "support NFS" do
|
|
12
|
+
@instance.expects(:system).returns(true)
|
|
13
|
+
assert @instance.nfs?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
should "not support NFS if nfsd is not found" do
|
|
17
|
+
@instance.expects(:system).returns(false)
|
|
18
|
+
assert !@instance.nfs?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
should "retry until a boolean is returned" do
|
|
22
|
+
seq = sequence("seq")
|
|
23
|
+
@instance.expects(:system).in_sequence(seq).raises(TypeError.new("foo"))
|
|
24
|
+
@instance.expects(:system).in_sequence(seq).returns(true)
|
|
25
|
+
assert @instance.nfs?
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "nfs export" do
|
|
30
|
+
setup do
|
|
31
|
+
@instance.stubs(:system)
|
|
32
|
+
|
|
33
|
+
@ip = "foo"
|
|
34
|
+
@folders = "bar"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
should "output the lines of the rendered template" do
|
|
38
|
+
output = %W[foo bar baz].join("\n")
|
|
39
|
+
Vagrant::Util::TemplateRenderer.expects(:render).with("nfs/exports",
|
|
40
|
+
:uuid => @instance.env.vm.uuid,
|
|
41
|
+
:ip => @ip,
|
|
42
|
+
:folders => @folders).returns(output)
|
|
43
|
+
|
|
44
|
+
@instance.expects(:system).times(output.split("\n").length)
|
|
45
|
+
@instance.expects(:system).with("sudo nfsd restart")
|
|
46
|
+
@instance.nfs_export(@ip, @folders)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "nfs cleanup" do
|
|
51
|
+
# TODO: How to test all the system calls?
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class LinuxHostTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Hosts::Linux
|
|
6
|
+
@env = vagrant_env
|
|
7
|
+
|
|
8
|
+
@instance = @klass.new(@env.vms.values.first.env)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "supporting nfs check" do
|
|
12
|
+
should "support NFS" do
|
|
13
|
+
@instance.expects(:system).returns(true)
|
|
14
|
+
assert @instance.nfs?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
should "not support NFS if nfsd is not found" do
|
|
18
|
+
@instance.expects(:system).returns(false)
|
|
19
|
+
assert !@instance.nfs?
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "retry until a boolean is returned" do
|
|
23
|
+
seq = sequence("seq")
|
|
24
|
+
@instance.expects(:system).in_sequence(seq).raises(TypeError.new("foo"))
|
|
25
|
+
@instance.expects(:system).in_sequence(seq).returns(true)
|
|
26
|
+
assert @instance.nfs?
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "nfs export" do
|
|
31
|
+
setup do
|
|
32
|
+
@instance.stubs(:system)
|
|
33
|
+
|
|
34
|
+
@ip = "foo"
|
|
35
|
+
@folders = "bar"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
should "output the lines of the rendered template" do
|
|
39
|
+
output = %W[foo bar baz].join("\n")
|
|
40
|
+
Vagrant::Util::TemplateRenderer.expects(:render).with("nfs/exports_linux",
|
|
41
|
+
:uuid => @instance.env.vm.uuid,
|
|
42
|
+
:ip => @ip,
|
|
43
|
+
:folders => @folders).returns(output)
|
|
44
|
+
|
|
45
|
+
@instance.expects(:system).times(output.split("\n").length)
|
|
46
|
+
@instance.expects(:system).with("sudo /etc/init.d/nfs-kernel-server restart")
|
|
47
|
+
@instance.nfs_export(@ip, @folders)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "nfs cleanup" do
|
|
52
|
+
# TODO: How to test all the system calls?
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class BaseProvisionerTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Provisioners::Base
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
should "include the util class so subclasses have access to it" do
|
|
9
|
+
assert Vagrant::Provisioners::Base.include?(Vagrant::Util)
|
|
10
|
+
end
|
|
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
|
+
|
|
30
|
+
context "base instance" do
|
|
31
|
+
setup do
|
|
32
|
+
@env = Vagrant::Action::Environment.new(vagrant_env)
|
|
33
|
+
@config = mock("config")
|
|
34
|
+
@base = Vagrant::Provisioners::Base.new(@env, @config)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
should "set the environment" do
|
|
38
|
+
assert_equal @env.env, @base.env
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
should "return the VM which the provisioner is acting on" do
|
|
42
|
+
assert_equal @env.env.vm, @base.vm
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
should "provide access to the config" do
|
|
46
|
+
assert_equal @config, @base.config
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
should "implement provision! which does nothing" do
|
|
50
|
+
assert_nothing_raised do
|
|
51
|
+
assert @base.respond_to?(:provision!)
|
|
52
|
+
@base.provision!
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
should "implement prepare which does nothing" do
|
|
57
|
+
assert_nothing_raised do
|
|
58
|
+
assert @base.respond_to?(:prepare)
|
|
59
|
+
@base.prepare
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ChefServerProvisionerTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Provisioners::ChefServer
|
|
6
|
+
|
|
7
|
+
@action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
|
|
8
|
+
|
|
9
|
+
@config = @klass::Config.new
|
|
10
|
+
@action = @klass.new(@action_env, @config)
|
|
11
|
+
@env = @action.env
|
|
12
|
+
@vm = @action.vm
|
|
13
|
+
end
|
|
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
|
+
|
|
43
|
+
context "provisioning" do
|
|
44
|
+
should "run the proper sequence of methods in order" do
|
|
45
|
+
prov_seq = sequence("prov_seq")
|
|
46
|
+
@action.expects(:verify_binary).with("chef-client").once.in_sequence(prov_seq)
|
|
47
|
+
@action.expects(:chown_provisioning_folder).once.in_sequence(prov_seq)
|
|
48
|
+
@action.expects(:create_client_key_folder).once.in_sequence(prov_seq)
|
|
49
|
+
@action.expects(:upload_validation_key).once.in_sequence(prov_seq)
|
|
50
|
+
@action.expects(:setup_json).once.in_sequence(prov_seq)
|
|
51
|
+
@action.expects(:setup_server_config).once.in_sequence(prov_seq)
|
|
52
|
+
@action.expects(:run_chef_client).once.in_sequence(prov_seq)
|
|
53
|
+
@action.provision!
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "preparing" do
|
|
58
|
+
setup do
|
|
59
|
+
File.stubs(:file?).returns(true)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
should "not raise an exception if validation_key_path is set" do
|
|
63
|
+
@config.validation_key_path = "7"
|
|
64
|
+
@config.chef_server_url = "7"
|
|
65
|
+
|
|
66
|
+
assert_nothing_raised { @action.prepare }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
should "raise an exception if validation_key_path is nil" do
|
|
70
|
+
@config.validation_key_path = nil
|
|
71
|
+
|
|
72
|
+
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
|
73
|
+
@action.prepare
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
should "not raise an exception if validation_key_path does exist" do
|
|
78
|
+
@config.validation_key_path = vagrantfile(tmp_path)
|
|
79
|
+
@config.chef_server_url = "7"
|
|
80
|
+
|
|
81
|
+
assert_nothing_raised { @action.prepare }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
should "raise an exception if validation_key_path doesn't exist" do
|
|
85
|
+
@config.validation_key_path = "7"
|
|
86
|
+
@config.chef_server_url = "7"
|
|
87
|
+
|
|
88
|
+
File.expects(:file?).with(@action.validation_key_path).returns(false)
|
|
89
|
+
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
|
90
|
+
@action.prepare
|
|
91
|
+
}
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
should "not raise an exception if chef_server_url is set" do
|
|
95
|
+
@config.validation_key_path = vagrantfile(tmp_path)
|
|
96
|
+
@config.chef_server_url = "7"
|
|
97
|
+
|
|
98
|
+
assert_nothing_raised { @action.prepare }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
should "raise an exception if chef_server_url is nil" do
|
|
102
|
+
@config.chef_server_url = nil
|
|
103
|
+
|
|
104
|
+
assert_raises(Vagrant::Provisioners::Chef::ChefError) {
|
|
105
|
+
@action.prepare
|
|
106
|
+
}
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context "creating the client key folder" do
|
|
111
|
+
setup do
|
|
112
|
+
@raw_path = "/foo/bar/baz.pem"
|
|
113
|
+
@config.client_key_path = @raw_path
|
|
114
|
+
|
|
115
|
+
@path = Pathname.new(@raw_path)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
should "create the folder using the dirname of the path" do
|
|
119
|
+
ssh = mock("ssh")
|
|
120
|
+
ssh.expects(:sudo!).with("mkdir -p #{@path.dirname}").once
|
|
121
|
+
@vm.ssh.expects(:execute).yields(ssh)
|
|
122
|
+
@action.create_client_key_folder
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "uploading the validation key" do
|
|
127
|
+
should "upload the validation key to the provisioning path" do
|
|
128
|
+
@action.expects(:validation_key_path).once.returns("foo")
|
|
129
|
+
@action.expects(:guest_validation_key_path).once.returns("bar")
|
|
130
|
+
@vm.ssh.expects(:upload!).with("foo", "bar").once
|
|
131
|
+
@action.upload_validation_key
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
context "the validation key path" do
|
|
136
|
+
should "expand the configured key path" do
|
|
137
|
+
result = mock("result")
|
|
138
|
+
File.expects(:expand_path).with(@config.validation_key_path, @env.root_path).once.returns(result)
|
|
139
|
+
assert_equal result, @action.validation_key_path
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
context "the guest validation key path" do
|
|
144
|
+
should "be the provisioning path joined with validation.pem" do
|
|
145
|
+
result = mock("result")
|
|
146
|
+
File.expects(:join).with(@config.provisioning_path, "validation.pem").once.returns(result)
|
|
147
|
+
assert_equal result, @action.guest_validation_key_path
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
context "generating and uploading chef client configuration file" do
|
|
152
|
+
setup do
|
|
153
|
+
@action.stubs(:guest_validation_key_path).returns("foo")
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
should "call setup_config with proper variables" do
|
|
157
|
+
@action.expects(:setup_config).with("chef_server_client", "client.rb", {
|
|
158
|
+
:node_name => @config.node_name,
|
|
159
|
+
:chef_server_url => @config.chef_server_url,
|
|
160
|
+
:validation_client_name => @config.validation_client_name,
|
|
161
|
+
:validation_key => @action.guest_validation_key_path,
|
|
162
|
+
:client_key => @config.client_key_path,
|
|
163
|
+
:file_cache_path => @config.file_cache_path,
|
|
164
|
+
:file_backup_path => @config.file_backup_path
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
@action.setup_server_config
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
context "running chef client" do
|
|
172
|
+
setup do
|
|
173
|
+
@ssh = mock("ssh")
|
|
174
|
+
@vm.ssh.stubs(:execute).yields(@ssh)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
should "cd into the provisioning directory and run chef client" do
|
|
178
|
+
@ssh.expects(:sudo!).with(["cd #{@config.provisioning_path}", "chef-client -c client.rb -j dna.json"]).once
|
|
179
|
+
@action.run_chef_client
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
should "check the exit status if that is given" do
|
|
183
|
+
@ssh.stubs(:sudo!).yields(nil, :exit_status, :foo)
|
|
184
|
+
@ssh.expects(:check_exit_status).with(:foo, anything).once
|
|
185
|
+
@action.run_chef_client
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
end
|