tnargav 1.2.2
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 +31 -0
- data/.gitsetup.yml +5 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +1067 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/README.md +89 -0
- data/Rakefile +18 -0
- data/bin/vagrant +106 -0
- data/config/default.rb +36 -0
- data/contrib/README.md +12 -0
- data/contrib/bash/completion.sh +3 -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.pub +1 -0
- data/lib/vagrant/action/builder.rb +174 -0
- data/lib/vagrant/action/builtin/box_add.rb +81 -0
- data/lib/vagrant/action/builtin/call.rb +67 -0
- data/lib/vagrant/action/builtin/config_validate.rb +30 -0
- data/lib/vagrant/action/builtin/confirm.rb +38 -0
- data/lib/vagrant/action/builtin/destroy_confirm.rb +21 -0
- data/lib/vagrant/action/builtin/env_set.rb +24 -0
- data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
- data/lib/vagrant/action/builtin/handle_box_url.rb +77 -0
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +134 -0
- data/lib/vagrant/action/builtin/lock.rb +57 -0
- data/lib/vagrant/action/builtin/nfs.rb +118 -0
- data/lib/vagrant/action/builtin/provision.rb +70 -0
- data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
- data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
- data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
- data/lib/vagrant/action/general/package.rb +103 -0
- data/lib/vagrant/action/hook.rb +107 -0
- data/lib/vagrant/action/runner.rb +69 -0
- data/lib/vagrant/action/warden.rb +103 -0
- data/lib/vagrant/action.rb +43 -0
- data/lib/vagrant/batch_action.rb +113 -0
- data/lib/vagrant/box.rb +97 -0
- data/lib/vagrant/box_collection.rb +375 -0
- data/lib/vagrant/cli.rb +82 -0
- data/lib/vagrant/config/loader.rb +222 -0
- data/lib/vagrant/config/v1/dummy_config.rb +13 -0
- data/lib/vagrant/config/v1/loader.rb +105 -0
- data/lib/vagrant/config/v1/root.rb +60 -0
- data/lib/vagrant/config/v1.rb +9 -0
- data/lib/vagrant/config/v2/dummy_config.rb +13 -0
- data/lib/vagrant/config/v2/loader.rb +141 -0
- data/lib/vagrant/config/v2/root.rb +105 -0
- data/lib/vagrant/config/v2/util.rb +21 -0
- data/lib/vagrant/config/v2.rb +9 -0
- data/lib/vagrant/config/version_base.rb +80 -0
- data/lib/vagrant/config.rb +61 -0
- data/lib/vagrant/environment.rb +843 -0
- data/lib/vagrant/errors.rb +570 -0
- data/lib/vagrant/guest.rb +163 -0
- data/lib/vagrant/hosts.rb +28 -0
- data/lib/vagrant/machine.rb +325 -0
- data/lib/vagrant/machine_state.rb +45 -0
- data/lib/vagrant/plugin/v1/command.rb +169 -0
- data/lib/vagrant/plugin/v1/communicator.rb +98 -0
- data/lib/vagrant/plugin/v1/config.rb +112 -0
- data/lib/vagrant/plugin/v1/errors.rb +15 -0
- data/lib/vagrant/plugin/v1/guest.rb +92 -0
- data/lib/vagrant/plugin/v1/host.rb +66 -0
- data/lib/vagrant/plugin/v1/manager.rb +131 -0
- data/lib/vagrant/plugin/v1/plugin.rb +229 -0
- data/lib/vagrant/plugin/v1/provider.rb +68 -0
- data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
- data/lib/vagrant/plugin/v1.rb +19 -0
- data/lib/vagrant/plugin/v2/command.rb +234 -0
- data/lib/vagrant/plugin/v2/communicator.rb +98 -0
- data/lib/vagrant/plugin/v2/components.rb +47 -0
- data/lib/vagrant/plugin/v2/config.rb +136 -0
- data/lib/vagrant/plugin/v2/errors.rb +15 -0
- data/lib/vagrant/plugin/v2/guest.rb +78 -0
- data/lib/vagrant/plugin/v2/host.rb +66 -0
- data/lib/vagrant/plugin/v2/manager.rb +173 -0
- data/lib/vagrant/plugin/v2/plugin.rb +226 -0
- data/lib/vagrant/plugin/v2/provider.rb +69 -0
- data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
- data/lib/vagrant/plugin/v2.rb +22 -0
- data/lib/vagrant/plugin.rb +6 -0
- data/lib/vagrant/registry.rb +78 -0
- data/lib/vagrant/ui.rb +215 -0
- data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/counter.rb +24 -0
- data/lib/vagrant/util/downloader.rb +146 -0
- data/lib/vagrant/util/file_checksum.rb +38 -0
- data/lib/vagrant/util/file_mode.rb +12 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/is_port_open.rb +38 -0
- data/lib/vagrant/util/line_ending_helpers.rb +14 -0
- data/lib/vagrant/util/network_ip.rb +28 -0
- data/lib/vagrant/util/platform.rb +58 -0
- data/lib/vagrant/util/retryable.rb +31 -0
- data/lib/vagrant/util/safe_chdir.rb +33 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/scoped_hash_override.rb +45 -0
- data/lib/vagrant/util/ssh.rb +150 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/string_block_editor.rb +77 -0
- data/lib/vagrant/util/subprocess.rb +273 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/util/which.rb +43 -0
- data/lib/vagrant/util.rb +12 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant.rb +258 -0
- data/plugins/README.md +5 -0
- data/plugins/commands/box/command/add.rb +51 -0
- data/plugins/commands/box/command/list.rb +41 -0
- data/plugins/commands/box/command/remove.rb +37 -0
- data/plugins/commands/box/command/repackage.rb +43 -0
- data/plugins/commands/box/command/root.rb +75 -0
- data/plugins/commands/box/plugin.rb +15 -0
- data/plugins/commands/destroy/command.rb +31 -0
- data/plugins/commands/destroy/plugin.rb +18 -0
- data/plugins/commands/halt/command.rb +33 -0
- data/plugins/commands/halt/plugin.rb +18 -0
- data/plugins/commands/init/command.rb +40 -0
- data/plugins/commands/init/plugin.rb +18 -0
- data/plugins/commands/package/command.rb +83 -0
- data/plugins/commands/package/plugin.rb +18 -0
- data/plugins/commands/plugin/action/bundler_check.rb +25 -0
- data/plugins/commands/plugin/action/install_gem.rb +81 -0
- data/plugins/commands/plugin/action/license_plugin.rb +54 -0
- data/plugins/commands/plugin/action/list_plugins.rb +54 -0
- data/plugins/commands/plugin/action/prune_gems.rb +149 -0
- data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
- data/plugins/commands/plugin/action.rb +52 -0
- data/plugins/commands/plugin/command/base.rb +22 -0
- data/plugins/commands/plugin/command/install.rb +58 -0
- data/plugins/commands/plugin/command/license.rb +31 -0
- data/plugins/commands/plugin/command/list.rb +28 -0
- data/plugins/commands/plugin/command/root.rb +75 -0
- data/plugins/commands/plugin/command/uninstall.rb +28 -0
- data/plugins/commands/plugin/gem_helper.rb +74 -0
- data/plugins/commands/plugin/plugin.rb +22 -0
- data/plugins/commands/plugin/state_file.rb +57 -0
- data/plugins/commands/provision/command.rb +34 -0
- data/plugins/commands/provision/plugin.rb +18 -0
- data/plugins/commands/reload/command.rb +37 -0
- data/plugins/commands/reload/plugin.rb +18 -0
- data/plugins/commands/resume/command.rb +25 -0
- data/plugins/commands/resume/plugin.rb +17 -0
- data/plugins/commands/ssh/command.rb +63 -0
- data/plugins/commands/ssh/plugin.rb +17 -0
- data/plugins/commands/ssh_config/command.rb +49 -0
- data/plugins/commands/ssh_config/plugin.rb +18 -0
- data/plugins/commands/status/command.rb +39 -0
- data/plugins/commands/status/plugin.rb +18 -0
- data/plugins/commands/suspend/command.rb +25 -0
- data/plugins/commands/suspend/plugin.rb +18 -0
- data/plugins/commands/up/command.rb +57 -0
- data/plugins/commands/up/plugin.rb +17 -0
- data/plugins/commands/up/start_mixins.rb +26 -0
- data/plugins/communicators/ssh/communicator.rb +342 -0
- data/plugins/communicators/ssh/plugin.rb +19 -0
- data/plugins/guests/arch/cap/change_host_name.rb +18 -0
- data/plugins/guests/arch/cap/configure_networks.rb +23 -0
- data/plugins/guests/arch/guest.rb +11 -0
- data/plugins/guests/arch/plugin.rb +25 -0
- data/plugins/guests/debian/cap/change_host_name.rb +18 -0
- data/plugins/guests/debian/cap/configure_networks.rb +61 -0
- data/plugins/guests/debian/guest.rb +9 -0
- data/plugins/guests/debian/plugin.rb +25 -0
- data/plugins/guests/fedora/cap/configure_networks.rb +59 -0
- data/plugins/guests/fedora/cap/network_scripts_dir.rb +15 -0
- data/plugins/guests/fedora/guest.rb +11 -0
- data/plugins/guests/fedora/plugin.rb +25 -0
- data/plugins/guests/freebsd/cap/change_host_name.rb +14 -0
- data/plugins/guests/freebsd/cap/configure_networks.rb +39 -0
- data/plugins/guests/freebsd/cap/halt.rb +16 -0
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +14 -0
- data/plugins/guests/freebsd/guest.rb +14 -0
- data/plugins/guests/freebsd/plugin.rb +35 -0
- data/plugins/guests/gentoo/cap/change_host_name.rb +17 -0
- data/plugins/guests/gentoo/cap/configure_networks.rb +43 -0
- data/plugins/guests/gentoo/guest.rb +9 -0
- data/plugins/guests/gentoo/plugin.rb +25 -0
- data/plugins/guests/linux/cap/halt.rb +16 -0
- data/plugins/guests/linux/cap/mount_nfs.rb +30 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +40 -0
- data/plugins/guests/linux/cap/read_ip_address.rb +17 -0
- data/plugins/guests/linux/cap/shell_expand_guest_path.rb +26 -0
- data/plugins/guests/linux/guest.rb +11 -0
- data/plugins/guests/linux/plugin.rb +40 -0
- data/plugins/guests/openbsd/cap/halt.rb +16 -0
- data/plugins/guests/openbsd/guest.rb +11 -0
- data/plugins/guests/openbsd/plugin.rb +20 -0
- data/plugins/guests/pld/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/pld/guest.rb +11 -0
- data/plugins/guests/pld/plugin.rb +20 -0
- data/plugins/guests/redhat/cap/change_host_name.rb +18 -0
- data/plugins/guests/redhat/cap/configure_networks.rb +60 -0
- data/plugins/guests/redhat/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/redhat/guest.rb +11 -0
- data/plugins/guests/redhat/plugin.rb +30 -0
- data/plugins/guests/solaris/cap/change_host_name.rb +17 -0
- data/plugins/guests/solaris/cap/configure_networks.rb +25 -0
- data/plugins/guests/solaris/cap/halt.rb +21 -0
- data/plugins/guests/solaris/cap/mount_virtualbox_shared_folder.rb +28 -0
- data/plugins/guests/solaris/config.rb +18 -0
- data/plugins/guests/solaris/guest.rb +14 -0
- data/plugins/guests/solaris/plugin.rb +40 -0
- data/plugins/guests/suse/cap/change_host_name.rb +18 -0
- data/plugins/guests/suse/cap/network_scripts_dir.rb +11 -0
- data/plugins/guests/suse/guest.rb +11 -0
- data/plugins/guests/suse/plugin.rb +25 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +23 -0
- data/plugins/guests/ubuntu/guest.rb +32 -0
- data/plugins/guests/ubuntu/plugin.rb +20 -0
- data/plugins/hosts/arch/host.rb +68 -0
- data/plugins/hosts/arch/plugin.rb +15 -0
- data/plugins/hosts/bsd/host.rb +102 -0
- data/plugins/hosts/bsd/plugin.rb +15 -0
- data/plugins/hosts/fedora/host.rb +51 -0
- data/plugins/hosts/fedora/plugin.rb +15 -0
- data/plugins/hosts/freebsd/host.rb +43 -0
- data/plugins/hosts/freebsd/plugin.rb +15 -0
- data/plugins/hosts/gentoo/host.rb +24 -0
- data/plugins/hosts/gentoo/plugin.rb +15 -0
- data/plugins/hosts/linux/host.rb +95 -0
- data/plugins/hosts/linux/plugin.rb +15 -0
- data/plugins/hosts/opensuse/host.rb +34 -0
- data/plugins/hosts/opensuse/plugin.rb +15 -0
- data/plugins/hosts/windows/host.rb +17 -0
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v1/config/nfs.rb +20 -0
- data/plugins/kernel_v1/config/package.rb +17 -0
- data/plugins/kernel_v1/config/ssh.rb +46 -0
- data/plugins/kernel_v1/config/vagrant.rb +31 -0
- data/plugins/kernel_v1/config/vm.rb +184 -0
- data/plugins/kernel_v1/plugin.rb +44 -0
- data/plugins/kernel_v2/config/nfs.rb +14 -0
- data/plugins/kernel_v2/config/package.rb +13 -0
- data/plugins/kernel_v2/config/ssh.rb +76 -0
- data/plugins/kernel_v2/config/ssh_connect.rb +40 -0
- data/plugins/kernel_v2/config/vagrant.rb +13 -0
- data/plugins/kernel_v2/config/vm.rb +416 -0
- data/plugins/kernel_v2/config/vm_provisioner.rb +55 -0
- data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
- data/plugins/kernel_v2/plugin.rb +44 -0
- data/plugins/providers/virtualbox/action/boot.rb +49 -0
- data/plugins/providers/virtualbox/action/check_accessible.rb +23 -0
- data/plugins/providers/virtualbox/action/check_created.rb +21 -0
- data/plugins/providers/virtualbox/action/check_guest_additions.rb +45 -0
- data/plugins/providers/virtualbox/action/check_running.rb +21 -0
- data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
- data/plugins/providers/virtualbox/action/clean_machine_folder.rb +43 -0
- data/plugins/providers/virtualbox/action/clear_forwarded_ports.rb +18 -0
- data/plugins/providers/virtualbox/action/clear_network_interfaces.rb +31 -0
- data/plugins/providers/virtualbox/action/clear_shared_folders.rb +17 -0
- data/plugins/providers/virtualbox/action/created.rb +20 -0
- data/plugins/providers/virtualbox/action/customize.rb +36 -0
- data/plugins/providers/virtualbox/action/destroy.rb +19 -0
- data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
- data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
- data/plugins/providers/virtualbox/action/export.rb +57 -0
- data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
- data/plugins/providers/virtualbox/action/forward_ports.rb +87 -0
- data/plugins/providers/virtualbox/action/import.rb +51 -0
- data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
- data/plugins/providers/virtualbox/action/is_running.rb +20 -0
- data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
- data/plugins/providers/virtualbox/action/match_mac_address.rb +21 -0
- data/plugins/providers/virtualbox/action/message_already_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
- data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
- data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
- data/plugins/providers/virtualbox/action/network.rb +410 -0
- data/plugins/providers/virtualbox/action/package.rb +20 -0
- data/plugins/providers/virtualbox/action/package_vagrantfile.rb +33 -0
- data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +64 -0
- data/plugins/providers/virtualbox/action/prune_nfs_exports.rb +20 -0
- data/plugins/providers/virtualbox/action/resume.rb +25 -0
- data/plugins/providers/virtualbox/action/sane_defaults.rb +91 -0
- data/plugins/providers/virtualbox/action/set_name.rb +40 -0
- data/plugins/providers/virtualbox/action/setup_package_files.rb +51 -0
- data/plugins/providers/virtualbox/action/share_folders.rb +128 -0
- data/plugins/providers/virtualbox/action/suspend.rb +20 -0
- data/plugins/providers/virtualbox/action.rb +311 -0
- data/plugins/providers/virtualbox/config.rb +86 -0
- data/plugins/providers/virtualbox/driver/base.rb +360 -0
- data/plugins/providers/virtualbox/driver/meta.rb +142 -0
- data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
- data/plugins/providers/virtualbox/driver/version_4_2.rb +482 -0
- data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
- data/plugins/providers/virtualbox/plugin.rb +42 -0
- data/plugins/providers/virtualbox/provider.rb +92 -0
- data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
- data/plugins/provisioners/ansible/config.rb +72 -0
- data/plugins/provisioners/ansible/plugin.rb +23 -0
- data/plugins/provisioners/ansible/provisioner.rb +45 -0
- data/plugins/provisioners/cfengine/cap/debian/cfengine_install.rb +19 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_installed.rb +14 -0
- data/plugins/provisioners/cfengine/cap/linux/cfengine_needs_bootstrap.rb +34 -0
- data/plugins/provisioners/cfengine/cap/redhat/cfengine_install.rb +24 -0
- data/plugins/provisioners/cfengine/config.rb +120 -0
- data/plugins/provisioners/cfengine/plugin.rb +42 -0
- data/plugins/provisioners/cfengine/provisioner.rb +136 -0
- data/plugins/provisioners/chef/config/base.rb +85 -0
- data/plugins/provisioners/chef/config/chef_client.rb +57 -0
- data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
- data/plugins/provisioners/chef/plugin.rb +33 -0
- data/plugins/provisioners/chef/provisioner/base.rb +93 -0
- data/plugins/provisioners/chef/provisioner/chef_client.rb +107 -0
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +192 -0
- data/plugins/provisioners/puppet/config/puppet.rb +70 -0
- data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
- data/plugins/provisioners/puppet/plugin.rb +33 -0
- data/plugins/provisioners/puppet/provisioner/puppet.rb +117 -0
- data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
- data/plugins/provisioners/shell/config.rb +56 -0
- data/plugins/provisioners/shell/plugin.rb +23 -0
- data/plugins/provisioners/shell/provisioner.rb +86 -0
- data/tasks/acceptance.rake +113 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/test.rake +20 -0
- data/templates/commands/init/Vagrantfile.erb +111 -0
- data/templates/commands/ssh_config/config.erb +16 -0
- data/templates/config/messages.erb +14 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/guests/arch/network_dhcp.erb +4 -0
- data/templates/guests/arch/network_static.erb +6 -0
- data/templates/guests/debian/network_dhcp.erb +11 -0
- data/templates/guests/debian/network_static.erb +7 -0
- data/templates/guests/fedora/network_dhcp.erb +6 -0
- data/templates/guests/fedora/network_static.erb +13 -0
- data/templates/guests/freebsd/network_dhcp.erb +3 -0
- data/templates/guests/freebsd/network_static.erb +3 -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 +8 -0
- data/templates/locales/en.yml +1126 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_freebsd.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/provisioners/chef_client/client.erb +32 -0
- data/templates/provisioners/chef_solo/solo.erb +25 -0
- data/templates/rgloader.rb +9 -0
- data/test/acceptance/base.rb +48 -0
- data/test/acceptance/box_test.rb +99 -0
- data/test/acceptance/destroy_test.rb +37 -0
- data/test/acceptance/halt_test.rb +72 -0
- data/test/acceptance/init_test.rb +33 -0
- 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 +17 -0
- data/test/acceptance/shared_folders_test.rb +84 -0
- 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 +46 -0
- data/test/acceptance/support/config.rb +42 -0
- data/test/acceptance/support/isolated_environment.rb +118 -0
- data/test/acceptance/support/matchers/have_color.rb +9 -0
- data/test/acceptance/support/matchers/match_output.rb +14 -0
- data/test/acceptance/support/matchers/succeed.rb +14 -0
- data/test/acceptance/support/network_tests.rb +29 -0
- data/test/acceptance/support/output.rb +95 -0
- data/test/acceptance/support/shared/base_context.rb +72 -0
- data/test/acceptance/support/shared/command_examples.rb +33 -0
- data/test/acceptance/support/virtualbox.rb +36 -0
- data/test/acceptance/suspend_test.rb +56 -0
- data/test/acceptance/up_basic_test.rb +33 -0
- data/test/acceptance/up_with_box_url.rb +40 -0
- data/test/acceptance/vagrant_test.rb +47 -0
- data/test/acceptance/version_test.rb +15 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +43 -0
- data/test/unit/base.rb +27 -0
- data/test/unit/support/dummy_provider.rb +16 -0
- data/test/unit/support/isolated_environment.rb +179 -0
- data/test/unit/support/shared/base_context.rb +104 -0
- data/test/unit/vagrant/action/builder_test.rb +242 -0
- data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
- data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
- data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
- data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
- data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
- data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
- data/test/unit/vagrant/action/hook_test.rb +120 -0
- data/test/unit/vagrant/action/runner_test.rb +71 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/batch_action_test.rb +36 -0
- data/test/unit/vagrant/box_collection_test.rb +237 -0
- data/test/unit/vagrant/box_test.rb +122 -0
- data/test/unit/vagrant/cli_test.rb +27 -0
- data/test/unit/vagrant/config/loader_test.rb +184 -0
- data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
- data/test/unit/vagrant/config/v1/root_test.rb +40 -0
- data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
- data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
- data/test/unit/vagrant/config/v2/root_test.rb +97 -0
- data/test/unit/vagrant/config/v2/util_test.rb +21 -0
- data/test/unit/vagrant/config_test.rb +66 -0
- data/test/unit/vagrant/environment_test.rb +721 -0
- data/test/unit/vagrant/guest_test.rb +166 -0
- data/test/unit/vagrant/hosts_test.rb +37 -0
- data/test/unit/vagrant/machine_state_test.rb +26 -0
- data/test/unit/vagrant/machine_test.rb +384 -0
- data/test/unit/vagrant/plugin/v1/command_test.rb +143 -0
- data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
- data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
- data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
- data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
- data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
- data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
- data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
- data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
- data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
- data/test/unit/vagrant/plugin/v2/manager_test.rb +174 -0
- data/test/unit/vagrant/plugin/v2/plugin_test.rb +305 -0
- data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
- data/test/unit/vagrant/registry_test.rb +128 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
- data/test/unit/vagrant/util/downloader_test.rb +57 -0
- data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
- data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
- data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
- data/test/unit/vagrant/util/network_ip_test.rb +17 -0
- data/test/unit/vagrant/util/retryable_test.rb +106 -0
- data/test/unit/vagrant/util/safe_chdir_test.rb +43 -0
- data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
- data/test/unit/vagrant/util/ssh_test.rb +30 -0
- data/test/unit/vagrant/util/string_block_editor_test.rb +106 -0
- data/test/unit/vagrant/util/which_test.rb +43 -0
- data/test/unit/vagrant_test.rb +56 -0
- data/tnargav.gemspec +69 -0
- data/vagrant.gemspec +69 -0
- metadata +730 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V2::Plugin do
|
|
4
|
+
after(:each) do
|
|
5
|
+
# We want to make sure that the registered plugins remains empty
|
|
6
|
+
# after each test.
|
|
7
|
+
described_class.manager.reset!
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should be able to set and get the name" do
|
|
11
|
+
plugin = Class.new(described_class) do
|
|
12
|
+
name "foo"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
plugin.name.should == "foo"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should be able to set and get the description" do
|
|
19
|
+
plugin = Class.new(described_class) do
|
|
20
|
+
description "bar"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
plugin.description.should == "bar"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe "action hooks" do
|
|
27
|
+
it "should register on all actions by default" do
|
|
28
|
+
plugin = Class.new(described_class) do
|
|
29
|
+
action_hook("foo") { "bar" }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
hooks_registry = plugin.components.action_hooks
|
|
33
|
+
hooks = hooks_registry[described_class.const_get("ALL_ACTIONS")]
|
|
34
|
+
hooks.length.should == 1
|
|
35
|
+
hooks[0].call.should == "bar"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should register for a specific action by default" do
|
|
39
|
+
plugin = Class.new(described_class) do
|
|
40
|
+
action_hook("foo", :bar) { "bar" }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
hooks_registry = plugin.components.action_hooks
|
|
44
|
+
hooks = hooks_registry[:bar]
|
|
45
|
+
hooks.length.should == 1
|
|
46
|
+
hooks[0].call.should == "bar"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "commands" do
|
|
51
|
+
it "should register command classes" do
|
|
52
|
+
plugin = Class.new(described_class) do
|
|
53
|
+
command("foo") { "bar" }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
plugin.command[:foo].should == "bar"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
["spaces bad", "sym^bols"].each do |bad|
|
|
60
|
+
it "should not allow bad command name: #{bad}" do
|
|
61
|
+
plugin = Class.new(described_class)
|
|
62
|
+
|
|
63
|
+
expect { plugin.command(bad) {} }.
|
|
64
|
+
to raise_error(Vagrant::Plugin::V2::InvalidCommandName)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should lazily register command classes" do
|
|
69
|
+
# Below would raise an error if the value of the command class was
|
|
70
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
71
|
+
# error, we verify that the value is actually lazily loaded
|
|
72
|
+
plugin = nil
|
|
73
|
+
expect {
|
|
74
|
+
plugin = Class.new(described_class) do
|
|
75
|
+
command("foo") { raise StandardError, "FAIL!" }
|
|
76
|
+
end
|
|
77
|
+
}.to_not raise_error
|
|
78
|
+
|
|
79
|
+
# Now verify when we actually get the command key that
|
|
80
|
+
# a proper error is raised.
|
|
81
|
+
expect {
|
|
82
|
+
plugin.command[:foo]
|
|
83
|
+
}.to raise_error(StandardError)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe "communicators" do
|
|
88
|
+
it "should register communicator classes" do
|
|
89
|
+
plugin = Class.new(described_class) do
|
|
90
|
+
communicator("foo") { "bar" }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
plugin.communicator[:foo].should == "bar"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should lazily register communicator classes" do
|
|
97
|
+
# Below would raise an error if the value of the class was
|
|
98
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
99
|
+
# error, we verify that the value is actually lazily loaded
|
|
100
|
+
plugin = nil
|
|
101
|
+
expect {
|
|
102
|
+
plugin = Class.new(described_class) do
|
|
103
|
+
communicator("foo") { raise StandardError, "FAIL!" }
|
|
104
|
+
end
|
|
105
|
+
}.to_not raise_error
|
|
106
|
+
|
|
107
|
+
# Now verify when we actually get the configuration key that
|
|
108
|
+
# a proper error is raised.
|
|
109
|
+
expect {
|
|
110
|
+
plugin.communicator[:foo]
|
|
111
|
+
}.to raise_error(StandardError)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe "configuration" do
|
|
116
|
+
it "should register configuration classes" do
|
|
117
|
+
plugin = Class.new(described_class) do
|
|
118
|
+
config("foo") { "bar" }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
plugin.components.configs[:top][:foo].should == "bar"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "should lazily register configuration classes" do
|
|
125
|
+
# Below would raise an error if the value of the config class was
|
|
126
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
127
|
+
# error, we verify that the value is actually lazily loaded
|
|
128
|
+
plugin = nil
|
|
129
|
+
expect {
|
|
130
|
+
plugin = Class.new(described_class) do
|
|
131
|
+
config("foo") { raise StandardError, "FAIL!" }
|
|
132
|
+
end
|
|
133
|
+
}.to_not raise_error
|
|
134
|
+
|
|
135
|
+
# Now verify when we actually get the configuration key that
|
|
136
|
+
# a proper error is raised.
|
|
137
|
+
expect {
|
|
138
|
+
plugin.components.configs[:top][:foo]
|
|
139
|
+
}.to raise_error(StandardError)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "should register configuration classes for providers" do
|
|
143
|
+
plugin = Class.new(described_class) do
|
|
144
|
+
config("foo", :provider) { "bar" }
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
plugin.components.configs[:provider][:foo].should == "bar"
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
describe "guests" do
|
|
152
|
+
it "should register guest classes" do
|
|
153
|
+
plugin = Class.new(described_class) do
|
|
154
|
+
guest("foo") { "bar" }
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
plugin.components.guests[:foo].should == ["bar", nil]
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
it "should lazily register guest classes" do
|
|
161
|
+
# Below would raise an error if the value of the guest class was
|
|
162
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
163
|
+
# error, we verify that the value is actually lazily loaded
|
|
164
|
+
plugin = nil
|
|
165
|
+
expect {
|
|
166
|
+
plugin = Class.new(described_class) do
|
|
167
|
+
guest("foo") { raise StandardError, "FAIL!" }
|
|
168
|
+
end
|
|
169
|
+
}.to_not raise_error
|
|
170
|
+
|
|
171
|
+
# Now verify when we actually get the guest key that
|
|
172
|
+
# a proper error is raised.
|
|
173
|
+
expect {
|
|
174
|
+
plugin.guest[:foo]
|
|
175
|
+
}.to raise_error(StandardError)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
describe "guest capabilities" do
|
|
180
|
+
it "should register guest capabilities" do
|
|
181
|
+
plugin = Class.new(described_class) do
|
|
182
|
+
guest_capability("foo", "bar") { "baz" }
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
plugin.components.guest_capabilities[:foo][:bar].should == "baz"
|
|
186
|
+
end
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
describe "hosts" do
|
|
190
|
+
it "should register host classes" do
|
|
191
|
+
plugin = Class.new(described_class) do
|
|
192
|
+
host("foo") { "bar" }
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
plugin.host[:foo].should == "bar"
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
it "should lazily register host classes" do
|
|
199
|
+
# Below would raise an error if the value of the host class was
|
|
200
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
201
|
+
# error, we verify that the value is actually lazily loaded
|
|
202
|
+
plugin = nil
|
|
203
|
+
expect {
|
|
204
|
+
plugin = Class.new(described_class) do
|
|
205
|
+
host("foo") { raise StandardError, "FAIL!" }
|
|
206
|
+
end
|
|
207
|
+
}.to_not raise_error
|
|
208
|
+
|
|
209
|
+
# Now verify when we actually get the host key that
|
|
210
|
+
# a proper error is raised.
|
|
211
|
+
expect {
|
|
212
|
+
plugin.host[:foo]
|
|
213
|
+
}.to raise_error(StandardError)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
describe "providers" do
|
|
218
|
+
it "should register provider classes" do
|
|
219
|
+
plugin = Class.new(described_class) do
|
|
220
|
+
provider("foo") { "bar" }
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
plugin.components.providers[:foo].should == ["bar", {}]
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
it "should register provider classes with options" do
|
|
227
|
+
plugin = Class.new(described_class) do
|
|
228
|
+
provider("foo", foo: "yep") { "bar" }
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
plugin.components.providers[:foo].should == ["bar", { foo: "yep" }]
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
it "should lazily register provider classes" do
|
|
235
|
+
# Below would raise an error if the value of the config class was
|
|
236
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
237
|
+
# error, we verify that the value is actually lazily loaded
|
|
238
|
+
plugin = nil
|
|
239
|
+
expect {
|
|
240
|
+
plugin = Class.new(described_class) do
|
|
241
|
+
provider("foo") { raise StandardError, "FAIL!" }
|
|
242
|
+
end
|
|
243
|
+
}.to_not raise_error
|
|
244
|
+
|
|
245
|
+
# Now verify when we actually get the configuration key that
|
|
246
|
+
# a proper error is raised.
|
|
247
|
+
expect {
|
|
248
|
+
plugin.components.providers[:foo]
|
|
249
|
+
}.to raise_error(StandardError)
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
describe "provisioners" do
|
|
254
|
+
it "should register provisioner classes" do
|
|
255
|
+
plugin = Class.new(described_class) do
|
|
256
|
+
provisioner("foo") { "bar" }
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
plugin.provisioner[:foo].should == "bar"
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
it "should lazily register provisioner classes" do
|
|
263
|
+
# Below would raise an error if the value of the config class was
|
|
264
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
265
|
+
# error, we verify that the value is actually lazily loaded
|
|
266
|
+
plugin = nil
|
|
267
|
+
expect {
|
|
268
|
+
plugin = Class.new(described_class) do
|
|
269
|
+
provisioner("foo") { raise StandardError, "FAIL!" }
|
|
270
|
+
end
|
|
271
|
+
}.to_not raise_error
|
|
272
|
+
|
|
273
|
+
# Now verify when we actually get the configuration key that
|
|
274
|
+
# a proper error is raised.
|
|
275
|
+
expect {
|
|
276
|
+
plugin.provisioner[:foo]
|
|
277
|
+
}.to raise_error(StandardError)
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
describe "plugin registration" do
|
|
282
|
+
let(:manager) { described_class.manager }
|
|
283
|
+
|
|
284
|
+
it "should have no registered plugins" do
|
|
285
|
+
manager.registered.should be_empty
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
it "should register a plugin when a name is set" do
|
|
289
|
+
plugin = Class.new(described_class) do
|
|
290
|
+
name "foo"
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
manager.registered.should == [plugin]
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
it "should register a plugin only once" do
|
|
297
|
+
plugin = Class.new(described_class) do
|
|
298
|
+
name "foo"
|
|
299
|
+
name "bar"
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
manager.registered.should == [plugin]
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V2::Provider do
|
|
4
|
+
let(:machine) { Object.new }
|
|
5
|
+
let(:instance) { described_class.new(machine) }
|
|
6
|
+
|
|
7
|
+
it "should return nil by default for actions" do
|
|
8
|
+
instance.action(:whatever).should be_nil
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should return nil by default for ssh info" do
|
|
12
|
+
instance.ssh_info.should be_nil
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should return nil by default for state" do
|
|
16
|
+
instance.state.should be_nil
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
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 raise an error if no block is given" do
|
|
24
|
+
expect { instance.register("foo") }.
|
|
25
|
+
to raise_error(ArgumentError)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should call and return the result of a block when asking for the item" do
|
|
29
|
+
object = Object.new
|
|
30
|
+
instance.register("foo") do
|
|
31
|
+
object
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
instance.get("foo").should eql(object)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should be able to get the item with []" do
|
|
38
|
+
object = Object.new
|
|
39
|
+
instance.register("foo") { object }
|
|
40
|
+
|
|
41
|
+
instance["foo"].should eql(object)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "should cache the result of the item so they can be modified" do
|
|
45
|
+
# Make the proc generate a NEW array each time
|
|
46
|
+
instance.register("foo") { [] }
|
|
47
|
+
|
|
48
|
+
# Test that modifying the result modifies the actual cached
|
|
49
|
+
# value. This verifies we're caching.
|
|
50
|
+
instance.get("foo").should == []
|
|
51
|
+
instance.get("foo") << "value"
|
|
52
|
+
instance.get("foo").should == ["value"]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "should be able to check if a key exists" do
|
|
56
|
+
instance.register("foo") { "bar" }
|
|
57
|
+
instance.should have_key("foo")
|
|
58
|
+
instance.should_not have_key("bar")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should be enumerable" do
|
|
62
|
+
instance.register("foo") { "foovalue" }
|
|
63
|
+
instance.register("bar") { "barvalue" }
|
|
64
|
+
|
|
65
|
+
keys = []
|
|
66
|
+
values = []
|
|
67
|
+
instance.each do |key, value|
|
|
68
|
+
keys << key
|
|
69
|
+
values << value
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
keys.sort.should == ["bar", "foo"]
|
|
73
|
+
values.sort.should == ["barvalue", "foovalue"]
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should be able to convert to a hash" do
|
|
77
|
+
instance.register("foo") { "foovalue" }
|
|
78
|
+
instance.register("bar") { "barvalue" }
|
|
79
|
+
|
|
80
|
+
result = instance.to_hash
|
|
81
|
+
result.should be_a(Hash)
|
|
82
|
+
result["foo"].should == "foovalue"
|
|
83
|
+
result["bar"].should == "barvalue"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe "merging" do
|
|
87
|
+
it "should merge in another registry" do
|
|
88
|
+
one = described_class.new
|
|
89
|
+
two = described_class.new
|
|
90
|
+
|
|
91
|
+
one.register("foo") { raise "BOOM!" }
|
|
92
|
+
two.register("bar") { raise "BAM!" }
|
|
93
|
+
|
|
94
|
+
three = one.merge(two)
|
|
95
|
+
expect { three["foo"] }.to raise_error("BOOM!")
|
|
96
|
+
expect { three["bar"] }.to raise_error("BAM!")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "should NOT merge in the cache" do
|
|
100
|
+
one = described_class.new
|
|
101
|
+
two = described_class.new
|
|
102
|
+
|
|
103
|
+
one.register("foo") { [] }
|
|
104
|
+
one["foo"] << 1
|
|
105
|
+
|
|
106
|
+
two.register("bar") { [] }
|
|
107
|
+
two["bar"] << 2
|
|
108
|
+
|
|
109
|
+
three = one.merge(two)
|
|
110
|
+
three["foo"].should == []
|
|
111
|
+
three["bar"].should == []
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe "merge!" do
|
|
116
|
+
it "should merge into self" do
|
|
117
|
+
one = described_class.new
|
|
118
|
+
two = described_class.new
|
|
119
|
+
|
|
120
|
+
one.register("foo") { "foo" }
|
|
121
|
+
two.register("bar") { "bar" }
|
|
122
|
+
|
|
123
|
+
one.merge!(two)
|
|
124
|
+
one["foo"].should == "foo"
|
|
125
|
+
one["bar"].should == "bar"
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/ansi_escape_code_remover"
|
|
4
|
+
|
|
5
|
+
describe Vagrant::Util::ANSIEscapeCodeRemover do
|
|
6
|
+
let(:klass) do
|
|
7
|
+
Class.new do
|
|
8
|
+
extend Vagrant::Util::ANSIEscapeCodeRemover
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should remove ANSI escape codes" do
|
|
13
|
+
klass.remove_ansi_escape_codes("\e[Hyo").should == "yo"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/downloader"
|
|
4
|
+
|
|
5
|
+
describe Vagrant::Util::Downloader do
|
|
6
|
+
let(:source) { "foo" }
|
|
7
|
+
let(:destination) { "bar" }
|
|
8
|
+
let(:exit_code) { 0 }
|
|
9
|
+
|
|
10
|
+
let(:subprocess_result) do
|
|
11
|
+
double("subprocess_result").tap do |result|
|
|
12
|
+
result.stub(:exit_code => exit_code)
|
|
13
|
+
result.stub(:stderr => "")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
subject { described_class.new(source, destination) }
|
|
18
|
+
|
|
19
|
+
before :each do
|
|
20
|
+
Vagrant::Util::Subprocess.stub(:execute).and_return(subprocess_result)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#download!" do
|
|
24
|
+
context "with a good exit status" do
|
|
25
|
+
let(:exit_code) { 0 }
|
|
26
|
+
|
|
27
|
+
it "downloads the file and returns true" do
|
|
28
|
+
curl_options = ["--fail", "--location", "--max-redirs", "10", "--output", destination, source, {}]
|
|
29
|
+
|
|
30
|
+
Vagrant::Util::Subprocess.should_receive(:execute).
|
|
31
|
+
with("curl", *curl_options).
|
|
32
|
+
and_return(subprocess_result)
|
|
33
|
+
|
|
34
|
+
subject.download!.should be
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "with a bad exit status" do
|
|
39
|
+
let(:exit_code) { 1 }
|
|
40
|
+
|
|
41
|
+
it "raises an exception" do
|
|
42
|
+
curl_options = ["--fail", "--location", "--max-redirs", "10", "--output", destination, source, {}]
|
|
43
|
+
|
|
44
|
+
Vagrant::Util::Subprocess.should_receive(:execute).
|
|
45
|
+
with("curl", *curl_options).
|
|
46
|
+
and_return(subprocess_result)
|
|
47
|
+
|
|
48
|
+
expect { subject.download! }.
|
|
49
|
+
to raise_error(Vagrant::Errors::DownloaderError)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "with a UI" do
|
|
54
|
+
pending "tests for a UI"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
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
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/hash_with_indifferent_access"
|
|
4
|
+
|
|
5
|
+
describe Vagrant::Util::HashWithIndifferentAccess do
|
|
6
|
+
let(:instance) { described_class.new }
|
|
7
|
+
|
|
8
|
+
it "is a Hash" do
|
|
9
|
+
instance.should be_kind_of(Hash)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "allows indifferent access when setting with a string" do
|
|
13
|
+
instance["foo"] = "bar"
|
|
14
|
+
instance[:foo].should == "bar"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "allows indifferent access when setting with a symbol" do
|
|
18
|
+
instance[:foo] = "bar"
|
|
19
|
+
instance["foo"].should == "bar"
|
|
20
|
+
end
|
|
21
|
+
|
|
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
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "allows for defaults to be passed in via an initializer block" do
|
|
31
|
+
instance = described_class.new do |h,k|
|
|
32
|
+
h[k] = "foo"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
instance[:foo].should == "foo"
|
|
36
|
+
instance["bar"].should == "foo"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "socket"
|
|
4
|
+
|
|
5
|
+
require "vagrant/util/is_port_open"
|
|
6
|
+
|
|
7
|
+
describe Vagrant::Util::IsPortOpen do
|
|
8
|
+
let(:klass) do
|
|
9
|
+
Class.new do
|
|
10
|
+
extend Vagrant::Util::IsPortOpen
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
let(:open_port) { 52811 }
|
|
15
|
+
let(:closed_port) { 52811 }
|
|
16
|
+
|
|
17
|
+
it "should report open ports" do
|
|
18
|
+
# Start a thread which listens on a port
|
|
19
|
+
thr = Thread.new do
|
|
20
|
+
server = TCPServer.new(open_port)
|
|
21
|
+
Thread.current[:running] = true
|
|
22
|
+
|
|
23
|
+
# Wait until we're told to die
|
|
24
|
+
Thread.current[:die] = false
|
|
25
|
+
while !Thread.current[:die]
|
|
26
|
+
Thread.pass
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Die!
|
|
30
|
+
server.close
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Wait until the server is running
|
|
34
|
+
while !thr[:running]
|
|
35
|
+
Thread.pass
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Verify that we report the port is open
|
|
39
|
+
klass.is_port_open?("localhost", open_port).should be
|
|
40
|
+
|
|
41
|
+
# Kill the thread
|
|
42
|
+
thr[:die] = true
|
|
43
|
+
thr.join
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should report closed ports" do
|
|
47
|
+
# This CAN fail, since port 52811 might actually be in use, but I'm
|
|
48
|
+
# not sure what to do except choose some random port and hope for the
|
|
49
|
+
# best, really.
|
|
50
|
+
klass.is_port_open?("localhost", closed_port).should_not be
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path("../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
require "vagrant/util/line_ending_helpers"
|
|
4
|
+
|
|
5
|
+
describe Vagrant::Util::LineEndingHelpers do
|
|
6
|
+
let(:klass) do
|
|
7
|
+
Class.new do
|
|
8
|
+
extend Vagrant::Util::LineEndingHelpers
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should convert DOS to unix-style line endings" do
|
|
13
|
+
klass.dos_to_unix("foo\r\nbar\r\n").should == "foo\nbar\n"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
@@ -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
|