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,220 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+ require "pathname"
3
+
4
+ require "vagrant/util/file_mode"
5
+
6
+ require "support/tempdir"
7
+
8
+ describe Vagrant::Environment do
9
+ include_context "unit"
10
+
11
+ let(:home_path) { Pathname.new(Tempdir.new.path) }
12
+ let(:instance) { described_class.new(:home_path => home_path) }
13
+
14
+ describe "current working directory" do
15
+ it "is the cwd by default" do
16
+ described_class.new.cwd.should == Pathname.new(Dir.pwd)
17
+ end
18
+
19
+ it "is set to the cwd given" do
20
+ directory = File.dirname(__FILE__)
21
+ instance = described_class.new(:cwd => directory)
22
+ instance.cwd.should == Pathname.new(directory)
23
+ end
24
+
25
+ it "is set to the environmental variable VAGRANT_CWD" do
26
+ pending "A good temporary ENV thing"
27
+ end
28
+
29
+ it "raises an exception if the CWD doesn't exist" do
30
+ expect { described_class.new(:cwd => "doesntexist") }.
31
+ to raise_error(Vagrant::Errors::EnvironmentNonExistentCWD)
32
+ end
33
+ end
34
+
35
+ describe "home path" do
36
+ it "is set to the home path given" do
37
+ dir = Tempdir.new.path
38
+ instance = described_class.new(:home_path => dir)
39
+ instance.home_path.should == Pathname.new(dir)
40
+ end
41
+
42
+ it "is set to the environmental variable VAGRANT_HOME" do
43
+ pending "A good temporary ENV thing"
44
+ end
45
+
46
+ it "is set to the DEFAULT_HOME by default" do
47
+ expected = Pathname.new(File.expand_path(described_class::DEFAULT_HOME))
48
+ described_class.new.home_path.should == expected
49
+ end
50
+
51
+ it "throws an exception if inaccessible" do
52
+ expect {
53
+ described_class.new(:home_path => "/")
54
+ }.to raise_error(Vagrant::Errors::HomeDirectoryNotAccessible)
55
+ end
56
+ end
57
+
58
+ describe "copying the private SSH key" do
59
+ it "copies the SSH key into the home directory" do
60
+ env = isolated_environment
61
+ instance = described_class.new(:home_path => env.homedir)
62
+
63
+ pk = env.homedir.join("insecure_private_key")
64
+ pk.should be_exist
65
+ Vagrant::Util::FileMode.from_octal(pk.stat.mode).should == "600"
66
+ end
67
+ end
68
+
69
+ it "has a box collection pointed to the proper directory" do
70
+ collection = instance.boxes
71
+ collection.should be_kind_of(Vagrant::BoxCollection)
72
+ collection.directory.should == instance.boxes_path
73
+ end
74
+
75
+ describe "action runner" do
76
+ it "has an action runner" do
77
+ instance.action_runner.should be_kind_of(Vagrant::Action::Runner)
78
+ end
79
+
80
+ it "has a `ui` in the globals" do
81
+ result = nil
82
+ callable = lambda { |env| result = env[:ui] }
83
+
84
+ instance.action_runner.run(callable)
85
+ result.should eql(instance.ui)
86
+ end
87
+ end
88
+
89
+ describe "action registry" do
90
+ it "has an action registry" do
91
+ instance.action_registry.should be_kind_of(Vagrant::Registry)
92
+ end
93
+
94
+ it "should have the built-in actions in the registry" do
95
+ instance.action_registry.get(:provision).should_not be_nil
96
+ end
97
+ end
98
+
99
+ describe "primary VM" do
100
+ before do
101
+ # This is really nasty but we do this to remove the dependency on
102
+ # having VirtualBox installed to run tests.
103
+ Vagrant::Driver::VirtualBox.stub(:new) do |uuid|
104
+ double("vm-#{uuid}")
105
+ end
106
+ end
107
+
108
+ it "should be the only VM if not a multi-VM environment" do
109
+ instance.primary_vm.should == instance.vms.values.first
110
+ end
111
+
112
+ it "should be the VM marked as the primary" do
113
+ environment = isolated_environment do |env|
114
+ env.vagrantfile(<<-VF)
115
+ Vagrant::Config.run do |config|
116
+ config.vm.define :foo
117
+ config.vm.define :bar, :primary => true
118
+ end
119
+ VF
120
+ end
121
+
122
+ env = environment.create_vagrant_env
123
+ env.primary_vm.should == env.vms[:bar]
124
+ end
125
+ end
126
+
127
+ describe "loading configuration" do
128
+ it "should load global configuration" do
129
+ environment = isolated_environment do |env|
130
+ env.vagrantfile(<<-VF)
131
+ Vagrant::Config.run do |config|
132
+ config.vagrant.dotfile_name = "foo"
133
+ end
134
+ VF
135
+ end
136
+
137
+ env = environment.create_vagrant_env
138
+ env.config.global.vagrant.dotfile_name.should == "foo"
139
+ end
140
+
141
+ it "should load from a custom Vagrantfile" do
142
+ environment = isolated_environment do |env|
143
+ env.file("non_standard_name", <<-VF)
144
+ Vagrant::Config.run do |config|
145
+ config.vagrant.dotfile_name = "custom"
146
+ end
147
+ VF
148
+ end
149
+
150
+ env = environment.create_vagrant_env(:vagrantfile_name => "non_standard_name")
151
+ env.config.global.vagrant.dotfile_name.should == "custom"
152
+ end
153
+
154
+ it "should load VM configuration" do
155
+ environment = isolated_environment do |env|
156
+ env.vagrantfile(<<-VF)
157
+ Vagrant::Config.run do |config|
158
+ config.vagrant.dotfile_name = "foo"
159
+ end
160
+ VF
161
+ end
162
+
163
+ env = environment.create_vagrant_env
164
+ env.config.for_vm(:default).vm.name.should == :default
165
+ end
166
+
167
+ it "should load VM configuration with multiple VMs" do
168
+ environment = isolated_environment do |env|
169
+ env.vagrantfile(<<-VF)
170
+ Vagrant::Config.run do |config|
171
+ config.vm.define :foo do |vm|
172
+ vm.ssh.port = 100
173
+ end
174
+
175
+ config.vm.define :bar do |vm|
176
+ vm.ssh.port = 200
177
+ end
178
+ end
179
+ VF
180
+ end
181
+
182
+ env = environment.create_vagrant_env
183
+ env.config.for_vm(:foo).ssh.port.should == 100
184
+ env.config.for_vm(:bar).ssh.port.should == 200
185
+ end
186
+
187
+ it "should load box configuration" do
188
+ environment = isolated_environment do |env|
189
+ env.vagrantfile(<<-VF)
190
+ Vagrant::Config.run do |config|
191
+ config.vm.box = "base"
192
+ end
193
+ VF
194
+
195
+ env.box("base", <<-VF)
196
+ Vagrant::Config.run do |config|
197
+ config.ssh.port = 100
198
+ end
199
+ VF
200
+ end
201
+
202
+ env = environment.create_vagrant_env
203
+ env.config.for_vm(:default).ssh.port.should == 100
204
+ end
205
+ end
206
+
207
+ describe "ui" do
208
+ it "should be a silent UI by default" do
209
+ described_class.new.ui.should be_kind_of(Vagrant::UI::Silent)
210
+ end
211
+
212
+ it "should be a UI given in the constructor" do
213
+ # Create a custom UI for our test
214
+ class CustomUI < Vagrant::UI::Interface; end
215
+
216
+ instance = described_class.new(:ui_class => CustomUI)
217
+ instance.ui.should be_kind_of(CustomUI)
218
+ end
219
+ end
220
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ describe Vagrant::Hosts do
4
+ let(:registry) { Vagrant::Registry.new }
5
+
6
+ it "detects the host that matches true" do
7
+ foo_klass = Class.new(Vagrant::Hosts::Base) do
8
+ def self.match?; false; end
9
+ end
10
+
11
+ bar_klass = Class.new(Vagrant::Hosts::Base) do
12
+ def self.match?; true; end
13
+ end
14
+
15
+ registry.register(:foo, foo_klass)
16
+ registry.register(:bar, bar_klass)
17
+
18
+ described_class.detect(registry).should == bar_klass
19
+ end
20
+
21
+ it "detects the host that matches true with the highest precedence first" do
22
+ foo_klass = Class.new(Vagrant::Hosts::Base) do
23
+ def self.match?; true; end
24
+ end
25
+
26
+ bar_klass = Class.new(Vagrant::Hosts::Base) do
27
+ def self.match?; true; end
28
+ def self.precedence; 9; end
29
+ end
30
+
31
+ registry.register(:foo, foo_klass)
32
+ registry.register(:bar, bar_klass)
33
+
34
+ described_class.detect(registry).should == bar_klass
35
+ end
36
+ end
@@ -0,0 +1,74 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ describe Vagrant::Registry do
4
+ let(:instance) { described_class.new }
5
+
6
+ it "should return nil for nonexistent items" do
7
+ instance.get("foo").should be_nil
8
+ end
9
+
10
+ it "should register a simple key/value" do
11
+ instance.register("foo", "value")
12
+ instance.get("foo").should == "value"
13
+ end
14
+
15
+ it "should register an item without calling the block yet" do
16
+ expect do
17
+ instance.register("foo") do
18
+ raise Exception, "BOOM!"
19
+ end
20
+ end.to_not raise_error
21
+ end
22
+
23
+ it "should call and return the result of a block when asking for the item" do
24
+ object = Object.new
25
+ instance.register("foo") do
26
+ object
27
+ end
28
+
29
+ instance.get("foo").should eql(object)
30
+ end
31
+
32
+ it "should be able to get the item with []" do
33
+ object = Object.new
34
+ instance.register("foo") { object }
35
+
36
+ instance["foo"].should eql(object)
37
+ end
38
+
39
+ it "should cache the result of the item so they can be modified" do
40
+ # Make the proc generate a NEW array each time
41
+ instance.register("foo") { [] }
42
+
43
+ # Test that modifying the result modifies the actual cached
44
+ # value. This verifies we're caching.
45
+ instance.get("foo").should == []
46
+ instance.get("foo") << "value"
47
+ instance.get("foo").should == ["value"]
48
+ end
49
+
50
+ it "should be enumerable" do
51
+ instance.register("foo", "foovalue")
52
+ instance.register("bar", "barvalue")
53
+
54
+ keys = []
55
+ values = []
56
+ instance.each do |key, value|
57
+ keys << key
58
+ values << value
59
+ end
60
+
61
+ keys.sort.should == ["bar", "foo"]
62
+ values.sort.should == ["barvalue", "foovalue"]
63
+ end
64
+
65
+ it "should be able to convert to a hash" do
66
+ instance.register("foo", "foovalue")
67
+ instance.register("bar", "barvalue")
68
+
69
+ result = instance.to_hash
70
+ result.should be_a(Hash)
71
+ result["foo"].should == "foovalue"
72
+ result["bar"].should == "barvalue"
73
+ end
74
+ end
@@ -0,0 +1,16 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/ansi_escape_code_remover"
4
+
5
+ describe Vagrant::Util::ANSIEscapeCodeRemover do
6
+ let(:klass) do
7
+ Class.new do
8
+ extend Vagrant::Util::ANSIEscapeCodeRemover
9
+ end
10
+ end
11
+
12
+ it "should remove ANSI escape codes" do
13
+ klass.remove_ansi_escape_codes("\e[Hyo").should == "yo"
14
+ end
15
+ end
16
+
@@ -0,0 +1,23 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+ require 'digest/md5'
3
+ require 'digest/sha1'
4
+
5
+ require 'vagrant/util/file_checksum'
6
+
7
+ describe FileChecksum do
8
+ include_context "unit"
9
+
10
+ let(:environment) { isolated_environment }
11
+
12
+ it "should return a valid checksum for a file" do
13
+ file = environment.workdir.join("file")
14
+ file.open("w+") { |f| f.write("HELLO!") }
15
+
16
+ # Check multiple digests
17
+ instance = described_class.new(file, Digest::MD5)
18
+ instance.checksum.should == "9ac96c64417b5976a58839eceaa77956"
19
+
20
+ instance = described_class.new(file, Digest::SHA1)
21
+ instance.checksum.should == "264b207c7913e461c43d0f63d2512f4017af4755"
22
+ end
23
+ end
@@ -0,0 +1,38 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/hash_with_indifferent_access"
4
+
5
+ describe Vagrant::Util::HashWithIndifferentAccess do
6
+ let(:instance) { described_class.new }
7
+
8
+ it "is a Hash" do
9
+ instance.should be_kind_of(Hash)
10
+ end
11
+
12
+ it "allows indifferent access when setting with a string" do
13
+ instance["foo"] = "bar"
14
+ instance[:foo].should == "bar"
15
+ end
16
+
17
+ it "allows indifferent access when setting with a symbol" do
18
+ instance[:foo] = "bar"
19
+ instance["foo"].should == "bar"
20
+ end
21
+
22
+ it "allows indifferent key lookup" do
23
+ instance["foo"] = "bar"
24
+ instance.key?(:foo).should be
25
+ instance.has_key?(:foo).should be
26
+ instance.include?(:foo).should be
27
+ instance.member?(:foo).should be
28
+ end
29
+
30
+ it "allows for defaults to be passed in via an initializer block" do
31
+ instance = described_class.new do |h,k|
32
+ h[k] = "foo"
33
+ end
34
+
35
+ instance[:foo].should == "foo"
36
+ instance["bar"].should == "foo"
37
+ end
38
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "socket"
4
+
5
+ require "vagrant/util/is_port_open"
6
+
7
+ describe Vagrant::Util::IsPortOpen do
8
+ let(:klass) do
9
+ Class.new do
10
+ extend Vagrant::Util::IsPortOpen
11
+ end
12
+ end
13
+
14
+ let(:open_port) { 52811 }
15
+ let(:closed_port) { 52811 }
16
+
17
+ it "should report open ports" do
18
+ # Start a thread which listens on a port
19
+ thr = Thread.new do
20
+ server = TCPServer.new(open_port)
21
+ Thread.current[:running] = true
22
+
23
+ # Wait until we're told to die
24
+ Thread.current[:die] = false
25
+ while !Thread.current[:die]
26
+ Thread.pass
27
+ end
28
+
29
+ # Die!
30
+ server.close
31
+ end
32
+
33
+ # Wait until the server is running
34
+ while !thr[:running]
35
+ Thread.pass
36
+ end
37
+
38
+ # Verify that we report the port is open
39
+ klass.is_port_open?("localhost", open_port).should be
40
+
41
+ # Kill the thread
42
+ thr[:die] = true
43
+ thr.join
44
+ end
45
+
46
+ it "should report closed ports" do
47
+ # This CAN fail, since port 52811 might actually be in use, but I'm
48
+ # not sure what to do except choose some random port and hope for the
49
+ # best, really.
50
+ klass.is_port_open?("localhost", closed_port).should_not be
51
+ end
52
+ end
53
+