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,143 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
require 'optparse'
|
|
3
|
+
|
|
4
|
+
describe Vagrant::Plugin::V1::Command do
|
|
5
|
+
describe "parsing options" do
|
|
6
|
+
let(:klass) do
|
|
7
|
+
Class.new(described_class) do
|
|
8
|
+
# Make the method public since it is normally protected
|
|
9
|
+
public :parse_options
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "returns the remaining arguments" do
|
|
14
|
+
options = {}
|
|
15
|
+
opts = OptionParser.new do |opts|
|
|
16
|
+
opts.on("-f") do |f|
|
|
17
|
+
options[:f] = f
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
result = klass.new(["-f", "foo"], nil).parse_options(opts)
|
|
22
|
+
|
|
23
|
+
# Check the results
|
|
24
|
+
options[:f].should be
|
|
25
|
+
result.should == ["foo"]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "creates an option parser if none is given" do
|
|
29
|
+
result = klass.new(["foo"], nil).parse_options(nil)
|
|
30
|
+
result.should == ["foo"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
["-h", "--help"].each do |help_string|
|
|
34
|
+
it "returns nil and prints the help if '#{help_string}' is given" do
|
|
35
|
+
instance = klass.new([help_string], nil)
|
|
36
|
+
instance.should_receive(:safe_puts)
|
|
37
|
+
instance.parse_options(OptionParser.new).should be_nil
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "raises an error if invalid options are given" do
|
|
42
|
+
instance = klass.new(["-f"], nil)
|
|
43
|
+
expect { instance.parse_options(OptionParser.new) }.
|
|
44
|
+
to raise_error(Vagrant::Errors::CLIInvalidOptions)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "target VMs" do
|
|
49
|
+
let(:klass) do
|
|
50
|
+
Class.new(described_class) do
|
|
51
|
+
# Make the method public since it is normally protected
|
|
52
|
+
public :with_target_vms
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
let(:environment) do
|
|
57
|
+
env = double("environment")
|
|
58
|
+
env.stub(:root_path => "foo")
|
|
59
|
+
env
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
let(:instance) { klass.new([], environment) }
|
|
63
|
+
|
|
64
|
+
it "should raise an exception if a root_path is not available" do
|
|
65
|
+
environment.stub(:root_path => nil)
|
|
66
|
+
|
|
67
|
+
expect { instance.with_target_vms }.
|
|
68
|
+
to raise_error(Vagrant::Errors::NoEnvironmentError)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "should yield every VM in order is no name is given" do
|
|
72
|
+
foo_vm = double("foo")
|
|
73
|
+
foo_vm.stub(:name).and_return("foo")
|
|
74
|
+
|
|
75
|
+
bar_vm = double("bar")
|
|
76
|
+
bar_vm.stub(:name).and_return("bar")
|
|
77
|
+
|
|
78
|
+
environment.stub(:multivm? => true,
|
|
79
|
+
:vms => { "foo" => foo_vm, "bar" => bar_vm },
|
|
80
|
+
:vms_ordered => [foo_vm, bar_vm])
|
|
81
|
+
|
|
82
|
+
vms = []
|
|
83
|
+
instance.with_target_vms do |vm|
|
|
84
|
+
vms << vm
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
vms.should == [foo_vm, bar_vm]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "raises an exception if the named VM doesn't exist" do
|
|
91
|
+
environment.stub(:multivm? => true, :vms => {})
|
|
92
|
+
|
|
93
|
+
expect { instance.with_target_vms("foo") }.
|
|
94
|
+
to raise_error(Vagrant::Errors::VMNotFoundError)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "yields the given VM if a name is given" do
|
|
98
|
+
foo_vm = double("foo")
|
|
99
|
+
foo_vm.stub(:name).and_return(:foo)
|
|
100
|
+
|
|
101
|
+
environment.stub(:multivm? => true,
|
|
102
|
+
:vms => { :foo => foo_vm, :bar => nil })
|
|
103
|
+
|
|
104
|
+
vms = []
|
|
105
|
+
instance.with_target_vms("foo") { |vm| vms << vm }
|
|
106
|
+
vms.should == [foo_vm]
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
describe "splitting the main and subcommand args" do
|
|
111
|
+
let(:instance) do
|
|
112
|
+
Class.new(described_class) do
|
|
113
|
+
# Make the method public since it is normally protected
|
|
114
|
+
public :split_main_and_subcommand
|
|
115
|
+
end.new(nil, nil)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "should work when given all 3 parts" do
|
|
119
|
+
result = instance.split_main_and_subcommand(["-v", "status", "-h", "-v"])
|
|
120
|
+
result.should == [["-v"], "status", ["-h", "-v"]]
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "should work when given only a subcommand and args" do
|
|
124
|
+
result = instance.split_main_and_subcommand(["status", "-h"])
|
|
125
|
+
result.should == [[], "status", ["-h"]]
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "should work when given only main flags" do
|
|
129
|
+
result = instance.split_main_and_subcommand(["-v", "-h"])
|
|
130
|
+
result.should == [["-v", "-h"], nil, []]
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
it "should work when given only a subcommand" do
|
|
134
|
+
result = instance.split_main_and_subcommand(["status"])
|
|
135
|
+
result.should == [[], "status", []]
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
it "works when there are other non-flag args after the subcommand" do
|
|
139
|
+
result = instance.split_main_and_subcommand(["-v", "box", "add", "-h"])
|
|
140
|
+
result.should == [["-v"], "box", ["add", "-h"]]
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V1::Config do
|
|
4
|
+
include_context "unit"
|
|
5
|
+
|
|
6
|
+
let(:foo_class) do
|
|
7
|
+
Class.new(described_class) do
|
|
8
|
+
attr_accessor :one
|
|
9
|
+
attr_accessor :two
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "has an UNSET_VALUE constant" do
|
|
14
|
+
value = described_class.const_get("UNSET_VALUE")
|
|
15
|
+
value.should be_kind_of Object
|
|
16
|
+
value.should eql(described_class.const_get("UNSET_VALUE"))
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "merging" do
|
|
20
|
+
it "should merge by default by simply copying each instance variable" do
|
|
21
|
+
one = foo_class.new
|
|
22
|
+
one.one = 2
|
|
23
|
+
one.two = 1
|
|
24
|
+
|
|
25
|
+
two = foo_class.new
|
|
26
|
+
two.two = 5
|
|
27
|
+
|
|
28
|
+
result = one.merge(two)
|
|
29
|
+
result.one.should == 2
|
|
30
|
+
result.two.should == 5
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "doesn't merge values that start with a double underscore" do
|
|
34
|
+
one = foo_class.new
|
|
35
|
+
one.one = 1
|
|
36
|
+
one.two = 1
|
|
37
|
+
one.instance_variable_set(:@__bar, "one")
|
|
38
|
+
|
|
39
|
+
two = foo_class.new
|
|
40
|
+
two.two = 2
|
|
41
|
+
two.instance_variable_set(:@__bar, "two")
|
|
42
|
+
|
|
43
|
+
# Merge and verify
|
|
44
|
+
result = one.merge(two)
|
|
45
|
+
result.one.should == 1
|
|
46
|
+
result.two.should == 2
|
|
47
|
+
result.instance_variable_get(:@__bar).should be_nil
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V1::Manager do
|
|
4
|
+
include_context "unit"
|
|
5
|
+
|
|
6
|
+
let(:instance) { described_class.new }
|
|
7
|
+
|
|
8
|
+
def plugin
|
|
9
|
+
p = Class.new(Vagrant.plugin("1"))
|
|
10
|
+
yield p
|
|
11
|
+
p
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should enumerate registered communicator classes" do
|
|
15
|
+
pA = plugin do |p|
|
|
16
|
+
p.communicator("foo") { "bar" }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
pB = plugin do |p|
|
|
20
|
+
p.communicator("bar") { "baz" }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
instance.register(pA)
|
|
24
|
+
instance.register(pB)
|
|
25
|
+
|
|
26
|
+
instance.communicators.length.should == 2
|
|
27
|
+
instance.communicators[:foo].should == "bar"
|
|
28
|
+
instance.communicators[:bar].should == "baz"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should enumerate registered configuration classes" do
|
|
32
|
+
pA = plugin do |p|
|
|
33
|
+
p.config("foo") { "bar" }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
pB = plugin do |p|
|
|
37
|
+
p.config("bar") { "baz" }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
instance.register(pA)
|
|
41
|
+
instance.register(pB)
|
|
42
|
+
|
|
43
|
+
instance.config.length.should == 2
|
|
44
|
+
instance.config[:foo].should == "bar"
|
|
45
|
+
instance.config[:bar].should == "baz"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "should enumerate registered upgrade safe config classes" do
|
|
49
|
+
pA = plugin do |p|
|
|
50
|
+
p.config("foo", true) { "bar" }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
pB = plugin do |p|
|
|
54
|
+
p.config("bar") { "baz" }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
instance.register(pA)
|
|
58
|
+
instance.register(pB)
|
|
59
|
+
|
|
60
|
+
instance.config_upgrade_safe.length.should == 1
|
|
61
|
+
instance.config_upgrade_safe[:foo].should == "bar"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should enumerate registered guest classes" do
|
|
65
|
+
pA = plugin do |p|
|
|
66
|
+
p.guest("foo") { "bar" }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
pB = plugin do |p|
|
|
70
|
+
p.guest("bar") { "baz" }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
instance.register(pA)
|
|
74
|
+
instance.register(pB)
|
|
75
|
+
|
|
76
|
+
instance.guests.length.should == 2
|
|
77
|
+
instance.guests[:foo].should == "bar"
|
|
78
|
+
instance.guests[:bar].should == "baz"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should enumerate registered host classes" do
|
|
82
|
+
pA = plugin do |p|
|
|
83
|
+
p.host("foo") { "bar" }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
pB = plugin do |p|
|
|
87
|
+
p.host("bar") { "baz" }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
instance.register(pA)
|
|
91
|
+
instance.register(pB)
|
|
92
|
+
|
|
93
|
+
instance.hosts.length.should == 2
|
|
94
|
+
instance.hosts[:foo].should == "bar"
|
|
95
|
+
instance.hosts[:bar].should == "baz"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should enumerate registered provider classes" do
|
|
99
|
+
pA = plugin do |p|
|
|
100
|
+
p.provider("foo") { "bar" }
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
pB = plugin do |p|
|
|
104
|
+
p.provider("bar") { "baz" }
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
instance.register(pA)
|
|
108
|
+
instance.register(pB)
|
|
109
|
+
|
|
110
|
+
instance.providers.length.should == 2
|
|
111
|
+
instance.providers[:foo].should == "bar"
|
|
112
|
+
instance.providers[:bar].should == "baz"
|
|
113
|
+
end
|
|
114
|
+
end
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V1::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 action hooks" do
|
|
28
|
+
plugin = Class.new(described_class) do
|
|
29
|
+
action_hook("foo") { "bar" }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
hooks = plugin.action_hook("foo")
|
|
33
|
+
hooks.length.should == 1
|
|
34
|
+
hooks[0].call.should == "bar"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "commands" do
|
|
39
|
+
it "should register command classes" do
|
|
40
|
+
plugin = Class.new(described_class) do
|
|
41
|
+
command("foo") { "bar" }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
plugin.command[:foo].should == "bar"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
["spaces bad", "sym^bols"].each do |bad|
|
|
48
|
+
it "should not allow bad command name: #{bad}" do
|
|
49
|
+
plugin = Class.new(described_class)
|
|
50
|
+
|
|
51
|
+
expect { plugin.command(bad) {} }.
|
|
52
|
+
to raise_error(Vagrant::Plugin::V1::InvalidCommandName)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should lazily register command classes" do
|
|
57
|
+
# Below would raise an error if the value of the command class was
|
|
58
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
59
|
+
# error, we verify that the value is actually lazily loaded
|
|
60
|
+
plugin = nil
|
|
61
|
+
expect {
|
|
62
|
+
plugin = Class.new(described_class) do
|
|
63
|
+
command("foo") { raise StandardError, "FAIL!" }
|
|
64
|
+
end
|
|
65
|
+
}.to_not raise_error
|
|
66
|
+
|
|
67
|
+
# Now verify when we actually get the command key that
|
|
68
|
+
# a proper error is raised.
|
|
69
|
+
expect {
|
|
70
|
+
plugin.command[:foo]
|
|
71
|
+
}.to raise_error(StandardError)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "communicators" do
|
|
76
|
+
it "should register communicator classes" do
|
|
77
|
+
plugin = Class.new(described_class) do
|
|
78
|
+
communicator("foo") { "bar" }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
plugin.communicator[:foo].should == "bar"
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should lazily register communicator classes" do
|
|
85
|
+
# Below would raise an error if the value of the class was
|
|
86
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
87
|
+
# error, we verify that the value is actually lazily loaded
|
|
88
|
+
plugin = nil
|
|
89
|
+
expect {
|
|
90
|
+
plugin = Class.new(described_class) do
|
|
91
|
+
communicator("foo") { raise StandardError, "FAIL!" }
|
|
92
|
+
end
|
|
93
|
+
}.to_not raise_error
|
|
94
|
+
|
|
95
|
+
# Now verify when we actually get the configuration key that
|
|
96
|
+
# a proper error is raised.
|
|
97
|
+
expect {
|
|
98
|
+
plugin.communicator[:foo]
|
|
99
|
+
}.to raise_error(StandardError)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
describe "configuration" do
|
|
104
|
+
it "should register configuration classes" do
|
|
105
|
+
plugin = Class.new(described_class) do
|
|
106
|
+
config("foo") { "bar" }
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
plugin.config[:foo].should == "bar"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should lazily register configuration classes" do
|
|
113
|
+
# Below would raise an error if the value of the config class was
|
|
114
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
115
|
+
# error, we verify that the value is actually lazily loaded
|
|
116
|
+
plugin = nil
|
|
117
|
+
expect {
|
|
118
|
+
plugin = Class.new(described_class) do
|
|
119
|
+
config("foo") { raise StandardError, "FAIL!" }
|
|
120
|
+
end
|
|
121
|
+
}.to_not raise_error
|
|
122
|
+
|
|
123
|
+
# Now verify when we actually get the configuration key that
|
|
124
|
+
# a proper error is raised.
|
|
125
|
+
expect {
|
|
126
|
+
plugin.config[:foo]
|
|
127
|
+
}.to raise_error(StandardError)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe "guests" do
|
|
132
|
+
it "should register guest classes" do
|
|
133
|
+
plugin = Class.new(described_class) do
|
|
134
|
+
guest("foo") { "bar" }
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
plugin.guest[:foo].should == "bar"
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "should lazily register guest classes" do
|
|
141
|
+
# Below would raise an error if the value of the guest class was
|
|
142
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
143
|
+
# error, we verify that the value is actually lazily loaded
|
|
144
|
+
plugin = nil
|
|
145
|
+
expect {
|
|
146
|
+
plugin = Class.new(described_class) do
|
|
147
|
+
guest("foo") { raise StandardError, "FAIL!" }
|
|
148
|
+
end
|
|
149
|
+
}.to_not raise_error
|
|
150
|
+
|
|
151
|
+
# Now verify when we actually get the guest key that
|
|
152
|
+
# a proper error is raised.
|
|
153
|
+
expect {
|
|
154
|
+
plugin.guest[:foo]
|
|
155
|
+
}.to raise_error(StandardError)
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
describe "hosts" do
|
|
160
|
+
it "should register host classes" do
|
|
161
|
+
plugin = Class.new(described_class) do
|
|
162
|
+
host("foo") { "bar" }
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
plugin.host[:foo].should == "bar"
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "should lazily register host classes" do
|
|
169
|
+
# Below would raise an error if the value of the host class was
|
|
170
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
171
|
+
# error, we verify that the value is actually lazily loaded
|
|
172
|
+
plugin = nil
|
|
173
|
+
expect {
|
|
174
|
+
plugin = Class.new(described_class) do
|
|
175
|
+
host("foo") { raise StandardError, "FAIL!" }
|
|
176
|
+
end
|
|
177
|
+
}.to_not raise_error
|
|
178
|
+
|
|
179
|
+
# Now verify when we actually get the host key that
|
|
180
|
+
# a proper error is raised.
|
|
181
|
+
expect {
|
|
182
|
+
plugin.host[:foo]
|
|
183
|
+
}.to raise_error(StandardError)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe "providers" do
|
|
188
|
+
it "should register provider classes" do
|
|
189
|
+
plugin = Class.new(described_class) do
|
|
190
|
+
provider("foo") { "bar" }
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
plugin.provider[:foo].should == "bar"
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
it "should lazily register provider classes" do
|
|
197
|
+
# Below would raise an error if the value of the config class was
|
|
198
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
199
|
+
# error, we verify that the value is actually lazily loaded
|
|
200
|
+
plugin = nil
|
|
201
|
+
expect {
|
|
202
|
+
plugin = Class.new(described_class) do
|
|
203
|
+
provider("foo") { raise StandardError, "FAIL!" }
|
|
204
|
+
end
|
|
205
|
+
}.to_not raise_error
|
|
206
|
+
|
|
207
|
+
# Now verify when we actually get the configuration key that
|
|
208
|
+
# a proper error is raised.
|
|
209
|
+
expect {
|
|
210
|
+
plugin.provider[:foo]
|
|
211
|
+
}.to raise_error(StandardError)
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
describe "provisioners" do
|
|
216
|
+
it "should register provisioner classes" do
|
|
217
|
+
plugin = Class.new(described_class) do
|
|
218
|
+
provisioner("foo") { "bar" }
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
plugin.provisioner[:foo].should == "bar"
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
it "should lazily register provisioner classes" do
|
|
225
|
+
# Below would raise an error if the value of the config class was
|
|
226
|
+
# evaluated immediately. By asserting that this does not raise an
|
|
227
|
+
# error, we verify that the value is actually lazily loaded
|
|
228
|
+
plugin = nil
|
|
229
|
+
expect {
|
|
230
|
+
plugin = Class.new(described_class) do
|
|
231
|
+
provisioner("foo") { raise StandardError, "FAIL!" }
|
|
232
|
+
end
|
|
233
|
+
}.to_not raise_error
|
|
234
|
+
|
|
235
|
+
# Now verify when we actually get the configuration key that
|
|
236
|
+
# a proper error is raised.
|
|
237
|
+
expect {
|
|
238
|
+
plugin.provisioner[:foo]
|
|
239
|
+
}.to raise_error(StandardError)
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
describe "plugin registration" do
|
|
244
|
+
let(:manager) { described_class.manager }
|
|
245
|
+
|
|
246
|
+
it "should have no registered plugins" do
|
|
247
|
+
manager.registered.should be_empty
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
it "should register a plugin when a name is set" do
|
|
251
|
+
plugin = Class.new(described_class) do
|
|
252
|
+
name "foo"
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
manager.registered.should == [plugin]
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
it "should register a plugin only once" do
|
|
259
|
+
plugin = Class.new(described_class) do
|
|
260
|
+
name "foo"
|
|
261
|
+
name "bar"
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
manager.registered.should == [plugin]
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require File.expand_path("../../../../base", __FILE__)
|
|
2
|
+
|
|
3
|
+
describe Vagrant::Plugin::V1::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
|