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,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,56 @@
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 ite" 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 enumerable" do
33
+ instance.register("foo", "foovalue")
34
+ instance.register("bar", "barvalue")
35
+
36
+ keys = []
37
+ values = []
38
+ instance.each do |key, value|
39
+ keys << key
40
+ values << value
41
+ end
42
+
43
+ keys.sort.should == ["bar", "foo"]
44
+ values.sort.should == ["barvalue", "foovalue"]
45
+ end
46
+
47
+ it "should be able to convert to a hash" do
48
+ instance.register("foo", "foovalue")
49
+ instance.register("bar", "barvalue")
50
+
51
+ result = instance.to_hash
52
+ result.should be_a(Hash)
53
+ result["foo"].should == "foovalue"
54
+ result["bar"].should == "barvalue"
55
+ end
56
+ end
@@ -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
@@ -1,39 +1,38 @@
1
- require "test_helper"
1
+ require File.expand_path("../../../base", __FILE__)
2
2
 
3
- class HashWithIndifferentAccessUtilTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Util::HashWithIndifferentAccess
6
- @instance = @klass.new
7
- end
3
+ require "vagrant/util/hash_with_indifferent_access"
4
+
5
+ describe Vagrant::Util::HashWithIndifferentAccess do
6
+ let(:instance) { described_class.new }
8
7
 
9
- should "be a hash" do
10
- assert @instance.is_a?(Hash)
8
+ it "is a Hash" do
9
+ instance.should be_kind_of(Hash)
11
10
  end
12
11
 
13
- should "allow indifferent access when setting with a string" do
14
- @instance["foo"] = "bar"
15
- assert_equal "bar", @instance[:foo]
12
+ it "allows indifferent access when setting with a string" do
13
+ instance["foo"] = "bar"
14
+ instance[:foo].should == "bar"
16
15
  end
17
16
 
18
- should "allow indifferent access when setting with a symbol" do
19
- @instance[:foo] = "bar"
20
- assert_equal "bar", @instance["foo"]
17
+ it "allows indifferent access when setting with a symbol" do
18
+ instance[:foo] = "bar"
19
+ instance["foo"].should == "bar"
21
20
  end
22
21
 
23
- should "allow indifferent key lookup" do
24
- @instance["foo"] = "bar"
25
- assert @instance.key?(:foo)
26
- assert @instance.has_key?(:foo)
27
- assert @instance.include?(:foo)
28
- assert @instance.member?(:foo)
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
29
28
  end
30
29
 
31
- should "forward up block to Hash if given to initializer" do
32
- instance = @klass.new do |h,k|
30
+ it "allows for defaults to be passed in via an initializer block" do
31
+ instance = described_class.new do |h,k|
33
32
  h[k] = "foo"
34
33
  end
35
34
 
36
- assert_equal "foo", instance[:foo]
37
- assert_equal "foo", instance["foo"]
35
+ instance[:foo].should == "foo"
36
+ instance["bar"].should == "foo"
38
37
  end
39
38
  end
@@ -0,0 +1,17 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/util/network_ip"
4
+
5
+ describe Vagrant::Util::NetworkIP do
6
+ let(:klass) do
7
+ Class.new do
8
+ extend Vagrant::Util::NetworkIP
9
+ end
10
+ end
11
+
12
+ describe "network address" do
13
+ it "calculates it properly" do
14
+ klass.network_address("192.168.2.234", "255.255.255.0").should == "192.168.2.0"
15
+ end
16
+ end
17
+ end
@@ -1,50 +1,106 @@
1
- require "test_helper"
1
+ require File.expand_path("../../../base", __FILE__)
2
2
 
3
- class RetryableUtilTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Class.new do
3
+ require "vagrant/util/retryable"
4
+
5
+ describe Vagrant::Util::Retryable do
6
+ let(:klass) do
7
+ Class.new do
6
8
  extend Vagrant::Util::Retryable
7
9
  end
8
10
  end
9
11
 
10
- should "retry specified number of times if exception is raised" do
11
- proc = mock("proc")
12
- proc.expects(:call).twice
12
+ it "doesn't retry by default" do
13
+ tries = 0
14
+
15
+ block = lambda do
16
+ tries += 1
17
+ raise RuntimeError, "Try"
18
+ end
19
+
20
+ # It should re-raise the error
21
+ expect { klass.retryable(&block) }.
22
+ to raise_error(RuntimeError)
13
23
 
14
- assert_raises(RuntimeError) {
15
- @klass.retryable(:tries => 2, :on => RuntimeError) do
16
- proc.call
17
- raise "An error"
18
- end
19
- }
24
+ # It should've tried once
25
+ tries.should == 1
20
26
  end
21
27
 
22
- should "only retry on specified exception" do
23
- proc = mock("proc")
24
- proc.expects(:call).once
28
+ it "retries the set number of times" do
29
+ tries = 0
30
+
31
+ block = lambda do
32
+ tries += 1
33
+ raise RuntimeError, "Try"
34
+ end
35
+
36
+ # It should re-raise the error
37
+ expect { klass.retryable(:tries => 5, &block) }.
38
+ to raise_error(RuntimeError)
25
39
 
26
- assert_raises(StandardError) {
27
- @klass.retryable(:tries => 5, :on => RuntimeError) do
28
- proc.call
29
- raise StandardError.new
30
- end
31
- }
40
+ # It should've tried all specified times
41
+ tries.should == 5
32
42
  end
33
43
 
34
- should "retry on multiple exceptions given" do
35
- proc = mock("proc")
36
- proc.expects(:call).twice
44
+ it "only retries on the given exception" do
45
+ tries = 0
37
46
 
38
- assert_raises(StandardError) {
39
- @klass.retryable(:tries => 2, :on => [StandardError, RuntimeError]) do
40
- proc.call
41
- raise StandardError
42
- end
43
- }
47
+ block = lambda do
48
+ tries += 1
49
+ raise StandardError, "Try"
50
+ end
51
+
52
+ # It should re-raise the error
53
+ expect { klass.retryable(:tries => 5, :on => RuntimeError, &block) }.
54
+ to raise_error(StandardError)
55
+
56
+ # It should've never tried since it was a different kind of error
57
+ tries.should == 1
44
58
  end
45
59
 
46
- should "return the value of the block" do
47
- result = @klass.retryable { 7 }
48
- assert_equal 7, result
60
+ it "can retry on multiple types of errors" do
61
+ tries = 0
62
+
63
+ foo_error = Class.new(StandardError)
64
+ bar_error = Class.new(StandardError)
65
+
66
+ block = lambda do
67
+ tries += 1
68
+ raise foo_error, "Try" if tries == 1
69
+ raise bar_error, "Try" if tries == 2
70
+ raise RuntimeError, "YAY"
71
+ end
72
+
73
+ # It should re-raise the error
74
+ expect { klass.retryable(:tries => 5, :on => [foo_error, bar_error], &block) }.
75
+ to raise_error(RuntimeError)
76
+
77
+ # It should've never tried since it was a different kind of error
78
+ tries.should == 3
79
+ end
80
+
81
+ it "doesn't sleep between tries by default" do
82
+ block = lambda do
83
+ raise RuntimeError, "Try"
84
+ end
85
+
86
+ # Sleep should never be called
87
+ klass.should_not_receive(:sleep)
88
+
89
+ # Run it.
90
+ expect { klass.retryable(:tries => 5, &block) }.
91
+ to raise_error(RuntimeError)
92
+ end
93
+
94
+ it "sleeps specified amount between retries" do
95
+ block = lambda do
96
+ raise RuntimeError, "Try"
97
+ end
98
+
99
+ # Sleep should be called between each retry
100
+ klass.should_receive(:sleep).with(10).exactly(4).times
101
+
102
+ # Run it.
103
+ expect { klass.retryable(:tries => 5, :sleep => 10, &block) }.
104
+ to raise_error(RuntimeError)
49
105
  end
50
106
  end
@@ -0,0 +1,27 @@
1
+ require File.expand_path("../base", __FILE__)
2
+
3
+ describe Vagrant do
4
+ it "has the path to the source root" do
5
+ described_class.source_root.should == Pathname.new(File.expand_path("../../../", __FILE__))
6
+ end
7
+
8
+ it "has a registry for commands" do
9
+ described_class.commands.should be_a(Vagrant::Registry)
10
+ end
11
+
12
+ it "has a registry for config keys" do
13
+ described_class.config_keys.should be_a(Vagrant::Registry)
14
+ end
15
+
16
+ it "has a registry for hosts" do
17
+ described_class.hosts.should be_a(Vagrant::Registry)
18
+ end
19
+
20
+ it "has a registry for guests" do
21
+ described_class.guests.should be_a(Vagrant::Registry)
22
+ end
23
+
24
+ it "has a registry for provisioners" do
25
+ described_class.provisioners.should be_a(Vagrant::Registry)
26
+ end
27
+ end