vagrant 0.8.10 → 0.9.0

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 (324) hide show
  1. data/CHANGELOG.md +77 -1
  2. data/Gemfile +0 -14
  3. data/LICENSE +1 -1
  4. data/bin/vagrant +47 -20
  5. data/config/default.rb +6 -14
  6. data/lib/vagrant.rb +132 -5
  7. data/lib/vagrant/action.rb +45 -123
  8. data/lib/vagrant/action/box/destroy.rb +7 -3
  9. data/lib/vagrant/action/box/download.rb +8 -8
  10. data/lib/vagrant/action/box/package.rb +2 -2
  11. data/lib/vagrant/action/box/unpackage.rb +13 -7
  12. data/lib/vagrant/action/box/verify.rb +5 -5
  13. data/lib/vagrant/action/builder.rb +23 -19
  14. data/lib/vagrant/action/builtin.rb +117 -79
  15. data/lib/vagrant/action/env/set.rb +7 -4
  16. data/lib/vagrant/action/environment.rb +3 -41
  17. data/lib/vagrant/action/general/package.rb +14 -29
  18. data/lib/vagrant/action/general/validate.rb +2 -2
  19. data/lib/vagrant/action/runner.rb +53 -0
  20. data/lib/vagrant/action/vm/boot.rb +9 -9
  21. data/lib/vagrant/action/vm/check_accessible.rb +2 -2
  22. data/lib/vagrant/action/vm/check_box.rb +10 -12
  23. data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
  24. data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
  25. data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
  26. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
  27. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  28. data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
  29. data/lib/vagrant/action/vm/customize.rb +19 -9
  30. data/lib/vagrant/action/vm/destroy.rb +4 -4
  31. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
  32. data/lib/vagrant/action/vm/discard_state.rb +4 -4
  33. data/lib/vagrant/action/vm/export.rb +13 -8
  34. data/lib/vagrant/action/vm/forward_ports.rb +55 -102
  35. data/lib/vagrant/action/vm/halt.rb +9 -6
  36. data/lib/vagrant/action/vm/host_name.rb +4 -4
  37. data/lib/vagrant/action/vm/import.rb +19 -10
  38. data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
  39. data/lib/vagrant/action/vm/network.rb +300 -94
  40. data/lib/vagrant/action/vm/nfs.rb +41 -26
  41. data/lib/vagrant/action/vm/package.rb +1 -1
  42. data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
  43. data/lib/vagrant/action/vm/provision.rb +42 -13
  44. data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
  45. data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
  46. data/lib/vagrant/action/vm/resume.rb +4 -4
  47. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  48. data/lib/vagrant/action/vm/share_folders.rb +63 -39
  49. data/lib/vagrant/action/vm/suspend.rb +4 -4
  50. data/lib/vagrant/action/warden.rb +13 -6
  51. data/lib/vagrant/box.rb +9 -55
  52. data/lib/vagrant/box_collection.rb +22 -17
  53. data/lib/vagrant/cli.rb +62 -47
  54. data/lib/vagrant/command.rb +18 -20
  55. data/lib/vagrant/command/base.rb +135 -90
  56. data/lib/vagrant/command/box.rb +46 -21
  57. data/lib/vagrant/command/box_add.rb +33 -0
  58. data/lib/vagrant/command/box_list.rb +25 -0
  59. data/lib/vagrant/command/box_remove.rb +23 -0
  60. data/lib/vagrant/command/box_repackage.rb +23 -0
  61. data/lib/vagrant/command/destroy.rb +16 -5
  62. data/lib/vagrant/command/halt.rb +25 -7
  63. data/lib/vagrant/command/init.rb +30 -7
  64. data/lib/vagrant/command/package.rb +49 -18
  65. data/lib/vagrant/command/provision.rb +22 -9
  66. data/lib/vagrant/command/reload.rb +18 -5
  67. data/lib/vagrant/command/resume.rb +18 -5
  68. data/lib/vagrant/command/ssh.rb +69 -31
  69. data/lib/vagrant/command/ssh_config.rb +37 -22
  70. data/lib/vagrant/command/status.rb +22 -20
  71. data/lib/vagrant/command/suspend.rb +18 -5
  72. data/lib/vagrant/command/up.rb +41 -8
  73. data/lib/vagrant/communication.rb +7 -0
  74. data/lib/vagrant/communication/base.rb +56 -0
  75. data/lib/vagrant/communication/ssh.rb +200 -0
  76. data/lib/vagrant/config.rb +29 -103
  77. data/lib/vagrant/config/base.rb +18 -26
  78. data/lib/vagrant/config/container.rb +37 -0
  79. data/lib/vagrant/config/error_recorder.rb +1 -1
  80. data/lib/vagrant/config/loader.rb +125 -0
  81. data/lib/vagrant/config/nfs.rb +1 -3
  82. data/lib/vagrant/config/package.rb +1 -3
  83. data/lib/vagrant/config/ssh.rb +31 -16
  84. data/lib/vagrant/config/top.rb +36 -25
  85. data/lib/vagrant/config/vagrant.rb +2 -5
  86. data/lib/vagrant/config/vm.rb +115 -56
  87. data/lib/vagrant/config/vm/provisioner.rb +16 -20
  88. data/lib/vagrant/config/vm/sub_vm.rb +1 -1
  89. data/lib/vagrant/data_store.rb +23 -15
  90. data/lib/vagrant/downloaders/base.rb +7 -5
  91. data/lib/vagrant/downloaders/file.rb +4 -4
  92. data/lib/vagrant/downloaders/http.rb +4 -5
  93. data/lib/vagrant/driver.rb +7 -0
  94. data/lib/vagrant/driver/virtualbox.rb +121 -0
  95. data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
  96. data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
  97. data/lib/vagrant/driver/virtualbox_base.rb +284 -0
  98. data/lib/vagrant/environment.rb +221 -240
  99. data/lib/vagrant/errors.rb +74 -25
  100. data/lib/vagrant/guest.rb +16 -0
  101. data/lib/vagrant/guest/arch.rb +48 -0
  102. data/lib/vagrant/{systems → guest}/base.rb +30 -18
  103. data/lib/vagrant/guest/debian.rb +61 -0
  104. data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
  105. data/lib/vagrant/guest/gentoo.rb +32 -0
  106. data/lib/vagrant/guest/linux.rb +78 -0
  107. data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
  108. data/lib/vagrant/guest/linux/error.rb +9 -0
  109. data/lib/vagrant/guest/redhat.rb +66 -0
  110. data/lib/vagrant/guest/solaris.rb +114 -0
  111. data/lib/vagrant/{systems → guest}/suse.rb +2 -2
  112. data/lib/vagrant/guest/ubuntu.rb +23 -0
  113. data/lib/vagrant/hosts.rb +23 -6
  114. data/lib/vagrant/hosts/arch.rb +7 -3
  115. data/lib/vagrant/hosts/base.rb +36 -46
  116. data/lib/vagrant/hosts/bsd.rb +53 -16
  117. data/lib/vagrant/hosts/fedora.rb +14 -0
  118. data/lib/vagrant/hosts/freebsd.rb +6 -36
  119. data/lib/vagrant/hosts/linux.rb +45 -20
  120. data/lib/vagrant/hosts/windows.rb +16 -0
  121. data/lib/vagrant/provisioners.rb +10 -7
  122. data/lib/vagrant/provisioners/base.rb +11 -34
  123. data/lib/vagrant/provisioners/chef.rb +30 -26
  124. data/lib/vagrant/provisioners/chef_client.rb +37 -23
  125. data/lib/vagrant/provisioners/chef_solo.rb +61 -16
  126. data/lib/vagrant/provisioners/puppet.rb +70 -38
  127. data/lib/vagrant/provisioners/puppet_server.rb +12 -13
  128. data/lib/vagrant/provisioners/shell.rb +24 -24
  129. data/lib/vagrant/registry.rb +49 -0
  130. data/lib/vagrant/ssh.rb +82 -153
  131. data/lib/vagrant/ui.rb +118 -50
  132. data/lib/vagrant/util/busy.rb +1 -1
  133. data/lib/vagrant/util/file_mode.rb +12 -0
  134. data/lib/vagrant/util/network_ip.rb +28 -0
  135. data/lib/vagrant/util/platform.rb +1 -0
  136. data/lib/vagrant/util/subprocess.rb +227 -0
  137. data/lib/vagrant/version.rb +1 -1
  138. data/lib/vagrant/vm.rb +111 -97
  139. data/tasks/acceptance.rake +3 -3
  140. data/tasks/test.rake +7 -2
  141. data/templates/commands/init/Vagrantfile.erb +11 -4
  142. data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
  143. data/templates/guests/arch/network_dhcp.erb +7 -0
  144. data/templates/guests/arch/network_static.erb +7 -0
  145. data/templates/guests/debian/network_dhcp.erb +6 -0
  146. data/templates/guests/debian/network_static.erb +7 -0
  147. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  148. data/templates/guests/gentoo/network_static.erb +4 -0
  149. data/templates/guests/redhat/network_dhcp.erb +6 -0
  150. data/templates/guests/redhat/network_static.erb +7 -0
  151. data/templates/locales/en.yml +241 -122
  152. data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
  153. data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
  154. data/test/acceptance/base.rb +10 -10
  155. data/test/acceptance/box_test.rb +28 -6
  156. data/test/acceptance/destroy_test.rb +1 -1
  157. data/test/acceptance/halt_test.rb +4 -4
  158. data/test/acceptance/init_test.rb +3 -3
  159. data/test/acceptance/networking/host_only_test.rb +37 -0
  160. data/test/acceptance/networking/port_forward_test.rb +125 -0
  161. data/test/acceptance/package_test.rb +46 -0
  162. data/test/acceptance/provisioning/basic_test.rb +61 -0
  163. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  164. data/test/acceptance/provisioning/shell_test.rb +53 -0
  165. data/test/acceptance/resume_test.rb +1 -1
  166. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  167. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  168. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  169. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  170. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  171. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  172. data/test/acceptance/ssh_test.rb +7 -2
  173. data/test/acceptance/support/config.rb +1 -1
  174. data/test/acceptance/support/isolated_environment.rb +41 -150
  175. data/test/acceptance/support/matchers/match_output.rb +1 -1
  176. data/test/acceptance/support/matchers/succeed.rb +14 -0
  177. data/test/acceptance/support/network_tests.rb +29 -0
  178. data/test/acceptance/support/output.rb +9 -1
  179. data/test/acceptance/support/shared/base_context.rb +16 -9
  180. data/test/acceptance/support/shared/command_examples.rb +4 -4
  181. data/test/acceptance/suspend_test.rb +1 -1
  182. data/test/acceptance/up_basic_test.rb +26 -7
  183. data/test/acceptance/up_with_box_url.rb +1 -1
  184. data/test/acceptance/vagrant_test.rb +1 -1
  185. data/test/acceptance/version_test.rb +0 -5
  186. data/test/support/isolated_environment.rb +46 -0
  187. data/test/{acceptance/support → support}/tempdir.rb +0 -0
  188. data/test/unit/base.rb +21 -0
  189. data/test/unit/support/isolated_environment.rb +39 -0
  190. data/test/unit/support/shared/base_context.rb +30 -0
  191. data/test/unit/vagrant/action/builder_test.rb +126 -177
  192. data/test/unit/vagrant/action/environment_test.rb +10 -21
  193. data/test/unit/vagrant/action/runner_test.rb +65 -0
  194. data/test/unit/vagrant/action/warden_test.rb +64 -97
  195. data/test/unit/vagrant/box_collection_test.rb +44 -33
  196. data/test/unit/vagrant/box_test.rb +25 -65
  197. data/test/unit/vagrant/command/base_test.rb +141 -14
  198. data/test/unit/vagrant/config/base_test.rb +16 -43
  199. data/test/unit/vagrant/config/loader_test.rb +79 -0
  200. data/test/unit/vagrant/config/top_test.rb +69 -0
  201. data/test/unit/vagrant/config/vm_test.rb +62 -47
  202. data/test/unit/vagrant/config_test.rb +16 -151
  203. data/test/unit/vagrant/data_store_test.rb +43 -61
  204. data/test/unit/vagrant/downloaders/base_test.rb +12 -22
  205. data/test/unit/vagrant/downloaders/file_test.rb +58 -31
  206. data/test/unit/vagrant/downloaders/http_test.rb +12 -86
  207. data/test/unit/vagrant/environment_test.rb +107 -536
  208. data/test/unit/vagrant/hosts_test.rb +36 -0
  209. data/test/unit/vagrant/registry_test.rb +56 -0
  210. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  211. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
  212. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  213. data/test/unit/vagrant/util/retryable_test.rb +90 -34
  214. data/test/unit/vagrant_test.rb +27 -0
  215. data/test/{unit → unit_legacy}/locales/en.yml +0 -0
  216. data/test/{unit → unit_legacy}/test_helper.rb +0 -0
  217. data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
  218. data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
  219. data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
  220. data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
  221. data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
  222. data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
  223. data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
  224. data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
  225. data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
  226. data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
  227. data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
  228. data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
  229. data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
  230. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
  231. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
  232. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
  233. data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
  234. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
  235. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
  236. data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
  237. data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
  238. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
  239. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
  240. data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
  241. data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
  242. data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
  243. data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
  244. data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
  245. data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
  246. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
  247. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
  248. data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
  249. data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
  250. data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
  251. data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
  252. data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
  253. data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
  254. data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
  255. data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
  256. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  257. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  258. data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
  259. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  260. data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
  261. data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
  262. data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
  263. data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
  264. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  265. data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
  266. data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
  267. data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
  268. data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
  269. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  270. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  271. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  272. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  273. data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
  274. data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
  275. data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
  276. data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
  277. data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
  278. data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
  279. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
  280. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
  281. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
  282. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
  283. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
  284. data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
  285. data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
  286. data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
  287. data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
  288. data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
  289. data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
  290. data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
  291. data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
  292. data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
  293. data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
  294. data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
  295. data/vagrant.gemspec +7 -9
  296. metadata +214 -216
  297. data/keys/vagrant.ppk +0 -26
  298. data/lib/vagrant/action/box.rb +0 -11
  299. data/lib/vagrant/action/env.rb +0 -7
  300. data/lib/vagrant/action/general.rb +0 -8
  301. data/lib/vagrant/action/vm.rb +0 -34
  302. data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
  303. data/lib/vagrant/action/vm/modify.rb +0 -37
  304. data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
  305. data/lib/vagrant/command/group_base.rb +0 -107
  306. data/lib/vagrant/command/helpers.rb +0 -33
  307. data/lib/vagrant/command/named_base.rb +0 -14
  308. data/lib/vagrant/command/upgrade_to_060.rb +0 -45
  309. data/lib/vagrant/command/version.rb +0 -13
  310. data/lib/vagrant/ssh/session.rb +0 -136
  311. data/lib/vagrant/systems.rb +0 -13
  312. data/lib/vagrant/systems/arch.rb +0 -34
  313. data/lib/vagrant/systems/debian.rb +0 -36
  314. data/lib/vagrant/systems/gentoo.rb +0 -27
  315. data/lib/vagrant/systems/linux.rb +0 -82
  316. data/lib/vagrant/systems/linux/error.rb +0 -9
  317. data/lib/vagrant/systems/redhat.rb +0 -48
  318. data/lib/vagrant/systems/solaris.rb +0 -113
  319. data/lib/vagrant/systems/ubuntu.rb +0 -17
  320. data/templates/network_entry_arch.erb +0 -9
  321. data/templates/network_entry_debian.erb +0 -8
  322. data/templates/network_entry_gentoo.erb +0 -5
  323. data/templates/network_entry_redhat.erb +0 -9
  324. data/test/unit/vagrant/ui_test.rb +0 -29
@@ -0,0 +1,45 @@
1
+ require "test_helper"
2
+
3
+ class BoxCollectionTest < Test::Unit::TestCase
4
+ setup do
5
+ clean_paths
6
+
7
+ @klass = Vagrant::BoxCollection
8
+ end
9
+
10
+ should "load all the boxes from the box path" do
11
+ vagrant_box("foo")
12
+ vagrant_box("bar")
13
+
14
+ result = @klass.new(vagrant_env)
15
+ names = result.collect { |b| b.name }.sort
16
+ assert result.length >= 2
17
+ assert names.include?("foo")
18
+ assert names.include?("bar")
19
+ end
20
+
21
+ should "reload the box list" do
22
+ instance = @klass.new(vagrant_env)
23
+ amount = instance.length
24
+
25
+ vagrant_box("foo")
26
+
27
+ instance.reload!
28
+ assert_equal (amount + 1), instance.length
29
+ end
30
+
31
+ should "find a specific box" do
32
+ vagrant_box("foo")
33
+ vagrant_box("bar")
34
+
35
+ instance = @klass.new(vagrant_env)
36
+ result = instance.find("foo")
37
+ assert result
38
+ assert_equal "foo", result.name
39
+ end
40
+
41
+ should "return nil if it couldn't find a specific box" do
42
+ instance = @klass.new(vagrant_env)
43
+ assert_nil instance.find("thisshouldnotexist")
44
+ end
45
+ end
@@ -0,0 +1,74 @@
1
+ require "test_helper"
2
+
3
+ class BoxTest < Test::Unit::TestCase
4
+ context "class methods" do
5
+ setup do
6
+ @env = vagrant_env
7
+ end
8
+
9
+ context "adding" do
10
+ setup do
11
+ @name = "foo"
12
+ @uri = "bar"
13
+ end
14
+
15
+ should "create a new instance, set the variables, and add it" do
16
+ box = mock("box")
17
+ box.expects(:uri=).with(@uri)
18
+ box.expects(:add).once
19
+ Vagrant::Box.expects(:new).with(@env, @name).returns(box)
20
+ Vagrant::Box.add(@env, @name, @uri)
21
+ end
22
+ end
23
+ end
24
+
25
+ context "instance methods" do
26
+ setup do
27
+ @box = Vagrant::Box.new(vagrant_env, "foo")
28
+ end
29
+
30
+ should "raise an exception if a box exists with the name we're attempting to add" do
31
+ vagrant_box(@box.name)
32
+
33
+ assert_raises(Vagrant::Errors::BoxAlreadyExists) {
34
+ @box.add
35
+ }
36
+ end
37
+
38
+ should "execute the Add action when add is called" do
39
+ @box.env.actions.expects(:run).with(:box_add, { "box" => @box, "validate" => false })
40
+ @box.add
41
+ end
42
+
43
+ context "box directory" do
44
+ should "return the boxes_path joined with the name" do
45
+ assert_equal @box.env.boxes_path.join(@box.name), @box.directory
46
+ end
47
+ end
48
+
49
+ context "destroying" do
50
+ should "execute the destroy action" do
51
+ @box.env.actions.expects(:run).with(:box_remove, { "box" => @box, "validate" => false })
52
+ @box.destroy
53
+ end
54
+ end
55
+
56
+ context "repackaging" do
57
+ should "execute the repackage action" do
58
+ @box.env.actions.expects(:run).with(:box_repackage, { "box" => @box, "validate" => false })
59
+ @box.repackage
60
+ end
61
+
62
+ should "forward given options into the action" do
63
+ @box.env.actions.expects(:run).with(:box_repackage, { "box" => @box, "foo" => "bar", "validate" => false })
64
+ @box.repackage("foo" => "bar")
65
+ end
66
+ end
67
+
68
+ context "ovf file" do
69
+ should "be the directory joined with the config ovf file" do
70
+ assert_equal @box.directory.join(@box.env.config.vm.box_ovf), @box.ovf_file
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,23 @@
1
+ require "test_helper"
2
+
3
+ class CommandBaseTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Command::Base
6
+ @env = vagrant_env
7
+ end
8
+
9
+ context "initialization" do
10
+ should "require an environment" do
11
+ assert_raises(Vagrant::Errors::CLIMissingEnvironment) { @klass.new([], {}, {}) }
12
+ assert_nothing_raised { @klass.new([], {}, { :env => @env }) }
13
+ end
14
+ end
15
+
16
+ context "extracting a name from a usage string" do
17
+ should "extract properly" do
18
+ assert_equal "init", @klass.extract_name_from_usage("init")
19
+ assert_equal "init", @klass.extract_name_from_usage("init [foo] [bar]")
20
+ assert_equal "ssh-config", @klass.extract_name_from_usage("ssh-config")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,52 @@
1
+ require "test_helper"
2
+
3
+ class ConfigBaseTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Config::Base
6
+ end
7
+
8
+ context "class methods" do
9
+ should "enable configuration with proper accessor" do
10
+ klass = Class.new(@klass)
11
+ acc = :foo
12
+ Vagrant::Config::Top.expects(:configures).with(acc, klass)
13
+ klass.configures(acc)
14
+ end
15
+ end
16
+
17
+ context "instance methods" do
18
+ setup do
19
+ @base = @klass.new
20
+ end
21
+
22
+ should "return a hash of instance variables" do
23
+ data = { "foo" => "bar", "bar" => "baz" }
24
+
25
+ data.each do |iv, value|
26
+ @base.instance_variable_set("@#{iv}".to_sym, value)
27
+ end
28
+
29
+ result = @base.instance_variables_hash
30
+ assert_equal data.length, result.length
31
+
32
+ data.each do |iv, value|
33
+ assert_equal value, result[iv]
34
+ end
35
+ end
36
+
37
+ context "converting to JSON" do
38
+ should "include magic `json_class`" do
39
+ @iv_hash = { "foo" => "bar" }
40
+ @base.expects(:instance_variables_hash).returns(@iv_hash)
41
+ @json = { 'json_class' => @base.class.name }.merge(@iv_hash).to_json
42
+ assert_equal @json, @base.to_json
43
+ end
44
+
45
+ should "not include top in the JSON hash" do
46
+ @base.top = "FOO"
47
+ hash = @base.instance_variables_hash
48
+ assert !hash.has_key?(:top)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,47 @@
1
+ require "test_helper"
2
+
3
+ class ConfigVMTest < Test::Unit::TestCase
4
+ setup do
5
+ @username = "mitchellh"
6
+
7
+ @env = vagrant_env
8
+ @config = @env.config.vm
9
+ @env.config.ssh.username = @username
10
+ end
11
+
12
+ context "defining VMs" do
13
+ should "store the proc by name but not run it" do
14
+ foo = mock("proc")
15
+ foo.expects(:call).never
16
+
17
+ proc = Proc.new { foo.call }
18
+ @config.define(:name, &proc)
19
+ assert @config.defined_vms[:name].proc_stack.include?(proc)
20
+ end
21
+
22
+ should "store the options" do
23
+ @config.define(:name, :set => true)
24
+ assert @config.defined_vms[:name].options[:set]
25
+ end
26
+
27
+ should "retain vm definition order" do
28
+ @config.define(:a) {}
29
+ @config.define(:b) {}
30
+ @config.define(:c) {}
31
+
32
+ assert_equal [:a, :b, :c], @config.defined_vm_keys
33
+ end
34
+ end
35
+
36
+ context "customizing" do
37
+ should "include the stacked proc runner module" do
38
+ assert @config.class.included_modules.include?(Vagrant::Util::StackedProcRunner)
39
+ end
40
+
41
+ should "add the customize proc to the proc stack" do
42
+ proc = Proc.new {}
43
+ @config.customize(&proc)
44
+ assert @config.proc_stack.include?(proc)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,148 @@
1
+ require "test_helper"
2
+
3
+ class ConfigTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Config
6
+ end
7
+
8
+ context "with an instance" do
9
+ setup do
10
+ @instance = @klass.new
11
+ end
12
+
13
+ should "load the config files in the given order" do
14
+ names = %w{alpha beta gamma}
15
+
16
+ @instance.load_order = [:alpha, :beta]
17
+
18
+ names.each do |name|
19
+ vagrantfile(vagrant_box(name), "config.vm.box = '#{name}'")
20
+ @instance.set(name.to_sym, vagrant_box(name).join("Vagrantfile"))
21
+ end
22
+
23
+ config = @instance.load(nil)
24
+ assert_equal "beta", config.vm.box
25
+ end
26
+
27
+ should "load the config as procs" do
28
+ @instance.set(:proc, Proc.new { |config| config.vm.box = "proc" })
29
+ @instance.load_order = [:proc]
30
+ config = @instance.load(nil)
31
+
32
+ assert_equal "proc", config.vm.box
33
+ end
34
+
35
+ should "load an array of procs" do
36
+ @instance.set(:proc, [Proc.new { |config| config.vm.box = "proc" },
37
+ Proc.new { |config| config.vm.box = "proc2" }])
38
+ @instance.load_order = [:proc]
39
+ config = @instance.load(nil)
40
+
41
+ assert_equal "proc2", config.vm.box
42
+ end
43
+
44
+ should "not care if a file doesn't exist" do
45
+ @instance.load_order = [:foo]
46
+ assert_nothing_raised { @instance.set(:foo, "i/dont/exist") }
47
+ assert_nothing_raised { @instance.load(nil) }
48
+ end
49
+
50
+ should "not reload a file" do
51
+ foo_path = vagrant_box("foo").join("Vagrantfile")
52
+
53
+ vagrantfile(vagrant_box("foo"))
54
+ @instance.set(:foo, foo_path)
55
+
56
+ # Nothing should be raised in this case because the file isn't reloaded
57
+ vagrantfile(vagrant_box("foo"), "^%&8318")
58
+ assert_nothing_raised { @instance.set(:foo, foo_path) }
59
+ end
60
+
61
+ should "raise an exception if there is a syntax error in a file" do
62
+ vagrantfile(vagrant_box("foo"), "^%&8318")
63
+
64
+ assert_raises(Vagrant::Errors::VagrantfileSyntaxError) {
65
+ @instance.set(:foo, vagrant_box("foo").join("Vagrantfile"))
66
+ }
67
+ end
68
+ end
69
+
70
+ context "top config class" do
71
+ setup do
72
+ @configures_list = {}
73
+ @klass::Top.stubs(:configures_list).returns(@configures_list)
74
+ end
75
+
76
+ context "adding configure keys" do
77
+ setup do
78
+ @key = "top_config_foo"
79
+ @config_klass = mock("klass")
80
+ end
81
+
82
+ should "add key and klass to configures list" do
83
+ @klass::Top.configures(@key, @config_klass)
84
+ assert_equal @config_klass, @configures_list[@key]
85
+ end
86
+ end
87
+
88
+ context "configuration keys on instance" do
89
+ setup do
90
+ @configures_list.clear
91
+ end
92
+
93
+ should "initialize each configurer and set it to its key" do
94
+ env = mock('env')
95
+
96
+ 5.times do |i|
97
+ key = "key#{i}"
98
+ klass = mock("klass#{i}")
99
+ instance = mock("instance#{i}")
100
+ instance.expects(:top=).with() do |top|
101
+ assert top.is_a?(@klass::Top)
102
+ true
103
+ end
104
+ klass.expects(:new).returns(instance)
105
+ @configures_list[key] = klass
106
+ end
107
+
108
+ @klass::Top.new(env)
109
+ end
110
+
111
+ should "allow reading via methods" do
112
+ key = "my_foo_bar_key"
113
+ klass = mock("klass")
114
+ instance = mock("instance")
115
+ instance.stubs(:top=)
116
+ klass.expects(:new).returns(instance)
117
+ @klass::Top.configures(key, klass)
118
+
119
+ config = @klass::Top.new
120
+ assert_equal instance, config.send(key)
121
+ end
122
+ end
123
+
124
+ context "validation" do
125
+ should "do nothing if no errors are added" do
126
+ valid_class = Class.new(@klass::Base)
127
+ @klass::Top.configures(:subconfig, valid_class)
128
+ instance = @klass::Top.new
129
+ assert_nothing_raised { instance.validate! }
130
+ end
131
+
132
+ should "raise an exception if there are errors" do
133
+ invalid_class = Class.new(@klass::Base) do
134
+ def validate(errors)
135
+ errors.add("vagrant.test.errors.test_key")
136
+ end
137
+ end
138
+
139
+ @klass::Top.configures(:subconfig, invalid_class)
140
+ instance = @klass::Top.new
141
+
142
+ assert_raises(Vagrant::Errors::ConfigValidationFailed) {
143
+ instance.validate!
144
+ }
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,93 @@
1
+ require "test_helper"
2
+
3
+ class HttpDownloaderTest < Test::Unit::TestCase
4
+ setup do
5
+ @downloader, @tempfile = vagrant_mock_downloader(Vagrant::Downloaders::HTTP)
6
+ @downloader.stubs(:report_progress)
7
+ @downloader.stubs(:complete_progress)
8
+ @uri = "http://google.com/"
9
+ @headers = nil
10
+ end
11
+
12
+ context "downloading" do
13
+ setup do
14
+ ENV["http_proxy"] = nil
15
+
16
+ @parsed_uri = URI.parse(@uri)
17
+ @http = Net::HTTP.new(@parsed_uri.host, @parsed_uri.port)
18
+ Net::HTTP.stubs(:new).returns(@http)
19
+ @http.stubs(:start)
20
+ end
21
+
22
+ should "create a proper net/http object" do
23
+ Net::HTTP.expects(:new).with(@parsed_uri.host, @parsed_uri.port, nil, nil, nil, nil).once.returns(@http)
24
+ @http.expects(:start)
25
+ @downloader.download!(@uri, @tempfile)
26
+ end
27
+
28
+ should "create a proper net/http object with a proxy" do
29
+ ENV["http_proxy"] = "http://user:foo@google.com"
30
+ @proxy = URI.parse(ENV["http_proxy"])
31
+ Net::HTTP.expects(:new).with(@parsed_uri.host, @parsed_uri.port, @proxy.host, @proxy.port, @proxy.user, @proxy.password).once.returns(@http)
32
+ @http.expects(:start)
33
+ @downloader.download!(@uri, @tempfile)
34
+ end
35
+
36
+ should "create a proper net/http object without a proxy if no_proxy defined" do
37
+ @uri = "http://somewhere.direct.com/some_file"
38
+ @parsed_uri = URI.parse(@uri)
39
+ ENV["http_proxy"] = "http://user:foo@google.com"
40
+ ENV["no_proxy"] = "direct.com"
41
+ Net::HTTP.expects(:new).with(@parsed_uri.host, @parsed_uri.port, nil, nil, nil, nil).once.returns(@http)
42
+ @http.expects(:start)
43
+ @downloader.download!(@uri, @tempfile)
44
+ end
45
+
46
+ should "enable SSL if scheme is https" do
47
+ @uri = "https://google.com/"
48
+ @http.expects(:use_ssl=).with(true).once
49
+ @downloader.download!(@uri, @tempfile)
50
+ end
51
+
52
+ should "read the body of the response and place each segment into the file" do
53
+ h = mock("http")
54
+ response = mock("response")
55
+ response.stubs(:content_length)
56
+ response.stubs(:is_a?).with(anything).returns(false)
57
+ response.stubs(:is_a?).with(Net::HTTPOK).returns(true)
58
+ segment = mock("segment")
59
+ segment.stubs(:length).returns(7)
60
+
61
+ @http.stubs(:start).yields(h)
62
+ h.expects(:request_get).with(@parsed_uri.request_uri, @headers).once.yields(response)
63
+ response.expects(:read_body).once.yields(segment)
64
+ @tempfile.expects(:write).with(segment).once
65
+
66
+ @downloader.download!(@uri, @tempfile)
67
+ end
68
+
69
+ should "error environment if invalid URL given" do
70
+ Net::HTTP.expects(:new).raises(SocketError.new)
71
+
72
+ assert_raises(Vagrant::Errors::DownloaderHTTPSocketError) {
73
+ @downloader.download!(@uri, @tempfile)
74
+ }
75
+ end
76
+ end
77
+
78
+ context "matching the uri" do
79
+ should "use extract to verify that the string is in fact a uri" do
80
+ URI.expects(:extract).returns(['foo'])
81
+ assert Vagrant::Downloaders::HTTP.match?('foo')
82
+ end
83
+
84
+ should "return false if there are no extract results" do
85
+ URI.expects(:extract).returns([])
86
+ assert !Vagrant::Downloaders::HTTP.match?('foo')
87
+ end
88
+ end
89
+
90
+ context "reporting progress" do
91
+ # TODO: Testing for this, probably
92
+ end
93
+ end