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.
Files changed (413) hide show
  1. data/.gitignore +46 -0
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +723 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +22 -0
  6. data/README.md +121 -0
  7. data/Rakefile +18 -0
  8. data/bin/vagrant +60 -0
  9. data/config/default.rb +30 -0
  10. data/contrib/README.md +12 -0
  11. data/contrib/emacs/vagrant.el +8 -0
  12. data/contrib/vim/vagrantfile.vim +9 -0
  13. data/keys/README.md +17 -0
  14. data/keys/vagrant +27 -0
  15. data/keys/vagrant.pub +1 -0
  16. data/lib/vagrant.rb +197 -0
  17. data/lib/vagrant/action.rb +63 -0
  18. data/lib/vagrant/action/box/destroy.rb +25 -0
  19. data/lib/vagrant/action/box/download.rb +84 -0
  20. data/lib/vagrant/action/box/package.rb +19 -0
  21. data/lib/vagrant/action/box/unpackage.rb +61 -0
  22. data/lib/vagrant/action/box/verify.rb +23 -0
  23. data/lib/vagrant/action/builder.rb +128 -0
  24. data/lib/vagrant/action/builtin.rb +171 -0
  25. data/lib/vagrant/action/env/set.rb +21 -0
  26. data/lib/vagrant/action/environment.rb +12 -0
  27. data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
  28. data/lib/vagrant/action/general/package.rb +101 -0
  29. data/lib/vagrant/action/general/validate.rb +18 -0
  30. data/lib/vagrant/action/runner.rb +53 -0
  31. data/lib/vagrant/action/vm/boot.rb +53 -0
  32. data/lib/vagrant/action/vm/check_accessible.rb +23 -0
  33. data/lib/vagrant/action/vm/check_box.rb +33 -0
  34. data/lib/vagrant/action/vm/check_guest_additions.rb +38 -0
  35. data/lib/vagrant/action/vm/check_port_collisions.rb +89 -0
  36. data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
  37. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +18 -0
  38. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  39. data/lib/vagrant/action/vm/clear_shared_folders.rb +18 -0
  40. data/lib/vagrant/action/vm/customize.rb +36 -0
  41. data/lib/vagrant/action/vm/default_name.rb +22 -0
  42. data/lib/vagrant/action/vm/destroy.rb +19 -0
  43. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +20 -0
  44. data/lib/vagrant/action/vm/discard_state.rb +22 -0
  45. data/lib/vagrant/action/vm/export.rb +57 -0
  46. data/lib/vagrant/action/vm/forward_ports.rb +92 -0
  47. data/lib/vagrant/action/vm/halt.rb +32 -0
  48. data/lib/vagrant/action/vm/host_name.rb +21 -0
  49. data/lib/vagrant/action/vm/import.rb +48 -0
  50. data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
  51. data/lib/vagrant/action/vm/network.rb +403 -0
  52. data/lib/vagrant/action/vm/nfs.rb +196 -0
  53. data/lib/vagrant/action/vm/package.rb +23 -0
  54. data/lib/vagrant/action/vm/package_vagrantfile.rb +36 -0
  55. data/lib/vagrant/action/vm/provision.rb +61 -0
  56. data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
  57. data/lib/vagrant/action/vm/prune_nfs_exports.rb +20 -0
  58. data/lib/vagrant/action/vm/resume.rb +20 -0
  59. data/lib/vagrant/action/vm/sane_defaults.rb +78 -0
  60. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  61. data/lib/vagrant/action/vm/share_folders.rb +114 -0
  62. data/lib/vagrant/action/vm/suspend.rb +20 -0
  63. data/lib/vagrant/action/warden.rb +92 -0
  64. data/lib/vagrant/box.rb +44 -0
  65. data/lib/vagrant/box_collection.rb +58 -0
  66. data/lib/vagrant/cli.rb +76 -0
  67. data/lib/vagrant/command.rb +24 -0
  68. data/lib/vagrant/command/base.rb +167 -0
  69. data/lib/vagrant/command/box.rb +58 -0
  70. data/lib/vagrant/command/box_add.rb +37 -0
  71. data/lib/vagrant/command/box_list.rb +28 -0
  72. data/lib/vagrant/command/box_remove.rb +27 -0
  73. data/lib/vagrant/command/box_repackage.rb +27 -0
  74. data/lib/vagrant/command/destroy.rb +64 -0
  75. data/lib/vagrant/command/gem.rb +39 -0
  76. data/lib/vagrant/command/halt.rb +39 -0
  77. data/lib/vagrant/command/init.rb +40 -0
  78. data/lib/vagrant/command/package.rb +75 -0
  79. data/lib/vagrant/command/provision.rb +40 -0
  80. data/lib/vagrant/command/reload.rb +39 -0
  81. data/lib/vagrant/command/resume.rb +33 -0
  82. data/lib/vagrant/command/ssh.rb +90 -0
  83. data/lib/vagrant/command/ssh_config.rb +51 -0
  84. data/lib/vagrant/command/start_mixins.rb +26 -0
  85. data/lib/vagrant/command/status.rb +36 -0
  86. data/lib/vagrant/command/suspend.rb +33 -0
  87. data/lib/vagrant/command/up.rb +40 -0
  88. data/lib/vagrant/communication.rb +7 -0
  89. data/lib/vagrant/communication/base.rb +56 -0
  90. data/lib/vagrant/communication/ssh.rb +230 -0
  91. data/lib/vagrant/config.rb +49 -0
  92. data/lib/vagrant/config/base.rb +82 -0
  93. data/lib/vagrant/config/container.rb +37 -0
  94. data/lib/vagrant/config/error_recorder.rb +19 -0
  95. data/lib/vagrant/config/loader.rb +127 -0
  96. data/lib/vagrant/config/nfs.rb +8 -0
  97. data/lib/vagrant/config/package.rb +7 -0
  98. data/lib/vagrant/config/ssh.rb +27 -0
  99. data/lib/vagrant/config/top.rb +72 -0
  100. data/lib/vagrant/config/vagrant.rb +14 -0
  101. data/lib/vagrant/config/vm.rb +168 -0
  102. data/lib/vagrant/config/vm/provisioner.rb +52 -0
  103. data/lib/vagrant/config/vm/sub_vm.rb +17 -0
  104. data/lib/vagrant/data_store.rb +92 -0
  105. data/lib/vagrant/downloaders.rb +7 -0
  106. data/lib/vagrant/downloaders/base.rb +25 -0
  107. data/lib/vagrant/downloaders/file.rb +22 -0
  108. data/lib/vagrant/downloaders/http.rb +97 -0
  109. data/lib/vagrant/driver.rb +8 -0
  110. data/lib/vagrant/driver/virtualbox.rb +134 -0
  111. data/lib/vagrant/driver/virtualbox_4_0.rb +459 -0
  112. data/lib/vagrant/driver/virtualbox_4_1.rb +459 -0
  113. data/lib/vagrant/driver/virtualbox_4_2.rb +606 -0
  114. data/lib/vagrant/driver/virtualbox_base.rb +326 -0
  115. data/lib/vagrant/environment.rb +522 -0
  116. data/lib/vagrant/errors.rb +445 -0
  117. data/lib/vagrant/guest.rb +18 -0
  118. data/lib/vagrant/guest/arch.rb +56 -0
  119. data/lib/vagrant/guest/base.rb +99 -0
  120. data/lib/vagrant/guest/debian.rb +64 -0
  121. data/lib/vagrant/guest/fedora.rb +66 -0
  122. data/lib/vagrant/guest/freebsd.rb +86 -0
  123. data/lib/vagrant/guest/gentoo.rb +46 -0
  124. data/lib/vagrant/guest/linux.rb +118 -0
  125. data/lib/vagrant/guest/linux/config.rb +19 -0
  126. data/lib/vagrant/guest/linux/error.rb +9 -0
  127. data/lib/vagrant/guest/openbsd.rb +20 -0
  128. data/lib/vagrant/guest/redhat.rb +67 -0
  129. data/lib/vagrant/guest/solaris.rb +118 -0
  130. data/lib/vagrant/guest/suse.rb +17 -0
  131. data/lib/vagrant/guest/ubuntu.rb +23 -0
  132. data/lib/vagrant/hosts.rb +37 -0
  133. data/lib/vagrant/hosts/arch.rb +55 -0
  134. data/lib/vagrant/hosts/base.rb +66 -0
  135. data/lib/vagrant/hosts/bsd.rb +97 -0
  136. data/lib/vagrant/hosts/fedora.rb +47 -0
  137. data/lib/vagrant/hosts/freebsd.rb +41 -0
  138. data/lib/vagrant/hosts/gentoo.rb +20 -0
  139. data/lib/vagrant/hosts/linux.rb +94 -0
  140. data/lib/vagrant/hosts/opensuse.rb +30 -0
  141. data/lib/vagrant/hosts/windows.rb +16 -0
  142. data/lib/vagrant/plugin.rb +81 -0
  143. data/lib/vagrant/provisioners.rb +12 -0
  144. data/lib/vagrant/provisioners/base.rb +44 -0
  145. data/lib/vagrant/provisioners/chef.rb +168 -0
  146. data/lib/vagrant/provisioners/chef_client.rb +132 -0
  147. data/lib/vagrant/provisioners/chef_solo.rb +234 -0
  148. data/lib/vagrant/provisioners/puppet.rb +176 -0
  149. data/lib/vagrant/provisioners/puppet_server.rb +78 -0
  150. data/lib/vagrant/provisioners/shell.rb +103 -0
  151. data/lib/vagrant/registry.rb +52 -0
  152. data/lib/vagrant/ssh.rb +126 -0
  153. data/lib/vagrant/test_helpers.rb +154 -0
  154. data/lib/vagrant/ui.rb +168 -0
  155. data/lib/vagrant/util.rb +12 -0
  156. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  157. data/lib/vagrant/util/busy.rb +59 -0
  158. data/lib/vagrant/util/counter.rb +24 -0
  159. data/lib/vagrant/util/file_checksum.rb +38 -0
  160. data/lib/vagrant/util/file_mode.rb +12 -0
  161. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  162. data/lib/vagrant/util/is_port_open.rb +38 -0
  163. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  164. data/lib/vagrant/util/network_ip.rb +28 -0
  165. data/lib/vagrant/util/platform.rb +68 -0
  166. data/lib/vagrant/util/retryable.rb +25 -0
  167. data/lib/vagrant/util/safe_exec.rb +36 -0
  168. data/lib/vagrant/util/safe_puts.rb +31 -0
  169. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  170. data/lib/vagrant/util/subprocess.rb +247 -0
  171. data/lib/vagrant/util/template_renderer.rb +83 -0
  172. data/lib/vagrant/version.rb +6 -0
  173. data/lib/vagrant/vm.rb +195 -0
  174. data/tasks/acceptance.rake +113 -0
  175. data/tasks/bundler.rake +3 -0
  176. data/tasks/test.rake +20 -0
  177. data/templates/commands/init/Vagrantfile.erb +99 -0
  178. data/templates/commands/ssh_config/config.erb +15 -0
  179. data/templates/config/validation_failed.erb +7 -0
  180. data/templates/guests/arch/network_dhcp.erb +7 -0
  181. data/templates/guests/arch/network_static.erb +7 -0
  182. data/templates/guests/debian/network_dhcp.erb +6 -0
  183. data/templates/guests/debian/network_static.erb +7 -0
  184. data/templates/guests/fedora/network_dhcp.erb +6 -0
  185. data/templates/guests/fedora/network_static.erb +13 -0
  186. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  187. data/templates/guests/freebsd/network_static.erb +3 -0
  188. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  189. data/templates/guests/gentoo/network_static.erb +4 -0
  190. data/templates/guests/redhat/network_dhcp.erb +6 -0
  191. data/templates/guests/redhat/network_static.erb +7 -0
  192. data/templates/locales/en.yml +759 -0
  193. data/templates/nfs/exports.erb +5 -0
  194. data/templates/nfs/exports_freebsd.erb +5 -0
  195. data/templates/nfs/exports_linux.erb +5 -0
  196. data/templates/package_Vagrantfile.erb +11 -0
  197. data/templates/provisioners/chef_client/client.erb +32 -0
  198. data/templates/provisioners/chef_solo/solo.erb +25 -0
  199. data/test/acceptance/base.rb +48 -0
  200. data/test/acceptance/box_test.rb +99 -0
  201. data/test/acceptance/destroy_test.rb +37 -0
  202. data/test/acceptance/halt_test.rb +72 -0
  203. data/test/acceptance/init_test.rb +33 -0
  204. data/test/acceptance/networking/host_only_test.rb +37 -0
  205. data/test/acceptance/networking/port_forward_test.rb +125 -0
  206. data/test/acceptance/package_test.rb +46 -0
  207. data/test/acceptance/provisioning/basic_test.rb +61 -0
  208. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  209. data/test/acceptance/provisioning/shell_test.rb +53 -0
  210. data/test/acceptance/resume_test.rb +17 -0
  211. data/test/acceptance/shared_folders_test.rb +84 -0
  212. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  213. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  214. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  215. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  216. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  217. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  218. data/test/acceptance/ssh_test.rb +46 -0
  219. data/test/acceptance/support/config.rb +42 -0
  220. data/test/acceptance/support/isolated_environment.rb +117 -0
  221. data/test/acceptance/support/matchers/have_color.rb +9 -0
  222. data/test/acceptance/support/matchers/match_output.rb +14 -0
  223. data/test/acceptance/support/matchers/succeed.rb +14 -0
  224. data/test/acceptance/support/network_tests.rb +29 -0
  225. data/test/acceptance/support/output.rb +95 -0
  226. data/test/acceptance/support/shared/base_context.rb +72 -0
  227. data/test/acceptance/support/shared/command_examples.rb +33 -0
  228. data/test/acceptance/support/virtualbox.rb +36 -0
  229. data/test/acceptance/suspend_test.rb +56 -0
  230. data/test/acceptance/up_basic_test.rb +33 -0
  231. data/test/acceptance/up_with_box_url.rb +40 -0
  232. data/test/acceptance/vagrant_test.rb +47 -0
  233. data/test/acceptance/version_test.rb +15 -0
  234. data/test/buildbot/README.md +72 -0
  235. data/test/buildbot/buildbot_config/__init__.py +0 -0
  236. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  237. data/test/buildbot/buildbot_config/config/loader.py +24 -0
  238. data/test/buildbot/buildbot_config/config/master.py +24 -0
  239. data/test/buildbot/buildbot_config/config/slave.py +22 -0
  240. data/test/buildbot/buildbot_config/master/__init__.py +6 -0
  241. data/test/buildbot/buildbot_config/master/builders.py +78 -0
  242. data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
  243. data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
  244. data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
  245. data/test/buildbot/buildbot_config/master/slaves.py +60 -0
  246. data/test/buildbot/buildbot_config/master/status.py +52 -0
  247. data/test/buildbot/master/Makefile.sample +28 -0
  248. data/test/buildbot/master/buildbot.tac +36 -0
  249. data/test/buildbot/master/master.cfg +67 -0
  250. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  251. data/test/buildbot/master/public_html/default.css +545 -0
  252. data/test/buildbot/master/public_html/favicon.ico +0 -0
  253. data/test/buildbot/master/public_html/robots.txt +10 -0
  254. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
  255. data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
  256. data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
  257. data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
  258. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  259. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  260. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  261. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  262. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  263. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  264. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  265. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  266. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  267. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  268. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  269. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  270. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  271. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  272. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
  273. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
  274. data/test/buildbot/master/templates/authfail.html +9 -0
  275. data/test/buildbot/master/templates/build.html +205 -0
  276. data/test/buildbot/master/templates/builder.html +118 -0
  277. data/test/buildbot/master/templates/builders.html +33 -0
  278. data/test/buildbot/master/templates/buildslave.html +72 -0
  279. data/test/buildbot/master/templates/buildslaves.html +70 -0
  280. data/test/buildbot/master/templates/change.html +15 -0
  281. data/test/buildbot/master/templates/layouts/base.html +58 -0
  282. data/test/buildbot/master/templates/macros/box.html +37 -0
  283. data/test/buildbot/master/templates/macros/build_line.html +50 -0
  284. data/test/buildbot/master/templates/macros/change.html +81 -0
  285. data/test/buildbot/master/templates/macros/forms.html +300 -0
  286. data/test/buildbot/master/templates/root.html +42 -0
  287. data/test/buildbot/master/templates/waterfall.html +53 -0
  288. data/test/buildbot/requirements.txt +4 -0
  289. data/test/buildbot/scripts/deploy.sh +38 -0
  290. data/test/buildbot/scripts/setup.sh +107 -0
  291. data/test/buildbot/slave/buildbot.tac +43 -0
  292. data/test/buildbot/slave/info/admin +1 -0
  293. data/test/buildbot/slave/info/host +1 -0
  294. data/test/buildbot/tests/__init__.py +0 -0
  295. data/test/buildbot/tests/master/__init__.py +0 -0
  296. data/test/buildbot/tests/master/test_slaves.py +41 -0
  297. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  298. data/test/config/acceptance_boxes.yml +7 -0
  299. data/test/support/isolated_environment.rb +46 -0
  300. data/test/support/tempdir.rb +34 -0
  301. data/test/unit/base.rb +21 -0
  302. data/test/unit/support/isolated_environment.rb +47 -0
  303. data/test/unit/support/shared/base_context.rb +30 -0
  304. data/test/unit/vagrant/action/builder_test.rb +156 -0
  305. data/test/unit/vagrant/action/environment_test.rb +16 -0
  306. data/test/unit/vagrant/action/runner_test.rb +65 -0
  307. data/test/unit/vagrant/action/warden_test.rb +92 -0
  308. data/test/unit/vagrant/box_collection_test.rb +56 -0
  309. data/test/unit/vagrant/box_test.rb +34 -0
  310. data/test/unit/vagrant/command/base_test.rb +150 -0
  311. data/test/unit/vagrant/config/base_test.rb +48 -0
  312. data/test/unit/vagrant/config/loader_test.rb +79 -0
  313. data/test/unit/vagrant/config/ssh_test.rb +17 -0
  314. data/test/unit/vagrant/config/top_test.rb +69 -0
  315. data/test/unit/vagrant/config/vm_test.rb +71 -0
  316. data/test/unit/vagrant/config_test.rb +27 -0
  317. data/test/unit/vagrant/data_store_test.rb +79 -0
  318. data/test/unit/vagrant/downloaders/base_test.rb +18 -0
  319. data/test/unit/vagrant/downloaders/file_test.rb +75 -0
  320. data/test/unit/vagrant/downloaders/http_test.rb +19 -0
  321. data/test/unit/vagrant/environment_test.rb +220 -0
  322. data/test/unit/vagrant/hosts_test.rb +36 -0
  323. data/test/unit/vagrant/registry_test.rb +74 -0
  324. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  325. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  326. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  327. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  328. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  329. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  330. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  331. data/test/unit/vagrant_test.rb +27 -0
  332. data/test/unit_legacy/locales/en.yml +8 -0
  333. data/test/unit_legacy/test_helper.rb +32 -0
  334. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +18 -0
  335. data/test/unit_legacy/vagrant/action/box/download_test.rb +125 -0
  336. data/test/unit_legacy/vagrant/action/box/package_test.rb +25 -0
  337. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +84 -0
  338. data/test/unit_legacy/vagrant/action/box/verify_test.rb +30 -0
  339. data/test/unit_legacy/vagrant/action/env/set_test.rb +24 -0
  340. data/test/unit_legacy/vagrant/action/general/package_test.rb +268 -0
  341. data/test/unit_legacy/vagrant/action/general/validate_test.rb +31 -0
  342. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +66 -0
  343. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +61 -0
  344. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +61 -0
  345. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +9 -0
  346. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
  347. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
  348. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
  349. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
  350. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +37 -0
  351. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +25 -0
  352. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
  353. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +45 -0
  354. data/test/unit_legacy/vagrant/action/vm/export_test.rb +107 -0
  355. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
  356. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +197 -0
  357. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +79 -0
  358. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +36 -0
  359. data/test/unit_legacy/vagrant/action/vm/import_test.rb +66 -0
  360. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +40 -0
  361. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +38 -0
  362. data/test/unit_legacy/vagrant/action/vm/network_test.rb +286 -0
  363. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +26 -0
  364. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +260 -0
  365. data/test/unit_legacy/vagrant/action/vm/package_test.rb +25 -0
  366. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
  367. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +65 -0
  368. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
  369. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +35 -0
  370. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +144 -0
  371. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +35 -0
  372. data/test/unit_legacy/vagrant/action_test.rb +89 -0
  373. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  374. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  375. data/test/unit_legacy/vagrant/cli_test.rb +35 -0
  376. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  377. data/test/unit_legacy/vagrant/command/group_base_test.rb +15 -0
  378. data/test/unit_legacy/vagrant/command/helpers_test.rb +88 -0
  379. data/test/unit_legacy/vagrant/command/init_test.rb +10 -0
  380. data/test/unit_legacy/vagrant/command/package_test.rb +27 -0
  381. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  382. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +18 -0
  383. data/test/unit_legacy/vagrant/config/ssh_test.rb +12 -0
  384. data/test/unit_legacy/vagrant/config/vagrant_test.rb +35 -0
  385. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +92 -0
  386. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  387. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  388. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  389. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  390. data/test/unit_legacy/vagrant/errors_test.rb +42 -0
  391. data/test/unit_legacy/vagrant/hosts/base_test.rb +46 -0
  392. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +53 -0
  393. data/test/unit_legacy/vagrant/hosts/linux_test.rb +54 -0
  394. data/test/unit_legacy/vagrant/plugin_test.rb +9 -0
  395. data/test/unit_legacy/vagrant/provisioners/base_test.rb +63 -0
  396. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +190 -0
  397. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +115 -0
  398. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +209 -0
  399. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +68 -0
  400. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +182 -0
  401. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +79 -0
  402. data/test/unit_legacy/vagrant/ssh/session_test.rb +40 -0
  403. data/test/unit_legacy/vagrant/ssh_test.rb +304 -0
  404. data/test/unit_legacy/vagrant/systems/base_test.rb +18 -0
  405. data/test/unit_legacy/vagrant/systems/linux_test.rb +104 -0
  406. data/test/unit_legacy/vagrant/util/busy_test.rb +106 -0
  407. data/test/unit_legacy/vagrant/util/counter_test.rb +29 -0
  408. data/test/unit_legacy/vagrant/util/platform_test.rb +18 -0
  409. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +43 -0
  410. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +145 -0
  411. data/test/unit_legacy/vagrant/vm_test.rb +300 -0
  412. data/vagrant-fixed-ssh.gemspec +70 -0
  413. metadata +712 -0
@@ -0,0 +1,16 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Action::Environment do
4
+ let(:instance) { described_class.new }
5
+
6
+ it "should be a hash" do
7
+ instance.should be_empty
8
+ instance["foo"] = "bar"
9
+ instance["foo"].should == "bar"
10
+ end
11
+
12
+ it "should be a hash accessible by string or symbol" do
13
+ instance["foo"] = "bar"
14
+ instance[:foo].should == "bar"
15
+ end
16
+ end
@@ -0,0 +1,65 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Action::Runner do
4
+ let(:registry) do
5
+ d = double("registry")
6
+ d.stub(:get)
7
+ d
8
+ end
9
+
10
+ let(:instance) { described_class.new(registry) }
11
+
12
+ it "should raise an error if an invalid callable is given" do
13
+ expect { instance.run(7) }.to raise_error(ArgumentError, /must be a callable/)
14
+ end
15
+
16
+ it "should be able to use a Proc as a callable" do
17
+ callable = Proc.new { raise Exception, "BOOM" }
18
+ expect { instance.run(callable) }.to raise_error(Exception, "BOOM")
19
+ end
20
+
21
+ it "should be able to use a Class as a callable" do
22
+ callable = Class.new do
23
+ def initialize(app, env)
24
+ end
25
+
26
+ def call(env)
27
+ raise Exception, "BOOM"
28
+ end
29
+ end
30
+
31
+ expect { instance.run(callable) }.to raise_error(Exception, "BOOM")
32
+ end
33
+
34
+ it "should pass options into hash given to callable" do
35
+ result = nil
36
+ callable = lambda do |env|
37
+ result = env["data"]
38
+ end
39
+
40
+ instance.run(callable, "data" => "foo")
41
+ result.should == "foo"
42
+ end
43
+
44
+ it "should pass global options into the hash" do
45
+ result = nil
46
+ callable = lambda do |env|
47
+ result = env["data"]
48
+ end
49
+
50
+ instance = described_class.new(registry, "data" => "bar")
51
+ instance.run(callable)
52
+ result.should == "bar"
53
+ end
54
+
55
+ it "should yield the block passed to the init method to get lazy loaded globals" do
56
+ result = nil
57
+ callable = lambda do |env|
58
+ result = env["data"]
59
+ end
60
+
61
+ instance = described_class.new(registry) { { "data" => "bar" } }
62
+ instance.run(callable)
63
+ result.should == "bar"
64
+ end
65
+ end
@@ -0,0 +1,92 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Action::Warden do
4
+ let(:data) { { :data => [] } }
5
+ let(:instance) { described_class.new }
6
+
7
+ # This returns a proc that can be used with the builder
8
+ # that simply appends data to an array in the env.
9
+ def appender_proc(data)
10
+ Proc.new { |env| env[:data] << data }
11
+ end
12
+
13
+ it "calls the actions like normal" do
14
+ instance = described_class.new([appender_proc(1), appender_proc(2)], data)
15
+ instance.call(data)
16
+
17
+ data[:data].should == [1, 2]
18
+ end
19
+
20
+ it "starts a recovery sequence when an exception is raised" do
21
+ class Action
22
+ def initialize(app, env)
23
+ @app = app
24
+ end
25
+
26
+ def call(env)
27
+ @app.call(env)
28
+ end
29
+
30
+ def recover(env)
31
+ env[:recover] << 1
32
+ end
33
+ end
34
+
35
+ class ActionTwo
36
+ def initialize(app, env)
37
+ @app = app
38
+ end
39
+
40
+ def call(env)
41
+ @app.call(env)
42
+ end
43
+
44
+ def recover(env)
45
+ env[:recover] << 2
46
+ end
47
+ end
48
+
49
+ error_proc = Proc.new { raise "ERROR!" }
50
+
51
+ data = { :recover => [] }
52
+ instance = described_class.new([Action, ActionTwo, error_proc], data)
53
+
54
+ # The error should be raised back up
55
+ expect { instance.call(data) }.
56
+ to raise_error(RuntimeError)
57
+
58
+ # Verify the recovery process goes in reverse order
59
+ data[:recover].should == [2, 1]
60
+
61
+ # Verify that the error is available in the data
62
+ data["vagrant.error"].should be_kind_of(RuntimeError)
63
+ end
64
+
65
+ it "does not do a recovery sequence if SystemExit is raised" do
66
+ class Action
67
+ def initialize(app, env)
68
+ @app = app
69
+ end
70
+
71
+ def call(env)
72
+ @app.call(env)
73
+ end
74
+
75
+ def recover(env)
76
+ env[:recover] = true
77
+ end
78
+ end
79
+
80
+ # Make a proc that just calls "abort" which raises a
81
+ # SystemExit exception.
82
+ error_proc = Proc.new { abort }
83
+
84
+ instance = described_class.new([Action, error_proc], data)
85
+
86
+ # The SystemExit should come through
87
+ expect { instance.call(data) }.to raise_error(SystemExit)
88
+
89
+ # The recover should not have been called
90
+ data.has_key?(:recover).should_not be
91
+ end
92
+ end
@@ -0,0 +1,56 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ describe Vagrant::BoxCollection do
4
+ include_context "unit"
5
+
6
+ let(:environment) { isolated_environment }
7
+ let(:action_runner) { double("action runner") }
8
+ let(:instance) { described_class.new(environment.boxes_dir, action_runner) }
9
+
10
+ it "should list all available boxes" do
11
+ # No boxes yet.
12
+ instance.length.should == 0
13
+
14
+ # Add some boxes to the environment and try again
15
+ environment.box("foo")
16
+ environment.box("bar")
17
+ instance.reload!
18
+ instance.length.should == 2
19
+ end
20
+
21
+ describe "finding" do
22
+ it "should return nil if it can't find the box" do
23
+ instance.find("foo").should be_nil
24
+ end
25
+
26
+ it "should return a box instance for any boxes it does find" do
27
+ environment.box("foo")
28
+ result = instance.find("foo")
29
+ result.should be_kind_of(Vagrant::Box)
30
+ result.name.should == "foo"
31
+ end
32
+ end
33
+
34
+ it "should throw an error if the box already exists when adding" do
35
+ environment.box("foo")
36
+ expect { instance.add("foo", "bar") }.to raise_error(Vagrant::Errors::BoxAlreadyExists)
37
+ end
38
+
39
+ it "should add the box" do
40
+ name = "foo"
41
+ url = "bar"
42
+
43
+ # Test the invocation of the action runner with the proper name
44
+ # and parameters. We leave the testing of the actual stack to
45
+ # acceptance tests, and individual pieces to unit tests of each
46
+ # step.
47
+ options = {
48
+ :box_name => name,
49
+ :box_url => url,
50
+ :box_directory => instance.directory.join(name)
51
+ }
52
+ action_runner.should_receive(:run).with(:box_add, options)
53
+
54
+ instance.add(name, url)
55
+ end
56
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ describe Vagrant::Box do
4
+ let(:name) { "foo" }
5
+ let(:directory) { "bar" }
6
+ let(:action_runner) { double("action_runner") }
7
+ let(:instance) { described_class.new(name, directory, action_runner) }
8
+
9
+ it "provides the name" do
10
+ instance.name.should == name
11
+ end
12
+
13
+ it "can destroy itself" do
14
+ # Simply test the messages to the action runner
15
+ options = {
16
+ :box_name => name,
17
+ :box_directory => directory
18
+ }
19
+ action_runner.should_receive(:run).with(:box_remove, options)
20
+
21
+ instance.destroy
22
+ end
23
+
24
+ it "can repackage itself" do
25
+ # Simply test the messages to the action runner
26
+ options = {
27
+ :box_name => name,
28
+ :box_directory => directory
29
+ }
30
+ action_runner.should_receive(:run).with(:box_repackage, options)
31
+
32
+ instance.repackage
33
+ end
34
+ end
@@ -0,0 +1,150 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+ require 'optparse'
3
+
4
+ describe Vagrant::Command::Base 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 raise an exception if a name is given in a non-multivm environment" do
72
+ environment.stub(:multivm?).and_return(false)
73
+
74
+ expect { instance.with_target_vms("foo") }.
75
+ to raise_error(Vagrant::Errors::MultiVMEnvironmentRequired)
76
+ end
77
+
78
+ it "should yield every VM in order is no name is given" do
79
+ foo_vm = double("foo")
80
+ foo_vm.stub(:name).and_return("foo")
81
+
82
+ bar_vm = double("bar")
83
+ bar_vm.stub(:name).and_return("bar")
84
+
85
+ environment.stub(:multivm? => true,
86
+ :vms => { "foo" => foo_vm, "bar" => bar_vm },
87
+ :vms_ordered => [foo_vm, bar_vm])
88
+
89
+ vms = []
90
+ instance.with_target_vms do |vm|
91
+ vms << vm
92
+ end
93
+
94
+ vms.should == [foo_vm, bar_vm]
95
+ end
96
+
97
+ it "raises an exception if the named VM doesn't exist" do
98
+ environment.stub(:multivm? => true, :vms => {})
99
+
100
+ expect { instance.with_target_vms("foo") }.
101
+ to raise_error(Vagrant::Errors::VMNotFoundError)
102
+ end
103
+
104
+ it "yields the given VM if a name is given" do
105
+ foo_vm = double("foo")
106
+ foo_vm.stub(:name).and_return(:foo)
107
+
108
+ environment.stub(:multivm? => true,
109
+ :vms => { :foo => foo_vm, :bar => nil })
110
+
111
+ vms = []
112
+ instance.with_target_vms("foo") { |vm| vms << vm }
113
+ vms.should == [foo_vm]
114
+ end
115
+ end
116
+
117
+ describe "splitting the main and subcommand args" do
118
+ let(:instance) do
119
+ Class.new(described_class) do
120
+ # Make the method public since it is normally protected
121
+ public :split_main_and_subcommand
122
+ end.new(nil, nil)
123
+ end
124
+
125
+ it "should work when given all 3 parts" do
126
+ result = instance.split_main_and_subcommand(["-v", "status", "-h", "-v"])
127
+ result.should == [["-v"], "status", ["-h", "-v"]]
128
+ end
129
+
130
+ it "should work when given only a subcommand and args" do
131
+ result = instance.split_main_and_subcommand(["status", "-h"])
132
+ result.should == [[], "status", ["-h"]]
133
+ end
134
+
135
+ it "should work when given only main flags" do
136
+ result = instance.split_main_and_subcommand(["-v", "-h"])
137
+ result.should == [["-v", "-h"], nil, []]
138
+ end
139
+
140
+ it "should work when given only a subcommand" do
141
+ result = instance.split_main_and_subcommand(["status"])
142
+ result.should == [[], "status", []]
143
+ end
144
+
145
+ it "works when there are other non-flag args after the subcommand" do
146
+ result = instance.split_main_and_subcommand(["-v", "box", "add", "-h"])
147
+ result.should == [["-v"], "box", ["add", "-h"]]
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,48 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Config::Base 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 "should merge by default by simply copying each instance variable" do
14
+ one = foo_class.new
15
+ one.one = 2
16
+ one.two = 1
17
+
18
+ two = foo_class.new
19
+ two.two = 5
20
+
21
+ result = one.merge(two)
22
+ result.one.should == 2
23
+ result.two.should == 5
24
+ end
25
+
26
+ it "doesn't merge values that start with a double underscore" do
27
+ bar_class = Class.new(foo_class) do
28
+ class_variable_set(:@@counter, 0)
29
+
30
+ def initialize
31
+ @__test = self.class.send(:class_variable_get, :@@counter)
32
+ self.class.send(:class_variable_set, :@@counter, @__test + 1)
33
+ end
34
+ end
35
+
36
+ one = bar_class.new
37
+ one.one = 2
38
+ one.two = 1
39
+
40
+ two = bar_class.new
41
+ two.two = 5
42
+
43
+ # Verify the counters
44
+ one.instance_variable_get(:@__test).should == 0
45
+ two.instance_variable_get(:@__test).should == 1
46
+ one.merge(two).instance_variable_get(:@__test).should == 2
47
+ end
48
+ end