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,79 @@
1
+ require "test_helper"
2
+
3
+ class ShellProvisionerTest < Test::Unit::TestCase
4
+ setup do
5
+ clean_paths
6
+
7
+ @klass = Vagrant::Provisioners::Shell
8
+ @action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
9
+ @config = @klass::Config.new
10
+ @config.top = Vagrant::Config::Top.new(@action_env.env)
11
+ @action = @klass.new(@action_env, @config)
12
+
13
+ @config.path = "foo"
14
+ end
15
+
16
+ context "config" do
17
+ setup do
18
+ @errors = Vagrant::Config::ErrorRecorder.new
19
+
20
+ # Start in a valid state (verified by a test below)
21
+ @config.path = "foo"
22
+ File.open(@config.expanded_path, "w") { |f| f.puts "HELLO" }
23
+ end
24
+
25
+ should "be valid" do
26
+ @config.validate(@errors)
27
+ assert @errors.errors.empty?
28
+ end
29
+
30
+ should "be invalid if the path is not set" do
31
+ @config.path = nil
32
+
33
+ @config.validate(@errors)
34
+ assert !@errors.errors.empty?
35
+ end
36
+
37
+ should "be invalid if the path does not exist" do
38
+ @config.path = "bar"
39
+
40
+ @config.validate(@errors)
41
+ assert !@errors.errors.empty?
42
+ end
43
+
44
+ should "be invalid if the upload path is not set" do
45
+ @config.upload_path = nil
46
+
47
+ @config.validate(@errors)
48
+ assert !@errors.errors.empty?
49
+ end
50
+ end
51
+
52
+ context "provisioning" do
53
+ setup do
54
+ @ssh = mock("ssh")
55
+ @action.vm.ssh.stubs(:execute).yields(@ssh)
56
+ end
57
+
58
+ should "upload the file, chmod, then execute it" do
59
+ commands = ["chmod +x #{@config.upload_path}", @config.upload_path]
60
+
61
+ p_seq = sequence("provisioning")
62
+ @action.vm.ssh.expects(:upload!).with(@config.expanded_path.to_s, @config.upload_path).in_sequence(p_seq)
63
+ @ssh.expects(:sudo!).with(commands).in_sequence(p_seq)
64
+
65
+ @action.provision!
66
+ end
67
+
68
+ should "append arguments if provided" do
69
+ @config.args = "foo bar baz"
70
+ commands = ["chmod +x #{@config.upload_path}", "#{@config.upload_path} #{@config.args}"]
71
+
72
+ p_seq = sequence("provisioning")
73
+ @action.vm.ssh.expects(:upload!).with(@config.expanded_path.to_s, @config.upload_path).in_sequence(p_seq)
74
+ @ssh.expects(:sudo!).with(commands).in_sequence(p_seq)
75
+
76
+ @action.provision!
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,40 @@
1
+ require "test_helper"
2
+
3
+ class SshSessionTest < Test::Unit::TestCase
4
+ setup do
5
+ @session = mock("session")
6
+ @env = vagrant_env
7
+
8
+ @klass = Vagrant::SSH::Session
9
+ @instance = @klass.new(@session, @env)
10
+ end
11
+
12
+ context "exec!" do
13
+ should "retry max_tries times" do
14
+ @session.expects(:open_channel).times(@env.config.ssh.max_tries).raises(IOError)
15
+ assert_raises(IOError) {
16
+ @instance.exec!("foo")
17
+ }
18
+ end
19
+ end
20
+
21
+ context "checking exit status" do
22
+ should "raise an ActionException if its non-zero" do
23
+ assert_raises(Vagrant::Errors::VagrantError) {
24
+ @instance.check_exit_status(1, "foo")
25
+ }
26
+ end
27
+
28
+ should "raise the given exception if specified" do
29
+ assert_raises(Vagrant::Errors::BaseVMNotFound) {
30
+ @instance.check_exit_status(1, "foo", :_error_class => Vagrant::Errors::BaseVMNotFound)
31
+ }
32
+ end
33
+
34
+ should "raise nothing if its zero" do
35
+ assert_nothing_raised {
36
+ @instance.check_exit_status(0, "foo")
37
+ }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,304 @@
1
+ require "test_helper"
2
+
3
+ class SshTest < Test::Unit::TestCase
4
+ def mock_ssh
5
+ @env = vagrant_env.vms[:default].env
6
+ @network_adapters = []
7
+ @vm = mock("vm")
8
+ @vm.stubs(:network_adapters).returns(@network_adapters)
9
+ @env.vm.stubs(:vm).returns(@vm)
10
+
11
+ @ssh = Vagrant::SSH.new(@env)
12
+ @session = mock("session")
13
+ end
14
+
15
+ setup do
16
+ VirtualBox.stubs(:version).returns("4.1.0")
17
+ end
18
+
19
+ context "connecting to external SSH" do
20
+ setup do
21
+ mock_ssh
22
+ @ssh.stubs(:check_key_permissions)
23
+ @ssh.stubs(:port).returns(2222)
24
+ @ssh.stubs(:safe_exec)
25
+ Kernel.stubs(:system).returns(true)
26
+ end
27
+
28
+ should "raise an exception if SSH is not found" do
29
+ Kernel.stubs(:system).returns(false)
30
+ Kernel.expects(:system).returns(false).with() do |command|
31
+ assert command =~ /^which ssh/
32
+ true
33
+ end
34
+
35
+ assert_raises(Vagrant::Errors::SSHUnavailable) {
36
+ @ssh.connect
37
+ }
38
+ end
39
+
40
+ should "check key permissions prior to exec" do
41
+ exec_seq = sequence("exec_seq")
42
+ @ssh.expects(:check_key_permissions).with(@env.config.ssh.private_key_path).once.in_sequence(exec_seq)
43
+ @ssh.expects(:safe_exec).in_sequence(exec_seq)
44
+ @ssh.connect
45
+ end
46
+
47
+ should "call exec with defaults when no options are supplied" do
48
+ ssh_exec_expect(@ssh.port,
49
+ @env.config.ssh.private_key_path,
50
+ @env.config.ssh.username,
51
+ @env.config.ssh.host)
52
+ @ssh.connect
53
+ end
54
+
55
+ should "call exec with supplied params" do
56
+ args = {:username => 'bar', :private_key_path => 'baz', :host => 'bak'}
57
+ ssh_exec_expect(@ssh.port, args[:private_key_path], args[:username], args[:host])
58
+ @ssh.connect(args)
59
+ end
60
+
61
+ should "add forward agent option if enabled" do
62
+ @env.config.ssh.forward_agent = true
63
+ ssh_exec_expect(@ssh.port,
64
+ @env.config.ssh.private_key_path,
65
+ @env.config.ssh.username,
66
+ @env.config.ssh.host) do |args|
67
+ assert args =~ /-o ForwardAgent=yes/
68
+ end
69
+ @ssh.connect
70
+ end
71
+
72
+ should "add forward X11 option if enabled" do
73
+ @env.config.ssh.forward_x11 = true
74
+ ssh_exec_expect(@ssh.port,
75
+ @env.config.ssh.private_key_path,
76
+ @env.config.ssh.username,
77
+ @env.config.ssh.host) do |args|
78
+ assert args =~ /-o ForwardX11=yes/
79
+ end
80
+ @ssh.connect
81
+ end
82
+
83
+ context "checking windows" do
84
+ should "error and exit if the platform is windows" do
85
+ Vagrant::Util::Platform.stubs(:windows?).returns(true)
86
+ assert_raises(Vagrant::Errors::SSHUnavailableWindows) { @ssh.connect }
87
+ end
88
+
89
+ should "not error and exit if the platform is anything other that windows" do
90
+ Vagrant::Util::Platform.stubs(:windows?).returns(false)
91
+ assert_nothing_raised { @ssh.connect }
92
+ end
93
+ end
94
+
95
+ def ssh_exec_expect(port, key_path, uname, host)
96
+ @ssh.expects(:safe_exec).with() do |arg|
97
+ assert arg =~ /^ssh/, "ssh command expected"
98
+ assert arg =~ /-p #{port}/, "-p #{port} expected"
99
+ assert arg =~ /-i #{key_path}/, "-i #{key_path} expected"
100
+ assert arg =~ /#{uname}@#{host}/, "#{uname}@{host} expected"
101
+ yield arg if block_given?
102
+ true
103
+ end
104
+ end
105
+ end
106
+
107
+ context "executing ssh commands" do
108
+ setup do
109
+ mock_ssh
110
+ @ssh.stubs(:check_key_permissions)
111
+ @ssh.stubs(:port).returns(80)
112
+ end
113
+
114
+ should "check key permissions then attempt to start connection" do
115
+ seq = sequence("seq")
116
+ @ssh.expects(:check_key_permissions).with(@env.config.ssh.private_key_path).once.in_sequence(seq)
117
+ Net::SSH.expects(:start).once.in_sequence(seq)
118
+ @ssh.execute
119
+ end
120
+
121
+ should "call net::ssh.start with the proper names" do
122
+ Net::SSH.expects(:start).once.with() do |host, username, opts|
123
+ assert_equal @env.config.ssh.host, host
124
+ assert_equal @env.config.ssh.username, username
125
+ assert_equal @ssh.port, opts[:port]
126
+ assert_equal [@env.config.ssh.private_key_path], opts[:keys]
127
+ assert opts[:keys_only]
128
+ true
129
+ end
130
+ @ssh.execute
131
+ end
132
+
133
+ should "forward agent if configured" do
134
+ @env.config.ssh.forward_agent = true
135
+ Net::SSH.expects(:start).once.with() do |host, username, opts|
136
+ assert opts[:forward_agent]
137
+ true
138
+ end
139
+
140
+ @ssh.execute
141
+ end
142
+
143
+ should "use custom host if set" do
144
+ @env.config.ssh.host = "foo"
145
+ Net::SSH.expects(:start).with(@env.config.ssh.host, @env.config.ssh.username, anything).once
146
+ @ssh.execute
147
+ end
148
+
149
+ should "yield an SSH session object" do
150
+ raw = mock("raw")
151
+ Net::SSH.expects(:start).returns(raw)
152
+ @ssh.execute do |ssh|
153
+ assert ssh.is_a?(Vagrant::SSH::Session)
154
+ assert_equal raw, ssh.session
155
+ end
156
+ end
157
+ end
158
+
159
+ context "SCPing files to the remote host" do
160
+ setup do
161
+ mock_ssh
162
+ end
163
+
164
+ should "use Vagrant::SSH execute to setup an SCP connection and upload" do
165
+ scp = mock("scp")
166
+ ssh = mock("ssh")
167
+ sess = mock("session")
168
+ ssh.stubs(:session).returns(sess)
169
+ scp.expects(:upload!).with("foo", "bar").once
170
+ Net::SCP.expects(:new).with(ssh.session).returns(scp).once
171
+ @ssh.expects(:execute).yields(ssh).once
172
+ @ssh.upload!("foo", "bar")
173
+ end
174
+ end
175
+
176
+ context "checking if host is up" do
177
+ setup do
178
+ mock_ssh
179
+ @ssh.stubs(:check_key_permissions)
180
+ @ssh.stubs(:port).returns(2222)
181
+ @session.stubs(:exec!).returns("hello\n")
182
+ end
183
+
184
+ should "return false if SSH connection times out" do
185
+ @env.config.ssh.timeout = 0.5
186
+
187
+ Net::SSH.stubs(:start).with() do
188
+ # Sleep here to artificially fake timeout
189
+ sleep 1
190
+ true
191
+ end
192
+
193
+ assert !@ssh.up?
194
+ end
195
+
196
+ should "return false if the connection is refused" do
197
+ Net::SSH.expects(:start).times(@env.config.ssh.max_tries).raises(Errno::ECONNREFUSED)
198
+ assert_nothing_raised {
199
+ assert !@ssh.up?
200
+ }
201
+ end
202
+
203
+ should "specify the timeout as an option to execute" do
204
+ @ssh.expects(:execute).yields(@session).with() do |opts|
205
+ assert_equal @env.config.ssh.timeout, opts[:timeout]
206
+ true
207
+ end
208
+
209
+ assert @ssh.up?
210
+ end
211
+
212
+ should "error and exit if a Net::SSH::AuthenticationFailed is raised" do
213
+ @ssh.expects(:execute).raises(Net::SSH::AuthenticationFailed)
214
+ assert_raises(Vagrant::Errors::SSHAuthenticationFailed) { @ssh.up? }
215
+ end
216
+
217
+ should "only get the port once (in the main thread)" do
218
+ @ssh.expects(:port).once.returns(2222)
219
+ @ssh.up?
220
+ end
221
+ end
222
+
223
+ context "getting the ssh port" do
224
+ setup do
225
+ mock_ssh
226
+ end
227
+
228
+ should "return the port given in options if it exists" do
229
+ assert_equal "47", @ssh.port({ :port => "47" })
230
+ end
231
+ end
232
+
233
+ context "checking key permissions" do
234
+ setup do
235
+ mock_ssh
236
+ @ssh.stubs(:file_perms)
237
+
238
+ @key_path = "foo"
239
+
240
+
241
+ @stat = mock("stat")
242
+ @stat.stubs(:owned?).returns(true)
243
+ File.stubs(:stat).returns(@stat)
244
+
245
+ Vagrant::Util::Platform.stubs(:windows?).returns(false)
246
+ end
247
+
248
+ should "do nothing if on windows" do
249
+ Vagrant::Util::Platform.stubs(:windows?).returns(true)
250
+ File.expects(:stat).never
251
+ @ssh.check_key_permissions(@key_path)
252
+ end
253
+
254
+ should "do nothing if the user is not the owner" do
255
+ @stat.expects(:owned?).returns(false)
256
+ File.expects(:chmod).never
257
+ @ssh.check_key_permissions(@key_path)
258
+ end
259
+
260
+ should "do nothing if the file perms equal 600" do
261
+ @ssh.expects(:file_perms).with(@key_path).returns("600")
262
+ File.expects(:chmod).never
263
+ @ssh.check_key_permissions(@key_path)
264
+ end
265
+
266
+ should "chmod the file if the file perms aren't 600" do
267
+ perm_sequence = sequence("perm_seq")
268
+ @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
269
+ File.expects(:chmod).with(0600, @key_path).once.in_sequence(perm_sequence)
270
+ @ssh.expects(:file_perms).returns("600").in_sequence(perm_sequence)
271
+ assert_nothing_raised { @ssh.check_key_permissions(@key_path) }
272
+ end
273
+
274
+ should "error and exit if the resulting chmod doesn't work" do
275
+ perm_sequence = sequence("perm_seq")
276
+ @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
277
+ File.expects(:chmod).with(0600, @key_path).once.in_sequence(perm_sequence)
278
+ @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
279
+ assert_raises(Vagrant::Errors::SSHKeyBadPermissions) { @ssh.check_key_permissions(@key_path) }
280
+ end
281
+
282
+ should "error and exit if a bad file perm is raised" do
283
+ @ssh.expects(:file_perms).with(@key_path).returns("900")
284
+ File.expects(:chmod).raises(Errno::EPERM)
285
+ assert_raises(Vagrant::Errors::SSHKeyBadPermissions) { @ssh.check_key_permissions(@key_path) }
286
+ end
287
+ end
288
+
289
+ context "getting file permissions" do
290
+ setup do
291
+ mock_ssh
292
+ end
293
+
294
+ should "return the last 3 characters of the file mode" do
295
+ path = "foo"
296
+ mode = "10000foo"
297
+ stat = mock("stat")
298
+ File.expects(:stat).with(path).returns(stat)
299
+ stat.expects(:mode).returns(mode)
300
+ @ssh.expects(:sprintf).with("%o", mode).returns(mode)
301
+ assert_equal path, @ssh.file_perms(path)
302
+ end
303
+ end
304
+ end
@@ -0,0 +1,18 @@
1
+ require "test_helper"
2
+
3
+ class BaseSystemTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Systems::Base
6
+
7
+ @vm = mock("vm")
8
+ @instance = @klass.new(@vm)
9
+ end
10
+
11
+ should "provide access to the VM" do
12
+ assert_equal @vm, @instance.vm
13
+ end
14
+
15
+ should "error on preparing host only network" do
16
+ assert_raises(@klass::BaseError) { @instance.prepare_host_only_network }
17
+ end
18
+ end
@@ -0,0 +1,104 @@
1
+ require "test_helper"
2
+
3
+ class LinuxSystemTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Systems::Linux
6
+ @ssh = mock("ssh")
7
+ @mock_env = vagrant_env
8
+ @vm = mock("vm")
9
+ @vm.stubs(:env).returns(@mock_env)
10
+ @instance = @klass.new(@vm)
11
+ end
12
+
13
+ context "halting" do
14
+ setup do
15
+ @ssh_session = mock("ssh_session")
16
+ @ssh.stubs(:execute).yields(@ssh_session)
17
+ @vm.stubs(:ssh).returns(@ssh)
18
+
19
+ @real_vm = mock("real_vm")
20
+ @real_vm.stubs(:state).returns(:powered_off)
21
+ @vm.stubs(:vm).returns(@real_vm)
22
+ end
23
+
24
+ should "execute halt via SSH" do
25
+ @ssh_session.expects(:exec!).with("sudo halt").once
26
+ @instance.halt
27
+ end
28
+ end
29
+
30
+ context "mounting shared folders" do
31
+ setup do
32
+ @name = "foo"
33
+ @guestpath = "/bar"
34
+ @owner = "owner"
35
+ @group = "group"
36
+ end
37
+
38
+ should "create the dir, mount the folder, then set permissions" do
39
+ mount_seq = sequence("mount_seq")
40
+ @ssh.expects(:exec!).with("sudo mkdir -p #{@guestpath}").in_sequence(mount_seq)
41
+ @instance.expects(:mount_folder).with(@ssh, @name, @guestpath, @owner, @group).in_sequence(mount_seq)
42
+ @ssh.expects(:exec!).with("sudo chown `id -u #{@owner}`:`id -g #{@group}` #{@guestpath}").in_sequence(mount_seq)
43
+
44
+ @instance.mount_shared_folder(@ssh, @name, @guestpath, @owner, @group)
45
+ end
46
+ end
47
+
48
+ #-------------------------------------------------------------------
49
+ # "Private" methods tests
50
+ #-------------------------------------------------------------------
51
+ context "mounting the main folder" do
52
+ setup do
53
+ @name = "foo"
54
+ @guestpath = "bar"
55
+ @owner = "owner"
56
+ @group = "group"
57
+ @sleeptime = 0
58
+ @limit = 10
59
+
60
+ @success_return = false
61
+ end
62
+
63
+ def mount_folder
64
+ @instance.mount_folder(@ssh, @name, @guestpath, @owner, @group, @sleeptime)
65
+ end
66
+
67
+ should "execute the proper mount command" do
68
+ @ssh.expects(:exec!).with("sudo mount -t vboxsf -o uid=`id -u #{@owner}`,gid=`id -g #{@group}` #{@name} #{@guestpath}").returns(@success_return)
69
+ mount_folder
70
+ end
71
+
72
+ should "test type of text and text string to detect error" do
73
+ data = mock("data")
74
+ data.expects(:[]=).with(:result, !@success_return)
75
+
76
+ @ssh.expects(:exec!).yields(data, :stderr, "No such device").returns(@success_return)
77
+ mount_folder
78
+ end
79
+
80
+ should "test type of text and test string to detect success" do
81
+ data = mock("data")
82
+ data.expects(:[]=).with(:result, @success_return)
83
+
84
+ @ssh.expects(:exec!).yields(data, :stdout, "Nothing such device").returns(@success_return)
85
+ mount_folder
86
+ end
87
+
88
+ should "raise an ActionException if the command fails constantly" do
89
+ @ssh.expects(:exec!).times(@limit).returns(!@success_return)
90
+
91
+ assert_raises(Vagrant::Systems::Linux::LinuxError) {
92
+ mount_folder
93
+ }
94
+ end
95
+
96
+ should "not raise any exception if the command succeeded" do
97
+ @ssh.expects(:exec!).once.returns(@success_return)
98
+
99
+ assert_nothing_raised {
100
+ mount_folder
101
+ }
102
+ end
103
+ end
104
+ end