vagrant-fixed-ssh 1.0.7
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 +46 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +723 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +121 -0
- data/Rakefile +18 -0
- data/bin/vagrant +60 -0
- data/config/default.rb +30 -0
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant.rb +197 -0
- data/lib/vagrant/action.rb +63 -0
- data/lib/vagrant/action/box/destroy.rb +25 -0
- data/lib/vagrant/action/box/download.rb +84 -0
- data/lib/vagrant/action/box/package.rb +19 -0
- data/lib/vagrant/action/box/unpackage.rb +61 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +128 -0
- data/lib/vagrant/action/builtin.rb +171 -0
- data/lib/vagrant/action/env/set.rb +21 -0
- data/lib/vagrant/action/environment.rb +12 -0
- data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
- data/lib/vagrant/action/general/package.rb +101 -0
- data/lib/vagrant/action/general/validate.rb +18 -0
- data/lib/vagrant/action/runner.rb +53 -0
- data/lib/vagrant/action/vm/boot.rb +53 -0
- data/lib/vagrant/action/vm/check_accessible.rb +23 -0
- data/lib/vagrant/action/vm/check_box.rb +33 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +38 -0
- data/lib/vagrant/action/vm/check_port_collisions.rb +89 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +18 -0
- data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +18 -0
- data/lib/vagrant/action/vm/customize.rb +36 -0
- data/lib/vagrant/action/vm/default_name.rb +22 -0
- data/lib/vagrant/action/vm/destroy.rb +19 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +20 -0
- data/lib/vagrant/action/vm/discard_state.rb +22 -0
- data/lib/vagrant/action/vm/export.rb +57 -0
- data/lib/vagrant/action/vm/forward_ports.rb +92 -0
- data/lib/vagrant/action/vm/halt.rb +32 -0
- data/lib/vagrant/action/vm/host_name.rb +21 -0
- data/lib/vagrant/action/vm/import.rb +48 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
- data/lib/vagrant/action/vm/network.rb +403 -0
- data/lib/vagrant/action/vm/nfs.rb +196 -0
- data/lib/vagrant/action/vm/package.rb +23 -0
- data/lib/vagrant/action/vm/package_vagrantfile.rb +36 -0
- data/lib/vagrant/action/vm/provision.rb +61 -0
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
- data/lib/vagrant/action/vm/prune_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/sane_defaults.rb +78 -0
- data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
- data/lib/vagrant/action/vm/share_folders.rb +114 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +92 -0
- data/lib/vagrant/box.rb +44 -0
- data/lib/vagrant/box_collection.rb +58 -0
- data/lib/vagrant/cli.rb +76 -0
- data/lib/vagrant/command.rb +24 -0
- data/lib/vagrant/command/base.rb +167 -0
- data/lib/vagrant/command/box.rb +58 -0
- data/lib/vagrant/command/box_add.rb +37 -0
- data/lib/vagrant/command/box_list.rb +28 -0
- data/lib/vagrant/command/box_remove.rb +27 -0
- data/lib/vagrant/command/box_repackage.rb +27 -0
- data/lib/vagrant/command/destroy.rb +64 -0
- data/lib/vagrant/command/gem.rb +39 -0
- data/lib/vagrant/command/halt.rb +39 -0
- data/lib/vagrant/command/init.rb +40 -0
- data/lib/vagrant/command/package.rb +75 -0
- data/lib/vagrant/command/provision.rb +40 -0
- data/lib/vagrant/command/reload.rb +39 -0
- data/lib/vagrant/command/resume.rb +33 -0
- data/lib/vagrant/command/ssh.rb +90 -0
- data/lib/vagrant/command/ssh_config.rb +51 -0
- data/lib/vagrant/command/start_mixins.rb +26 -0
- data/lib/vagrant/command/status.rb +36 -0
- data/lib/vagrant/command/suspend.rb +33 -0
- data/lib/vagrant/command/up.rb +40 -0
- data/lib/vagrant/communication.rb +7 -0
- data/lib/vagrant/communication/base.rb +56 -0
- data/lib/vagrant/communication/ssh.rb +230 -0
- data/lib/vagrant/config.rb +49 -0
- data/lib/vagrant/config/base.rb +82 -0
- data/lib/vagrant/config/container.rb +37 -0
- data/lib/vagrant/config/error_recorder.rb +19 -0
- data/lib/vagrant/config/loader.rb +127 -0
- data/lib/vagrant/config/nfs.rb +8 -0
- data/lib/vagrant/config/package.rb +7 -0
- data/lib/vagrant/config/ssh.rb +27 -0
- data/lib/vagrant/config/top.rb +72 -0
- data/lib/vagrant/config/vagrant.rb +14 -0
- data/lib/vagrant/config/vm.rb +168 -0
- data/lib/vagrant/config/vm/provisioner.rb +52 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/data_store.rb +92 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/base.rb +25 -0
- data/lib/vagrant/downloaders/file.rb +22 -0
- data/lib/vagrant/downloaders/http.rb +97 -0
- data/lib/vagrant/driver.rb +8 -0
- data/lib/vagrant/driver/virtualbox.rb +134 -0
- data/lib/vagrant/driver/virtualbox_4_0.rb +459 -0
- data/lib/vagrant/driver/virtualbox_4_1.rb +459 -0
- data/lib/vagrant/driver/virtualbox_4_2.rb +606 -0
- data/lib/vagrant/driver/virtualbox_base.rb +326 -0
- data/lib/vagrant/environment.rb +522 -0
- data/lib/vagrant/errors.rb +445 -0
- data/lib/vagrant/guest.rb +18 -0
- data/lib/vagrant/guest/arch.rb +56 -0
- data/lib/vagrant/guest/base.rb +99 -0
- data/lib/vagrant/guest/debian.rb +64 -0
- data/lib/vagrant/guest/fedora.rb +66 -0
- data/lib/vagrant/guest/freebsd.rb +86 -0
- data/lib/vagrant/guest/gentoo.rb +46 -0
- data/lib/vagrant/guest/linux.rb +118 -0
- data/lib/vagrant/guest/linux/config.rb +19 -0
- data/lib/vagrant/guest/linux/error.rb +9 -0
- data/lib/vagrant/guest/openbsd.rb +20 -0
- data/lib/vagrant/guest/redhat.rb +67 -0
- data/lib/vagrant/guest/solaris.rb +118 -0
- data/lib/vagrant/guest/suse.rb +17 -0
- data/lib/vagrant/guest/ubuntu.rb +23 -0
- data/lib/vagrant/hosts.rb +37 -0
- data/lib/vagrant/hosts/arch.rb +55 -0
- data/lib/vagrant/hosts/base.rb +66 -0
- data/lib/vagrant/hosts/bsd.rb +97 -0
- data/lib/vagrant/hosts/fedora.rb +47 -0
- data/lib/vagrant/hosts/freebsd.rb +41 -0
- data/lib/vagrant/hosts/gentoo.rb +20 -0
- data/lib/vagrant/hosts/linux.rb +94 -0
- data/lib/vagrant/hosts/opensuse.rb +30 -0
- data/lib/vagrant/hosts/windows.rb +16 -0
- data/lib/vagrant/plugin.rb +81 -0
- data/lib/vagrant/provisioners.rb +12 -0
- data/lib/vagrant/provisioners/base.rb +44 -0
- data/lib/vagrant/provisioners/chef.rb +168 -0
- data/lib/vagrant/provisioners/chef_client.rb +132 -0
- data/lib/vagrant/provisioners/chef_solo.rb +234 -0
- data/lib/vagrant/provisioners/puppet.rb +176 -0
- data/lib/vagrant/provisioners/puppet_server.rb +78 -0
- data/lib/vagrant/provisioners/shell.rb +103 -0
- data/lib/vagrant/registry.rb +52 -0
- data/lib/vagrant/ssh.rb +126 -0
- data/lib/vagrant/test_helpers.rb +154 -0
- data/lib/vagrant/ui.rb +168 -0
- data/lib/vagrant/util.rb +12 -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/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 +68 -0
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/safe_exec.rb +36 -0
- data/lib/vagrant/util/safe_puts.rb +31 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/subprocess.rb +247 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +195 -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 +99 -0
- data/templates/commands/ssh_config/config.erb +15 -0
- data/templates/config/validation_failed.erb +7 -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/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 +7 -0
- data/templates/locales/en.yml +759 -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/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 +117 -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/buildbot/README.md +72 -0
- data/test/buildbot/buildbot_config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/__init__.py +0 -0
- data/test/buildbot/buildbot_config/config/loader.py +24 -0
- data/test/buildbot/buildbot_config/config/master.py +24 -0
- data/test/buildbot/buildbot_config/config/slave.py +22 -0
- data/test/buildbot/buildbot_config/master/__init__.py +6 -0
- data/test/buildbot/buildbot_config/master/builders.py +78 -0
- data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
- data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
- data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
- data/test/buildbot/buildbot_config/master/slaves.py +60 -0
- data/test/buildbot/buildbot_config/master/status.py +52 -0
- data/test/buildbot/master/Makefile.sample +28 -0
- data/test/buildbot/master/buildbot.tac +36 -0
- data/test/buildbot/master/master.cfg +67 -0
- data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
- data/test/buildbot/master/public_html/default.css +545 -0
- data/test/buildbot/master/public_html/favicon.ico +0 -0
- data/test/buildbot/master/public_html/robots.txt +10 -0
- data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
- data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
- data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
- data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
- data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
- data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
- data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
- data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
- data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
- data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
- data/test/buildbot/master/templates/authfail.html +9 -0
- data/test/buildbot/master/templates/build.html +205 -0
- data/test/buildbot/master/templates/builder.html +118 -0
- data/test/buildbot/master/templates/builders.html +33 -0
- data/test/buildbot/master/templates/buildslave.html +72 -0
- data/test/buildbot/master/templates/buildslaves.html +70 -0
- data/test/buildbot/master/templates/change.html +15 -0
- data/test/buildbot/master/templates/layouts/base.html +58 -0
- data/test/buildbot/master/templates/macros/box.html +37 -0
- data/test/buildbot/master/templates/macros/build_line.html +50 -0
- data/test/buildbot/master/templates/macros/change.html +81 -0
- data/test/buildbot/master/templates/macros/forms.html +300 -0
- data/test/buildbot/master/templates/root.html +42 -0
- data/test/buildbot/master/templates/waterfall.html +53 -0
- data/test/buildbot/requirements.txt +4 -0
- data/test/buildbot/scripts/deploy.sh +38 -0
- data/test/buildbot/scripts/setup.sh +107 -0
- data/test/buildbot/slave/buildbot.tac +43 -0
- data/test/buildbot/slave/info/admin +1 -0
- data/test/buildbot/slave/info/host +1 -0
- data/test/buildbot/tests/__init__.py +0 -0
- data/test/buildbot/tests/master/__init__.py +0 -0
- data/test/buildbot/tests/master/test_slaves.py +41 -0
- data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
- data/test/config/acceptance_boxes.yml +7 -0
- data/test/support/isolated_environment.rb +46 -0
- data/test/support/tempdir.rb +34 -0
- data/test/unit/base.rb +21 -0
- data/test/unit/support/isolated_environment.rb +47 -0
- data/test/unit/support/shared/base_context.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +156 -0
- data/test/unit/vagrant/action/environment_test.rb +16 -0
- data/test/unit/vagrant/action/runner_test.rb +65 -0
- data/test/unit/vagrant/action/warden_test.rb +92 -0
- data/test/unit/vagrant/box_collection_test.rb +56 -0
- data/test/unit/vagrant/box_test.rb +34 -0
- data/test/unit/vagrant/command/base_test.rb +150 -0
- data/test/unit/vagrant/config/base_test.rb +48 -0
- data/test/unit/vagrant/config/loader_test.rb +79 -0
- data/test/unit/vagrant/config/ssh_test.rb +17 -0
- data/test/unit/vagrant/config/top_test.rb +69 -0
- data/test/unit/vagrant/config/vm_test.rb +71 -0
- data/test/unit/vagrant/config_test.rb +27 -0
- data/test/unit/vagrant/data_store_test.rb +79 -0
- data/test/unit/vagrant/downloaders/base_test.rb +18 -0
- data/test/unit/vagrant/downloaders/file_test.rb +75 -0
- data/test/unit/vagrant/downloaders/http_test.rb +19 -0
- data/test/unit/vagrant/environment_test.rb +220 -0
- data/test/unit/vagrant/hosts_test.rb +36 -0
- data/test/unit/vagrant/registry_test.rb +74 -0
- data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -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_test.rb +27 -0
- data/test/unit_legacy/locales/en.yml +8 -0
- data/test/unit_legacy/test_helper.rb +32 -0
- data/test/unit_legacy/vagrant/action/box/destroy_test.rb +18 -0
- data/test/unit_legacy/vagrant/action/box/download_test.rb +125 -0
- data/test/unit_legacy/vagrant/action/box/package_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/unit_legacy/vagrant/action/box/verify_test.rb +30 -0
- data/test/unit_legacy/vagrant/action/env/set_test.rb +24 -0
- data/test/unit_legacy/vagrant/action/general/package_test.rb +268 -0
- data/test/unit_legacy/vagrant/action/general/validate_test.rb +31 -0
- data/test/unit_legacy/vagrant/action/vm/boot_test.rb +66 -0
- data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +61 -0
- data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +61 -0
- data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
- data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
- data/test/unit_legacy/vagrant/action/vm/customize_test.rb +37 -0
- data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/unit_legacy/vagrant/action/vm/export_test.rb +107 -0
- data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
- data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +197 -0
- data/test/unit_legacy/vagrant/action/vm/halt_test.rb +79 -0
- data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/unit_legacy/vagrant/action/vm/import_test.rb +66 -0
- data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +40 -0
- data/test/unit_legacy/vagrant/action/vm/modify_test.rb +38 -0
- data/test/unit_legacy/vagrant/action/vm/network_test.rb +286 -0
- data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/unit_legacy/vagrant/action/vm/package_test.rb +25 -0
- data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/unit_legacy/vagrant/action/vm/provision_test.rb +65 -0
- data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
- data/test/unit_legacy/vagrant/action/vm/resume_test.rb +35 -0
- data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +144 -0
- data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/unit_legacy/vagrant/action_test.rb +89 -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_legacy/vagrant/cli_test.rb +35 -0
- data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
- data/test/unit_legacy/vagrant/command/group_base_test.rb +15 -0
- data/test/unit_legacy/vagrant/command/helpers_test.rb +88 -0
- data/test/unit_legacy/vagrant/command/init_test.rb +10 -0
- data/test/unit_legacy/vagrant/command/package_test.rb +27 -0
- data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
- data/test/unit_legacy/vagrant/config/error_recorder_test.rb +18 -0
- data/test/unit_legacy/vagrant/config/ssh_test.rb +12 -0
- data/test/unit_legacy/vagrant/config/vagrant_test.rb +35 -0
- data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +92 -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_legacy/vagrant/errors_test.rb +42 -0
- data/test/unit_legacy/vagrant/hosts/base_test.rb +46 -0
- data/test/unit_legacy/vagrant/hosts/bsd_test.rb +53 -0
- data/test/unit_legacy/vagrant/hosts/linux_test.rb +54 -0
- data/test/unit_legacy/vagrant/plugin_test.rb +9 -0
- data/test/unit_legacy/vagrant/provisioners/base_test.rb +63 -0
- data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +190 -0
- data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +115 -0
- data/test/unit_legacy/vagrant/provisioners/chef_test.rb +209 -0
- data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/unit_legacy/vagrant/provisioners/shell_test.rb +79 -0
- data/test/unit_legacy/vagrant/ssh/session_test.rb +40 -0
- data/test/unit_legacy/vagrant/ssh_test.rb +304 -0
- data/test/unit_legacy/vagrant/systems/base_test.rb +18 -0
- data/test/unit_legacy/vagrant/systems/linux_test.rb +104 -0
- data/test/unit_legacy/vagrant/util/busy_test.rb +106 -0
- data/test/unit_legacy/vagrant/util/counter_test.rb +29 -0
- data/test/unit_legacy/vagrant/util/platform_test.rb +18 -0
- data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/unit_legacy/vagrant/util/template_renderer_test.rb +145 -0
- data/test/unit_legacy/vagrant/vm_test.rb +300 -0
- data/vagrant-fixed-ssh.gemspec +70 -0
- metadata +712 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
require "acceptance/support/output"
|
2
|
+
|
3
|
+
# This creates a matcher that is used to match against certain
|
4
|
+
# Vagrant output. Vagrant output is not what is being tested,
|
5
|
+
# so all that state is hidden away in Acceptance::Output.
|
6
|
+
RSpec::Matchers.define :match_output do |expected, *args|
|
7
|
+
match do |actual|
|
8
|
+
Acceptance::Output.new(actual).send(expected, *args)
|
9
|
+
end
|
10
|
+
|
11
|
+
failure_message_for_should do |actual|
|
12
|
+
"expected output to match: #{expected} #{args.inspect}"
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Matcher that verifies that a process succeeds.
|
2
|
+
RSpec::Matchers.define :succeed do
|
3
|
+
match do |thing|
|
4
|
+
thing.exit_code.should == 0
|
5
|
+
end
|
6
|
+
|
7
|
+
failure_message_for_should do |actual|
|
8
|
+
"expected process to succeed. exit code: #{actual.exit_code}"
|
9
|
+
end
|
10
|
+
|
11
|
+
failure_message_for_should_not do |actual|
|
12
|
+
"expected process to fail. exit code: #{actual.exit_code}"
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "vagrant/util/retryable"
|
2
|
+
|
3
|
+
module Acceptance
|
4
|
+
module NetworkTests
|
5
|
+
include Vagrant::Util::Retryable
|
6
|
+
|
7
|
+
# Tests that the host can access the VM through the network.
|
8
|
+
#
|
9
|
+
# @param [String] url URL to request from the host.
|
10
|
+
# @param [Integer] guest_port Port to run a web server on the guest.
|
11
|
+
def assert_host_to_vm_network(url, guest_port)
|
12
|
+
# Start up a web server in another thread by SSHing into the VM.
|
13
|
+
thr = Thread.new do
|
14
|
+
assert_execute("vagrant", "ssh", "-c", "python -m SimpleHTTPServer #{guest_port}")
|
15
|
+
end
|
16
|
+
|
17
|
+
# Verify that port forwarding works by making a simple HTTP request
|
18
|
+
# to the port. We should get a 200 response. We retry this a few times
|
19
|
+
# as we wait for the HTTP server to come online.
|
20
|
+
retryable(:tries => 5, :sleep => 2) do
|
21
|
+
result = Net::HTTP.get_response(URI.parse(url))
|
22
|
+
result.code.should == "200"
|
23
|
+
end
|
24
|
+
ensure
|
25
|
+
# The server needs to die. This is how.
|
26
|
+
thr.kill if thr
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
module Acceptance
|
2
|
+
# This class helps with matching against output so that every
|
3
|
+
# test isn't inherently tied to the output format of Vagrant.
|
4
|
+
class Output
|
5
|
+
DEFAULT_VM = "default"
|
6
|
+
|
7
|
+
def initialize(text)
|
8
|
+
@text = text
|
9
|
+
end
|
10
|
+
|
11
|
+
def box_already_exists(name)
|
12
|
+
@text =~ /^A box already exists under the name of '#{name}'/
|
13
|
+
end
|
14
|
+
|
15
|
+
# Checks that an error message was outputted about the box
|
16
|
+
# being added being invalid.
|
17
|
+
def box_invalid
|
18
|
+
@text =~ /^The box file you're attempting to add is invalid./
|
19
|
+
end
|
20
|
+
|
21
|
+
# Checks that an error message was outputted about the path
|
22
|
+
# not existing to the box.
|
23
|
+
def box_path_doesnt_exist
|
24
|
+
@text =~ /^The specified path to a file doesn't exist.$/
|
25
|
+
end
|
26
|
+
|
27
|
+
# Tests that the box with given name is installed.
|
28
|
+
def box_installed(name)
|
29
|
+
@text =~ /^#{name}$/
|
30
|
+
end
|
31
|
+
|
32
|
+
# Tests that the output says there are no installed boxes.
|
33
|
+
def no_boxes
|
34
|
+
@text =~ /There are no installed boxes!/
|
35
|
+
end
|
36
|
+
|
37
|
+
# Tests that the output says there is no Vagrantfile, and as such
|
38
|
+
# can't do whatever we requested Vagrant to do.
|
39
|
+
def no_vagrantfile
|
40
|
+
@text =~ /^A Vagrant environment is required/
|
41
|
+
end
|
42
|
+
|
43
|
+
# Tests that the output contains a specific Vagrant version.
|
44
|
+
def version(version)
|
45
|
+
@text =~ /^Vagrant version #{version}$/
|
46
|
+
end
|
47
|
+
|
48
|
+
def resume_port_collision
|
49
|
+
@text =~ /^This VM cannot be resumed, because the forwarded ports/
|
50
|
+
end
|
51
|
+
|
52
|
+
# This checks that the VM with the given `vm_name` has the
|
53
|
+
# status of `status`.
|
54
|
+
def status(vm_name, status)
|
55
|
+
@text =~ /^#{vm_name}\s+#{status}$/
|
56
|
+
end
|
57
|
+
|
58
|
+
# This checks that an error message that the VM must be created
|
59
|
+
# is shown.
|
60
|
+
def error_vm_must_be_created
|
61
|
+
@text =~ /^VM must be created/
|
62
|
+
end
|
63
|
+
|
64
|
+
# This checks that the warning that the VM is not created is emitted.
|
65
|
+
def vm_not_created_warning
|
66
|
+
@text =~ /VM not created. Moving on...$/
|
67
|
+
end
|
68
|
+
|
69
|
+
# This checks that the VM is destroyed.
|
70
|
+
def vm_destroyed
|
71
|
+
@text =~ /Destroying VM and associated drives...$/
|
72
|
+
end
|
73
|
+
|
74
|
+
# This checks that the "up" output properly contains text showing that
|
75
|
+
# it is downloading the box during the up process.
|
76
|
+
def up_fetching_box(name, vm=DEFAULT_VM)
|
77
|
+
@text =~ /^\[#{vm}\] Box #{name} was not found. Fetching box from specified URL...$/
|
78
|
+
end
|
79
|
+
|
80
|
+
# Check that the output shows that the VM was shut down gracefully
|
81
|
+
def vm_halt_graceful
|
82
|
+
@text =~ /Attempting graceful shutdown of/
|
83
|
+
end
|
84
|
+
|
85
|
+
# Output shows a forceful VM shutdown.
|
86
|
+
def vm_halt_force
|
87
|
+
@text =~ /Forcing shutdown of VM...$/
|
88
|
+
end
|
89
|
+
|
90
|
+
# Output shows the VM is in the process of suspending
|
91
|
+
def vm_suspending
|
92
|
+
@text =~ /Saving VM state and suspending execution...$/
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "acceptance/support/isolated_environment"
|
2
|
+
require "acceptance/support/output"
|
3
|
+
require "acceptance/support/virtualbox"
|
4
|
+
|
5
|
+
shared_context "acceptance" do
|
6
|
+
# Setup variables for the loggers of this test. These can be used to
|
7
|
+
# create more verbose logs for tests which can be useful in the case
|
8
|
+
# that a test fails.
|
9
|
+
let(:logger_name) { "logger" }
|
10
|
+
let(:logger) { Log4r::Logger.new("test::acceptance::#{logger_name}") }
|
11
|
+
|
12
|
+
# This is the global configuration given by the acceptance test
|
13
|
+
# configurations.
|
14
|
+
let(:config) { $acceptance_options }
|
15
|
+
|
16
|
+
# Setup the environment so that we have an isolated area
|
17
|
+
# to run Vagrant. We do some configuration here as well in order
|
18
|
+
# to replace "vagrant" with the proper path to Vagrant as well
|
19
|
+
# as tell the isolated environment about custom environmental
|
20
|
+
# variables to pass in.
|
21
|
+
let!(:environment) { new_environment }
|
22
|
+
|
23
|
+
before(:each) do
|
24
|
+
# Wait for VBoxSVC to disappear, since each test requires its
|
25
|
+
# own isolated VirtualBox process.
|
26
|
+
Acceptance::VirtualBox.wait_for_vboxsvc
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:each) do
|
30
|
+
environment.close
|
31
|
+
end
|
32
|
+
|
33
|
+
# Creates a new isolated environment instance each time it is called.
|
34
|
+
#
|
35
|
+
# @return [Acceptance::IsolatedEnvironment]
|
36
|
+
def new_environment(env=nil)
|
37
|
+
apps = { "vagrant" => config.vagrant_path }
|
38
|
+
env = config.env.merge(env || {})
|
39
|
+
|
40
|
+
Acceptance::IsolatedEnvironment.new(apps, env)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Executes the given command in the context of the isolated environment.
|
44
|
+
#
|
45
|
+
# @return [Object]
|
46
|
+
def execute(*args, &block)
|
47
|
+
environment.execute(*args, &block)
|
48
|
+
end
|
49
|
+
|
50
|
+
# This method is an assertion helper for asserting that a process
|
51
|
+
# succeeds. It is a wrapper around `execute` that asserts that the
|
52
|
+
# exit status was successful.
|
53
|
+
def assert_execute(*args, &block)
|
54
|
+
result = execute(*args, &block)
|
55
|
+
assert(result.exit_code == 0, "expected '#{args.join(" ")}' to succeed")
|
56
|
+
result
|
57
|
+
end
|
58
|
+
|
59
|
+
# This can be added to the beginning of a test to verify that the
|
60
|
+
# box with the given name is available to a test. This will raise
|
61
|
+
# an exception if the box is not found.
|
62
|
+
def require_box(name)
|
63
|
+
if !File.exist?(box_path(name))
|
64
|
+
raise ArgumentError, "The tests should have a '#{name}' box."
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# This is used to get the path to a box of a specific name.
|
69
|
+
def box_path(name)
|
70
|
+
File.join(config.box_directory, "#{name}.box")
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This is a shared example that tests that a command requires a
|
2
|
+
# Vagrant environment to run properly. The exact command to run
|
3
|
+
# should be given as a parameter to the shared examples.
|
4
|
+
shared_examples "a command that requires a Vagrantfile" do |*args|
|
5
|
+
let(:command) do
|
6
|
+
raise ArgumentError, "A command must be set for the shared example." if args.empty?
|
7
|
+
args[0]
|
8
|
+
end
|
9
|
+
|
10
|
+
it "fails if no Vagrantfile is found" do
|
11
|
+
result = execute(*command)
|
12
|
+
result.should_not succeed
|
13
|
+
result.stderr.should match_output(:no_vagrantfile)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# This is a shared example that tests that the command requires a
|
18
|
+
# virtual machine to be created, and additionally to be in one of
|
19
|
+
# many states.
|
20
|
+
shared_examples "a command that requires a virtual machine" do |*args|
|
21
|
+
let(:command) do
|
22
|
+
raise ArgumentError, "A command must be set for the shared example." if args.empty?
|
23
|
+
args[0]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "fails if the virtual machine is not created" do
|
27
|
+
assert_execute("vagrant", "init")
|
28
|
+
|
29
|
+
result = execute(*command)
|
30
|
+
result.should_not succeed
|
31
|
+
result.stderr.should match_output(:error_vm_must_be_created)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'sys/proctable'
|
2
|
+
|
3
|
+
module Acceptance
|
4
|
+
module VirtualBox
|
5
|
+
extend self
|
6
|
+
|
7
|
+
# This method will wait for the "VBoxSVC" process to end. This will
|
8
|
+
# block during that time period. The reason for this is because only
|
9
|
+
# one "VBoxSVC" can run per user and manages all state within VirtualBox.
|
10
|
+
# Before you can run VirtualBox with a custom home directory, you must
|
11
|
+
# wait for this VBoxSVC process to die.
|
12
|
+
def wait_for_vboxsvc
|
13
|
+
time_passed = 0
|
14
|
+
while find_vboxsvc
|
15
|
+
if time_passed > 5
|
16
|
+
raise Exception, "VBoxSVC process is not going away."
|
17
|
+
end
|
18
|
+
|
19
|
+
sleep 1
|
20
|
+
time_passed += 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# This method finds the VBoxSVC process and returns information about it.
|
25
|
+
# This will return "nil" if VBoxSVC is not found.
|
26
|
+
def find_vboxsvc
|
27
|
+
Sys::ProcTable.ps do |process|
|
28
|
+
if process.comm == "VBoxSVC"
|
29
|
+
return process
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
require "acceptance/support/shared/command_examples"
|
3
|
+
|
4
|
+
describe "vagrant suspend" do
|
5
|
+
include_context "acceptance"
|
6
|
+
it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "suspend"]
|
7
|
+
|
8
|
+
it "succeeds and ignores if the VM is not created" do
|
9
|
+
require_box("default")
|
10
|
+
|
11
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
12
|
+
assert_execute("vagrant", "init")
|
13
|
+
|
14
|
+
result = assert_execute("vagrant", "suspend")
|
15
|
+
result.stdout.should match_output(:vm_not_created_warning)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "is able to suspend a running virtual machine" do
|
19
|
+
require_box("default")
|
20
|
+
|
21
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
22
|
+
assert_execute("vagrant", "init")
|
23
|
+
assert_execute("vagrant", "up")
|
24
|
+
|
25
|
+
# Suspend the VM and assert that it worked properly (seemingly)
|
26
|
+
result = assert_execute("vagrant", "suspend")
|
27
|
+
result.stdout.should match_output(:vm_suspending)
|
28
|
+
|
29
|
+
# Assert that the VM is no longer running
|
30
|
+
result = assert_execute("vagrant", "status")
|
31
|
+
result.stdout.should match_output(:status, "default", "saved")
|
32
|
+
end
|
33
|
+
|
34
|
+
# These tests are parameterized since both "vagrant resume" and
|
35
|
+
# "vagrant up" should achieve the same result.
|
36
|
+
["resume", "up"].each do |command|
|
37
|
+
it "is able to resume after the machine has been suspended using #{command}" do
|
38
|
+
require_box("default")
|
39
|
+
|
40
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
41
|
+
assert_execute("vagrant", "init")
|
42
|
+
assert_execute("vagrant", "up")
|
43
|
+
assert_execute("vagrant", "suspend")
|
44
|
+
|
45
|
+
# Assert that the VM is no longer running
|
46
|
+
result = assert_execute("vagrant", "status")
|
47
|
+
result.stdout.should match_output(:status, "default", "saved")
|
48
|
+
|
49
|
+
assert_execute("vagrant", command)
|
50
|
+
|
51
|
+
# Assert that the VM is once again running
|
52
|
+
result = assert_execute("vagrant", "status")
|
53
|
+
result.stdout.should match_output(:status, "default", "running")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
require "acceptance/support/shared/command_examples"
|
3
|
+
|
4
|
+
describe "vagrant up", "basics" do
|
5
|
+
include_context "acceptance"
|
6
|
+
it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "up"]
|
7
|
+
|
8
|
+
# This creates an initial environment that is ready for a "vagrant up"
|
9
|
+
def initialize_valid_environment
|
10
|
+
require_box("default")
|
11
|
+
|
12
|
+
assert_execute("vagrant", "box", "add", "base", box_path("default"))
|
13
|
+
assert_execute("vagrant", "init")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "brings up a running virtual machine" do
|
17
|
+
initialize_valid_environment
|
18
|
+
|
19
|
+
assert_execute("vagrant", "up")
|
20
|
+
result = assert_execute("vagrant", "status")
|
21
|
+
result.stdout.should match_output(:status, "default", "running")
|
22
|
+
end
|
23
|
+
|
24
|
+
it "is able to run if Vagrantfile is in a parent directory" do
|
25
|
+
initialize_valid_environment
|
26
|
+
|
27
|
+
# Create a subdirectory in the working directory and use
|
28
|
+
# that as the CWD for `vagrant up` and verify it still works
|
29
|
+
foodir = environment.workdir.join("foo")
|
30
|
+
foodir.mkdir
|
31
|
+
assert_execute("vagrant", "up", :chdir => foodir.to_s)
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
require "acceptance/support/shared/command_examples"
|
3
|
+
|
4
|
+
describe "vagrant up", "with a box URL set" do
|
5
|
+
include_context "acceptance"
|
6
|
+
|
7
|
+
it "downloads and brings up the VM if the box doesn't exist" do
|
8
|
+
require_box("default")
|
9
|
+
|
10
|
+
assert_execute("vagrant", "init", "base", box_path("default"))
|
11
|
+
result = assert_execute("vagrant", "up")
|
12
|
+
result.stdout.should match_output(:up_fetching_box, "base")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "downloads the file only once and works if shared by multiple VMs", :issue => "GH-564" do
|
16
|
+
require_box("default")
|
17
|
+
|
18
|
+
environment.workdir.join("Vagrantfile").open("w+") do |f|
|
19
|
+
f.puts(<<-VFILE)
|
20
|
+
Vagrant::Config.run do |config|
|
21
|
+
config.vm.define :machine1 do |vm_config|
|
22
|
+
vm_config.vm.box = "base"
|
23
|
+
vm_config.vm.box_url = "#{box_path("default")}"
|
24
|
+
end
|
25
|
+
|
26
|
+
config.vm.define :machine2 do |vm_config|
|
27
|
+
vm_config.vm.box = "base"
|
28
|
+
vm_config.vm.box_url = "#{box_path("default")}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
VFILE
|
32
|
+
end
|
33
|
+
|
34
|
+
# Bring up the environment, which should work. `machine1` should download
|
35
|
+
# the box while `machine2` doesn't.
|
36
|
+
result = assert_execute("vagrant", "up")
|
37
|
+
result.stdout.should match_output(:up_fetching_box, "base", "machine1")
|
38
|
+
result.stdout.should_not match_output(:up_fetching_box, "base", "machine2")
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require File.expand_path("../base", __FILE__)
|
2
|
+
require "acceptance/support/matchers/have_color"
|
3
|
+
|
4
|
+
describe "vagrant and color output" do
|
5
|
+
include_context "acceptance"
|
6
|
+
|
7
|
+
# This is a check to see if the `expect` program is installed on this
|
8
|
+
# computer. Some tests require this and if this doesn't exist then the
|
9
|
+
# test itself will be skipped.
|
10
|
+
def self.has_expect?
|
11
|
+
`which expect`
|
12
|
+
$?.success?
|
13
|
+
end
|
14
|
+
|
15
|
+
it "outputs color if there is a TTY", :if => has_expect? do
|
16
|
+
environment.workdir.join("color.exp").open("w+") do |f|
|
17
|
+
f.puts(<<-SCRIPT)
|
18
|
+
spawn #{environment.replace_command("vagrant")} status
|
19
|
+
expect default {}
|
20
|
+
SCRIPT
|
21
|
+
end
|
22
|
+
|
23
|
+
result = execute("expect", "color.exp")
|
24
|
+
result.stdout.should have_color
|
25
|
+
end
|
26
|
+
|
27
|
+
it "doesn't output color if there is a TTY but --no-color is present", :if => has_expect? do
|
28
|
+
environment.workdir.join("color.exp").open("w+") do |f|
|
29
|
+
f.puts(<<-SCRIPT)
|
30
|
+
spawn #{environment.replace_command("vagrant")} status --no-color
|
31
|
+
expect default {}
|
32
|
+
SCRIPT
|
33
|
+
end
|
34
|
+
|
35
|
+
result = execute("expect", "color.exp")
|
36
|
+
result.stdout.should_not have_color
|
37
|
+
end
|
38
|
+
|
39
|
+
it "doesn't output color in the absense of a TTY" do
|
40
|
+
# This should always output an error, which on a TTY would
|
41
|
+
# output color. We check that this doesn't output color.
|
42
|
+
# If `vagrant status` itself is broken, another acceptance test
|
43
|
+
# should catch that. We just assume it works here.
|
44
|
+
result = execute("vagrant", "status")
|
45
|
+
result.stdout.should_not have_color
|
46
|
+
end
|
47
|
+
end
|