vagrant 0.8.10 → 0.9.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/CHANGELOG.md +77 -1
- data/Gemfile +0 -14
- data/LICENSE +1 -1
- data/bin/vagrant +47 -20
- data/config/default.rb +6 -14
- data/lib/vagrant.rb +132 -5
- data/lib/vagrant/action.rb +45 -123
- data/lib/vagrant/action/box/destroy.rb +7 -3
- data/lib/vagrant/action/box/download.rb +8 -8
- data/lib/vagrant/action/box/package.rb +2 -2
- data/lib/vagrant/action/box/unpackage.rb +13 -7
- data/lib/vagrant/action/box/verify.rb +5 -5
- data/lib/vagrant/action/builder.rb +23 -19
- data/lib/vagrant/action/builtin.rb +117 -79
- data/lib/vagrant/action/env/set.rb +7 -4
- data/lib/vagrant/action/environment.rb +3 -41
- data/lib/vagrant/action/general/package.rb +14 -29
- data/lib/vagrant/action/general/validate.rb +2 -2
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +9 -9
- data/lib/vagrant/action/vm/check_accessible.rb +2 -2
- data/lib/vagrant/action/vm/check_box.rb +10 -12
- data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
- data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
- data/lib/vagrant/action/vm/customize.rb +19 -9
- data/lib/vagrant/action/vm/destroy.rb +4 -4
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
- data/lib/vagrant/action/vm/discard_state.rb +4 -4
- data/lib/vagrant/action/vm/export.rb +13 -8
- data/lib/vagrant/action/vm/forward_ports.rb +55 -102
- data/lib/vagrant/action/vm/halt.rb +9 -6
- data/lib/vagrant/action/vm/host_name.rb +4 -4
- data/lib/vagrant/action/vm/import.rb +19 -10
- data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
- data/lib/vagrant/action/vm/network.rb +300 -94
- data/lib/vagrant/action/vm/nfs.rb +41 -26
- data/lib/vagrant/action/vm/package.rb +1 -1
- data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
- data/lib/vagrant/action/vm/provision.rb +42 -13
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
- data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
- data/lib/vagrant/action/vm/resume.rb +4 -4
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +63 -39
- data/lib/vagrant/action/vm/suspend.rb +4 -4
- data/lib/vagrant/action/warden.rb +13 -6
- data/lib/vagrant/box.rb +9 -55
- data/lib/vagrant/box_collection.rb +22 -17
- data/lib/vagrant/cli.rb +62 -47
- data/lib/vagrant/command.rb +18 -20
- data/lib/vagrant/command/base.rb +135 -90
- data/lib/vagrant/command/box.rb +46 -21
- data/lib/vagrant/command/box_add.rb +33 -0
- data/lib/vagrant/command/box_list.rb +25 -0
- data/lib/vagrant/command/box_remove.rb +23 -0
- data/lib/vagrant/command/box_repackage.rb +23 -0
- data/lib/vagrant/command/destroy.rb +16 -5
- data/lib/vagrant/command/halt.rb +25 -7
- data/lib/vagrant/command/init.rb +30 -7
- data/lib/vagrant/command/package.rb +49 -18
- data/lib/vagrant/command/provision.rb +22 -9
- data/lib/vagrant/command/reload.rb +18 -5
- data/lib/vagrant/command/resume.rb +18 -5
- data/lib/vagrant/command/ssh.rb +69 -31
- data/lib/vagrant/command/ssh_config.rb +37 -22
- data/lib/vagrant/command/status.rb +22 -20
- data/lib/vagrant/command/suspend.rb +18 -5
- data/lib/vagrant/command/up.rb +41 -8
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +200 -0
- data/lib/vagrant/config.rb +29 -103
- data/lib/vagrant/config/base.rb +18 -26
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +1 -1
- data/lib/vagrant/config/loader.rb +125 -0
- data/lib/vagrant/config/nfs.rb +1 -3
- data/lib/vagrant/config/package.rb +1 -3
- data/lib/vagrant/config/ssh.rb +31 -16
- data/lib/vagrant/config/top.rb +36 -25
- data/lib/vagrant/config/vagrant.rb +2 -5
- data/lib/vagrant/config/vm.rb +115 -56
- data/lib/vagrant/config/vm/provisioner.rb +16 -20
- data/lib/vagrant/config/vm/sub_vm.rb +1 -1
- data/lib/vagrant/data_store.rb +23 -15
- data/lib/vagrant/downloaders/base.rb +7 -5
- data/lib/vagrant/downloaders/file.rb +4 -4
- data/lib/vagrant/downloaders/http.rb +4 -5
- data/lib/vagrant/driver.rb +7 -0
- data/lib/vagrant/driver/virtualbox.rb +121 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
- data/lib/vagrant/driver/virtualbox_base.rb +284 -0
- data/lib/vagrant/environment.rb +221 -240
- data/lib/vagrant/errors.rb +74 -25
- data/lib/vagrant/guest.rb +16 -0
- data/lib/vagrant/guest/arch.rb +48 -0
- data/lib/vagrant/{systems → guest}/base.rb +30 -18
- data/lib/vagrant/guest/debian.rb +61 -0
- data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
- data/lib/vagrant/guest/gentoo.rb +32 -0
- data/lib/vagrant/guest/linux.rb +78 -0
- data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/redhat.rb +66 -0
- data/lib/vagrant/guest/solaris.rb +114 -0
- data/lib/vagrant/{systems → guest}/suse.rb +2 -2
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +23 -6
- data/lib/vagrant/hosts/arch.rb +7 -3
- data/lib/vagrant/hosts/base.rb +36 -46
- data/lib/vagrant/hosts/bsd.rb +53 -16
- data/lib/vagrant/hosts/fedora.rb +14 -0
- data/lib/vagrant/hosts/freebsd.rb +6 -36
- data/lib/vagrant/hosts/linux.rb +45 -20
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/provisioners.rb +10 -7
- data/lib/vagrant/provisioners/base.rb +11 -34
- data/lib/vagrant/provisioners/chef.rb +30 -26
- data/lib/vagrant/provisioners/chef_client.rb +37 -23
- data/lib/vagrant/provisioners/chef_solo.rb +61 -16
- data/lib/vagrant/provisioners/puppet.rb +70 -38
- data/lib/vagrant/provisioners/puppet_server.rb +12 -13
- data/lib/vagrant/provisioners/shell.rb +24 -24
- data/lib/vagrant/registry.rb +49 -0
- data/lib/vagrant/ssh.rb +82 -153
- data/lib/vagrant/ui.rb +118 -50
- data/lib/vagrant/util/busy.rb +1 -1
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +1 -0
- data/lib/vagrant/util/subprocess.rb +227 -0
- data/lib/vagrant/version.rb +1 -1
- data/lib/vagrant/vm.rb +111 -97
- data/tasks/acceptance.rake +3 -3
- data/tasks/test.rake +7 -2
- data/templates/commands/init/Vagrantfile.erb +11 -4
- data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
- data/templates/guests/arch/network_dhcp.erb +7 -0
- data/templates/guests/arch/network_static.erb +7 -0
- data/templates/guests/debian/network_dhcp.erb +6 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/gentoo/network_dhcp.erb +4 -0
- data/templates/guests/gentoo/network_static.erb +4 -0
- data/templates/guests/redhat/network_dhcp.erb +6 -0
- data/templates/guests/redhat/network_static.erb +7 -0
- data/templates/locales/en.yml +241 -122
- data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
- data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
- data/test/acceptance/base.rb +10 -10
- data/test/acceptance/box_test.rb +28 -6
- data/test/acceptance/destroy_test.rb +1 -1
- data/test/acceptance/halt_test.rb +4 -4
- data/test/acceptance/init_test.rb +3 -3
- data/test/acceptance/networking/host_only_test.rb +37 -0
- data/test/acceptance/networking/port_forward_test.rb +125 -0
- data/test/acceptance/package_test.rb +46 -0
- data/test/acceptance/provisioning/basic_test.rb +61 -0
- data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
- data/test/acceptance/provisioning/shell_test.rb +53 -0
- data/test/acceptance/resume_test.rb +1 -1
- data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
- data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
- data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
- data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
- data/test/acceptance/ssh_test.rb +7 -2
- data/test/acceptance/support/config.rb +1 -1
- data/test/acceptance/support/isolated_environment.rb +41 -150
- data/test/acceptance/support/matchers/match_output.rb +1 -1
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +9 -1
- data/test/acceptance/support/shared/base_context.rb +16 -9
- data/test/acceptance/support/shared/command_examples.rb +4 -4
- data/test/acceptance/suspend_test.rb +1 -1
- data/test/acceptance/up_basic_test.rb +26 -7
- data/test/acceptance/up_with_box_url.rb +1 -1
- data/test/acceptance/vagrant_test.rb +1 -1
- data/test/acceptance/version_test.rb +0 -5
- data/test/support/isolated_environment.rb +46 -0
- data/test/{acceptance/support → support}/tempdir.rb +0 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +39 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +126 -177
- data/test/unit/vagrant/action/environment_test.rb +10 -21
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +64 -97
- data/test/unit/vagrant/box_collection_test.rb +44 -33
- data/test/unit/vagrant/box_test.rb +25 -65
- data/test/unit/vagrant/command/base_test.rb +141 -14
- data/test/unit/vagrant/config/base_test.rb +16 -43
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +62 -47
- data/test/unit/vagrant/config_test.rb +16 -151
- data/test/unit/vagrant/data_store_test.rb +43 -61
- data/test/unit/vagrant/downloaders/base_test.rb +12 -22
- data/test/unit/vagrant/downloaders/file_test.rb +58 -31
- data/test/unit/vagrant/downloaders/http_test.rb +12 -86
- data/test/unit/vagrant/environment_test.rb +107 -536
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +56 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +90 -34
- data/test/unit/vagrant_test.rb +27 -0
- data/test/{unit → unit_legacy}/locales/en.yml +0 -0
- data/test/{unit → unit_legacy}/test_helper.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
- data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
- data/test/unit_legacy/vagrant/box_test.rb +74 -0
- data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
- data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
- data/test/unit_legacy/vagrant/config_test.rb +148 -0
- data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
- data/test/unit_legacy/vagrant/environment_test.rb +539 -0
- data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
- data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
- data/vagrant.gemspec +7 -9
- metadata +214 -216
- data/keys/vagrant.ppk +0 -26
- data/lib/vagrant/action/box.rb +0 -11
- data/lib/vagrant/action/env.rb +0 -7
- data/lib/vagrant/action/general.rb +0 -8
- data/lib/vagrant/action/vm.rb +0 -34
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
- data/lib/vagrant/action/vm/modify.rb +0 -37
- data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
- data/lib/vagrant/command/group_base.rb +0 -107
- data/lib/vagrant/command/helpers.rb +0 -33
- data/lib/vagrant/command/named_base.rb +0 -14
- data/lib/vagrant/command/upgrade_to_060.rb +0 -45
- data/lib/vagrant/command/version.rb +0 -13
- data/lib/vagrant/ssh/session.rb +0 -136
- data/lib/vagrant/systems.rb +0 -13
- data/lib/vagrant/systems/arch.rb +0 -34
- data/lib/vagrant/systems/debian.rb +0 -36
- data/lib/vagrant/systems/gentoo.rb +0 -27
- data/lib/vagrant/systems/linux.rb +0 -82
- data/lib/vagrant/systems/linux/error.rb +0 -9
- data/lib/vagrant/systems/redhat.rb +0 -48
- data/lib/vagrant/systems/solaris.rb +0 -113
- data/lib/vagrant/systems/ubuntu.rb +0 -17
- data/templates/network_entry_arch.erb +0 -9
- data/templates/network_entry_debian.erb +0 -8
- data/templates/network_entry_gentoo.erb +0 -5
- data/templates/network_entry_redhat.erb +0 -9
- data/test/unit/vagrant/ui_test.rb +0 -29
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path("../../base", __FILE__)
|
2
|
+
|
3
|
+
describe Vagrant::Hosts do
|
4
|
+
let(:registry) { Vagrant::Registry.new }
|
5
|
+
|
6
|
+
it "detects the host that matches true" do
|
7
|
+
foo_klass = Class.new(Vagrant::Hosts::Base) do
|
8
|
+
def self.match?; false; end
|
9
|
+
end
|
10
|
+
|
11
|
+
bar_klass = Class.new(Vagrant::Hosts::Base) do
|
12
|
+
def self.match?; true; end
|
13
|
+
end
|
14
|
+
|
15
|
+
registry.register(:foo, foo_klass)
|
16
|
+
registry.register(:bar, bar_klass)
|
17
|
+
|
18
|
+
described_class.detect(registry).should == bar_klass
|
19
|
+
end
|
20
|
+
|
21
|
+
it "detects the host that matches true with the highest precedence first" do
|
22
|
+
foo_klass = Class.new(Vagrant::Hosts::Base) do
|
23
|
+
def self.match?; true; end
|
24
|
+
end
|
25
|
+
|
26
|
+
bar_klass = Class.new(Vagrant::Hosts::Base) do
|
27
|
+
def self.match?; true; end
|
28
|
+
def self.precedence; 9; end
|
29
|
+
end
|
30
|
+
|
31
|
+
registry.register(:foo, foo_klass)
|
32
|
+
registry.register(:bar, bar_klass)
|
33
|
+
|
34
|
+
described_class.detect(registry).should == bar_klass
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.expand_path("../../base", __FILE__)
|
2
|
+
|
3
|
+
describe Vagrant::Registry do
|
4
|
+
let(:instance) { described_class.new }
|
5
|
+
|
6
|
+
it "should return nil for nonexistent items" do
|
7
|
+
instance.get("foo").should be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should register a simple key/value" do
|
11
|
+
instance.register("foo", "value")
|
12
|
+
instance.get("foo").should == "value"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should register an item without calling the block yet" do
|
16
|
+
expect do
|
17
|
+
instance.register("foo") do
|
18
|
+
raise Exception, "BOOM!"
|
19
|
+
end
|
20
|
+
end.to_not raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should call and return the result of a block when asking for the ite" do
|
24
|
+
object = Object.new
|
25
|
+
instance.register("foo") do
|
26
|
+
object
|
27
|
+
end
|
28
|
+
|
29
|
+
instance.get("foo").should eql(object)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be enumerable" do
|
33
|
+
instance.register("foo", "foovalue")
|
34
|
+
instance.register("bar", "barvalue")
|
35
|
+
|
36
|
+
keys = []
|
37
|
+
values = []
|
38
|
+
instance.each do |key, value|
|
39
|
+
keys << key
|
40
|
+
values << value
|
41
|
+
end
|
42
|
+
|
43
|
+
keys.sort.should == ["bar", "foo"]
|
44
|
+
values.sort.should == ["barvalue", "foovalue"]
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be able to convert to a hash" do
|
48
|
+
instance.register("foo", "foovalue")
|
49
|
+
instance.register("bar", "barvalue")
|
50
|
+
|
51
|
+
result = instance.to_hash
|
52
|
+
result.should be_a(Hash)
|
53
|
+
result["foo"].should == "foovalue"
|
54
|
+
result["bar"].should == "barvalue"
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
2
|
+
require 'digest/md5'
|
3
|
+
require 'digest/sha1'
|
4
|
+
|
5
|
+
require 'vagrant/util/file_checksum'
|
6
|
+
|
7
|
+
describe FileChecksum do
|
8
|
+
include_context "unit"
|
9
|
+
|
10
|
+
let(:environment) { isolated_environment }
|
11
|
+
|
12
|
+
it "should return a valid checksum for a file" do
|
13
|
+
file = environment.workdir.join("file")
|
14
|
+
file.open("w+") { |f| f.write("HELLO!") }
|
15
|
+
|
16
|
+
# Check multiple digests
|
17
|
+
instance = described_class.new(file, Digest::MD5)
|
18
|
+
instance.checksum.should == "9ac96c64417b5976a58839eceaa77956"
|
19
|
+
|
20
|
+
instance = described_class.new(file, Digest::SHA1)
|
21
|
+
instance.checksum.should == "264b207c7913e461c43d0f63d2512f4017af4755"
|
22
|
+
end
|
23
|
+
end
|
@@ -1,39 +1,38 @@
|
|
1
|
-
require "
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
3
|
+
require "vagrant/util/hash_with_indifferent_access"
|
4
|
+
|
5
|
+
describe Vagrant::Util::HashWithIndifferentAccess do
|
6
|
+
let(:instance) { described_class.new }
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
it "is a Hash" do
|
9
|
+
instance.should be_kind_of(Hash)
|
11
10
|
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
it "allows indifferent access when setting with a string" do
|
13
|
+
instance["foo"] = "bar"
|
14
|
+
instance[:foo].should == "bar"
|
16
15
|
end
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
it "allows indifferent access when setting with a symbol" do
|
18
|
+
instance[:foo] = "bar"
|
19
|
+
instance["foo"].should == "bar"
|
21
20
|
end
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
it "allows indifferent key lookup" do
|
23
|
+
instance["foo"] = "bar"
|
24
|
+
instance.key?(:foo).should be
|
25
|
+
instance.has_key?(:foo).should be
|
26
|
+
instance.include?(:foo).should be
|
27
|
+
instance.member?(:foo).should be
|
29
28
|
end
|
30
29
|
|
31
|
-
|
32
|
-
instance =
|
30
|
+
it "allows for defaults to be passed in via an initializer block" do
|
31
|
+
instance = described_class.new do |h,k|
|
33
32
|
h[k] = "foo"
|
34
33
|
end
|
35
34
|
|
36
|
-
|
37
|
-
|
35
|
+
instance[:foo].should == "foo"
|
36
|
+
instance["bar"].should == "foo"
|
38
37
|
end
|
39
38
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
2
|
+
|
3
|
+
require "vagrant/util/network_ip"
|
4
|
+
|
5
|
+
describe Vagrant::Util::NetworkIP do
|
6
|
+
let(:klass) do
|
7
|
+
Class.new do
|
8
|
+
extend Vagrant::Util::NetworkIP
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "network address" do
|
13
|
+
it "calculates it properly" do
|
14
|
+
klass.network_address("192.168.2.234", "255.255.255.0").should == "192.168.2.0"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,50 +1,106 @@
|
|
1
|
-
require "
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require "vagrant/util/retryable"
|
4
|
+
|
5
|
+
describe Vagrant::Util::Retryable do
|
6
|
+
let(:klass) do
|
7
|
+
Class.new do
|
6
8
|
extend Vagrant::Util::Retryable
|
7
9
|
end
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
it "doesn't retry by default" do
|
13
|
+
tries = 0
|
14
|
+
|
15
|
+
block = lambda do
|
16
|
+
tries += 1
|
17
|
+
raise RuntimeError, "Try"
|
18
|
+
end
|
19
|
+
|
20
|
+
# It should re-raise the error
|
21
|
+
expect { klass.retryable(&block) }.
|
22
|
+
to raise_error(RuntimeError)
|
13
23
|
|
14
|
-
|
15
|
-
|
16
|
-
proc.call
|
17
|
-
raise "An error"
|
18
|
-
end
|
19
|
-
}
|
24
|
+
# It should've tried once
|
25
|
+
tries.should == 1
|
20
26
|
end
|
21
27
|
|
22
|
-
|
23
|
-
|
24
|
-
|
28
|
+
it "retries the set number of times" do
|
29
|
+
tries = 0
|
30
|
+
|
31
|
+
block = lambda do
|
32
|
+
tries += 1
|
33
|
+
raise RuntimeError, "Try"
|
34
|
+
end
|
35
|
+
|
36
|
+
# It should re-raise the error
|
37
|
+
expect { klass.retryable(:tries => 5, &block) }.
|
38
|
+
to raise_error(RuntimeError)
|
25
39
|
|
26
|
-
|
27
|
-
|
28
|
-
proc.call
|
29
|
-
raise StandardError.new
|
30
|
-
end
|
31
|
-
}
|
40
|
+
# It should've tried all specified times
|
41
|
+
tries.should == 5
|
32
42
|
end
|
33
43
|
|
34
|
-
|
35
|
-
|
36
|
-
proc.expects(:call).twice
|
44
|
+
it "only retries on the given exception" do
|
45
|
+
tries = 0
|
37
46
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
47
|
+
block = lambda do
|
48
|
+
tries += 1
|
49
|
+
raise StandardError, "Try"
|
50
|
+
end
|
51
|
+
|
52
|
+
# It should re-raise the error
|
53
|
+
expect { klass.retryable(:tries => 5, :on => RuntimeError, &block) }.
|
54
|
+
to raise_error(StandardError)
|
55
|
+
|
56
|
+
# It should've never tried since it was a different kind of error
|
57
|
+
tries.should == 1
|
44
58
|
end
|
45
59
|
|
46
|
-
|
47
|
-
|
48
|
-
|
60
|
+
it "can retry on multiple types of errors" do
|
61
|
+
tries = 0
|
62
|
+
|
63
|
+
foo_error = Class.new(StandardError)
|
64
|
+
bar_error = Class.new(StandardError)
|
65
|
+
|
66
|
+
block = lambda do
|
67
|
+
tries += 1
|
68
|
+
raise foo_error, "Try" if tries == 1
|
69
|
+
raise bar_error, "Try" if tries == 2
|
70
|
+
raise RuntimeError, "YAY"
|
71
|
+
end
|
72
|
+
|
73
|
+
# It should re-raise the error
|
74
|
+
expect { klass.retryable(:tries => 5, :on => [foo_error, bar_error], &block) }.
|
75
|
+
to raise_error(RuntimeError)
|
76
|
+
|
77
|
+
# It should've never tried since it was a different kind of error
|
78
|
+
tries.should == 3
|
79
|
+
end
|
80
|
+
|
81
|
+
it "doesn't sleep between tries by default" do
|
82
|
+
block = lambda do
|
83
|
+
raise RuntimeError, "Try"
|
84
|
+
end
|
85
|
+
|
86
|
+
# Sleep should never be called
|
87
|
+
klass.should_not_receive(:sleep)
|
88
|
+
|
89
|
+
# Run it.
|
90
|
+
expect { klass.retryable(:tries => 5, &block) }.
|
91
|
+
to raise_error(RuntimeError)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "sleeps specified amount between retries" do
|
95
|
+
block = lambda do
|
96
|
+
raise RuntimeError, "Try"
|
97
|
+
end
|
98
|
+
|
99
|
+
# Sleep should be called between each retry
|
100
|
+
klass.should_receive(:sleep).with(10).exactly(4).times
|
101
|
+
|
102
|
+
# Run it.
|
103
|
+
expect { klass.retryable(:tries => 5, :sleep => 10, &block) }.
|
104
|
+
to raise_error(RuntimeError)
|
49
105
|
end
|
50
106
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
|
3
|
+
describe Vagrant do
|
4
|
+
it "has the path to the source root" do
|
5
|
+
described_class.source_root.should == Pathname.new(File.expand_path("../../../", __FILE__))
|
6
|
+
end
|
7
|
+
|
8
|
+
it "has a registry for commands" do
|
9
|
+
described_class.commands.should be_a(Vagrant::Registry)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "has a registry for config keys" do
|
13
|
+
described_class.config_keys.should be_a(Vagrant::Registry)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "has a registry for hosts" do
|
17
|
+
described_class.hosts.should be_a(Vagrant::Registry)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "has a registry for guests" do
|
21
|
+
described_class.guests.should be_a(Vagrant::Registry)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "has a registry for provisioners" do
|
25
|
+
described_class.provisioners.should be_a(Vagrant::Registry)
|
26
|
+
end
|
27
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|