vagrantup 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 (325) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +77 -1
  3. data/Gemfile +0 -14
  4. data/LICENSE +1 -1
  5. data/bin/vagrant +47 -20
  6. data/config/default.rb +6 -14
  7. data/lib/vagrant/action/box/destroy.rb +7 -3
  8. data/lib/vagrant/action/box/download.rb +8 -8
  9. data/lib/vagrant/action/box/package.rb +2 -2
  10. data/lib/vagrant/action/box/unpackage.rb +13 -7
  11. data/lib/vagrant/action/box/verify.rb +5 -5
  12. data/lib/vagrant/action/builder.rb +23 -19
  13. data/lib/vagrant/action/builtin.rb +117 -79
  14. data/lib/vagrant/action/env/set.rb +7 -4
  15. data/lib/vagrant/action/environment.rb +3 -41
  16. data/lib/vagrant/action/general/package.rb +14 -29
  17. data/lib/vagrant/action/general/validate.rb +2 -2
  18. data/lib/vagrant/action/runner.rb +53 -0
  19. data/lib/vagrant/action/vm/boot.rb +9 -9
  20. data/lib/vagrant/action/vm/check_accessible.rb +2 -2
  21. data/lib/vagrant/action/vm/check_box.rb +10 -12
  22. data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
  23. data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
  24. data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
  25. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
  26. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  27. data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
  28. data/lib/vagrant/action/vm/customize.rb +19 -9
  29. data/lib/vagrant/action/vm/destroy.rb +4 -4
  30. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
  31. data/lib/vagrant/action/vm/discard_state.rb +4 -4
  32. data/lib/vagrant/action/vm/export.rb +13 -8
  33. data/lib/vagrant/action/vm/forward_ports.rb +55 -102
  34. data/lib/vagrant/action/vm/halt.rb +9 -6
  35. data/lib/vagrant/action/vm/host_name.rb +4 -4
  36. data/lib/vagrant/action/vm/import.rb +19 -10
  37. data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
  38. data/lib/vagrant/action/vm/network.rb +300 -94
  39. data/lib/vagrant/action/vm/nfs.rb +41 -26
  40. data/lib/vagrant/action/vm/package.rb +1 -1
  41. data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
  42. data/lib/vagrant/action/vm/provision.rb +42 -13
  43. data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
  44. data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
  45. data/lib/vagrant/action/vm/resume.rb +4 -4
  46. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  47. data/lib/vagrant/action/vm/share_folders.rb +63 -39
  48. data/lib/vagrant/action/vm/suspend.rb +4 -4
  49. data/lib/vagrant/action/warden.rb +13 -6
  50. data/lib/vagrant/action.rb +45 -123
  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/base.rb +135 -90
  55. data/lib/vagrant/command/box.rb +46 -21
  56. data/lib/vagrant/command/box_add.rb +33 -0
  57. data/lib/vagrant/command/box_list.rb +25 -0
  58. data/lib/vagrant/command/box_remove.rb +23 -0
  59. data/lib/vagrant/command/box_repackage.rb +23 -0
  60. data/lib/vagrant/command/destroy.rb +16 -5
  61. data/lib/vagrant/command/halt.rb +25 -7
  62. data/lib/vagrant/command/init.rb +30 -7
  63. data/lib/vagrant/command/package.rb +49 -18
  64. data/lib/vagrant/command/provision.rb +22 -9
  65. data/lib/vagrant/command/reload.rb +18 -5
  66. data/lib/vagrant/command/resume.rb +18 -5
  67. data/lib/vagrant/command/ssh.rb +69 -31
  68. data/lib/vagrant/command/ssh_config.rb +37 -22
  69. data/lib/vagrant/command/status.rb +22 -20
  70. data/lib/vagrant/command/suspend.rb +18 -5
  71. data/lib/vagrant/command/up.rb +41 -8
  72. data/lib/vagrant/command.rb +18 -20
  73. data/lib/vagrant/communication/base.rb +56 -0
  74. data/lib/vagrant/communication/ssh.rb +200 -0
  75. data/lib/vagrant/communication.rb +7 -0
  76. data/lib/vagrant/config/base.rb +18 -26
  77. data/lib/vagrant/config/container.rb +37 -0
  78. data/lib/vagrant/config/error_recorder.rb +1 -1
  79. data/lib/vagrant/config/loader.rb +125 -0
  80. data/lib/vagrant/config/nfs.rb +1 -3
  81. data/lib/vagrant/config/package.rb +1 -3
  82. data/lib/vagrant/config/ssh.rb +31 -16
  83. data/lib/vagrant/config/top.rb +36 -25
  84. data/lib/vagrant/config/vagrant.rb +2 -5
  85. data/lib/vagrant/config/vm/provisioner.rb +16 -20
  86. data/lib/vagrant/config/vm/sub_vm.rb +1 -1
  87. data/lib/vagrant/config/vm.rb +115 -56
  88. data/lib/vagrant/config.rb +29 -103
  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/virtualbox.rb +121 -0
  94. data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
  95. data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
  96. data/lib/vagrant/driver/virtualbox_base.rb +284 -0
  97. data/lib/vagrant/driver.rb +7 -0
  98. data/lib/vagrant/environment.rb +221 -240
  99. data/lib/vagrant/errors.rb +74 -25
  100. data/lib/vagrant/guest/arch.rb +48 -0
  101. data/lib/vagrant/{systems → guest}/base.rb +30 -18
  102. data/lib/vagrant/guest/debian.rb +61 -0
  103. data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
  104. data/lib/vagrant/guest/gentoo.rb +32 -0
  105. data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
  106. data/lib/vagrant/guest/linux/error.rb +9 -0
  107. data/lib/vagrant/guest/linux.rb +78 -0
  108. data/lib/vagrant/guest/redhat.rb +66 -0
  109. data/lib/vagrant/guest/solaris.rb +114 -0
  110. data/lib/vagrant/{systems → guest}/suse.rb +2 -2
  111. data/lib/vagrant/guest/ubuntu.rb +23 -0
  112. data/lib/vagrant/guest.rb +16 -0
  113. data/lib/vagrant/hosts/arch.rb +7 -3
  114. data/lib/vagrant/hosts/base.rb +36 -46
  115. data/lib/vagrant/hosts/bsd.rb +53 -16
  116. data/lib/vagrant/hosts/fedora.rb +14 -0
  117. data/lib/vagrant/hosts/freebsd.rb +6 -36
  118. data/lib/vagrant/hosts/linux.rb +45 -20
  119. data/lib/vagrant/hosts/windows.rb +16 -0
  120. data/lib/vagrant/hosts.rb +23 -6
  121. data/lib/vagrant/provisioners/base.rb +11 -34
  122. data/lib/vagrant/provisioners/chef.rb +30 -26
  123. data/lib/vagrant/provisioners/chef_client.rb +37 -23
  124. data/lib/vagrant/provisioners/chef_solo.rb +61 -16
  125. data/lib/vagrant/provisioners/puppet.rb +70 -38
  126. data/lib/vagrant/provisioners/puppet_server.rb +12 -13
  127. data/lib/vagrant/provisioners/shell.rb +24 -24
  128. data/lib/vagrant/provisioners.rb +10 -7
  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/lib/vagrant.rb +132 -5
  140. data/tasks/acceptance.rake +3 -3
  141. data/tasks/test.rake +7 -2
  142. data/templates/commands/init/Vagrantfile.erb +11 -4
  143. data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
  144. data/templates/guests/arch/network_dhcp.erb +7 -0
  145. data/templates/guests/arch/network_static.erb +7 -0
  146. data/templates/guests/debian/network_dhcp.erb +6 -0
  147. data/templates/guests/debian/network_static.erb +7 -0
  148. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  149. data/templates/guests/gentoo/network_static.erb +4 -0
  150. data/templates/guests/redhat/network_dhcp.erb +6 -0
  151. data/templates/guests/redhat/network_static.erb +7 -0
  152. data/templates/locales/en.yml +241 -122
  153. data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
  154. data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
  155. data/test/acceptance/base.rb +10 -10
  156. data/test/acceptance/box_test.rb +28 -6
  157. data/test/acceptance/destroy_test.rb +1 -1
  158. data/test/acceptance/halt_test.rb +4 -4
  159. data/test/acceptance/init_test.rb +3 -3
  160. data/test/acceptance/networking/host_only_test.rb +37 -0
  161. data/test/acceptance/networking/port_forward_test.rb +125 -0
  162. data/test/acceptance/package_test.rb +46 -0
  163. data/test/acceptance/provisioning/basic_test.rb +61 -0
  164. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  165. data/test/acceptance/provisioning/shell_test.rb +53 -0
  166. data/test/acceptance/resume_test.rb +1 -1
  167. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  168. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  169. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  170. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  171. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  172. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  173. data/test/acceptance/ssh_test.rb +7 -2
  174. data/test/acceptance/support/config.rb +1 -1
  175. data/test/acceptance/support/isolated_environment.rb +41 -150
  176. data/test/acceptance/support/matchers/match_output.rb +1 -1
  177. data/test/acceptance/support/matchers/succeed.rb +14 -0
  178. data/test/acceptance/support/network_tests.rb +29 -0
  179. data/test/acceptance/support/output.rb +9 -1
  180. data/test/acceptance/support/shared/base_context.rb +16 -9
  181. data/test/acceptance/support/shared/command_examples.rb +4 -4
  182. data/test/acceptance/suspend_test.rb +1 -1
  183. data/test/acceptance/up_basic_test.rb +26 -7
  184. data/test/acceptance/up_with_box_url.rb +1 -1
  185. data/test/acceptance/vagrant_test.rb +1 -1
  186. data/test/acceptance/version_test.rb +0 -5
  187. data/test/support/isolated_environment.rb +46 -0
  188. data/test/{acceptance/support → support}/tempdir.rb +0 -0
  189. data/test/unit/base.rb +21 -0
  190. data/test/unit/support/isolated_environment.rb +39 -0
  191. data/test/unit/support/shared/base_context.rb +30 -0
  192. data/test/unit/vagrant/action/builder_test.rb +126 -177
  193. data/test/unit/vagrant/action/environment_test.rb +10 -21
  194. data/test/unit/vagrant/action/runner_test.rb +65 -0
  195. data/test/unit/vagrant/action/warden_test.rb +64 -97
  196. data/test/unit/vagrant/box_collection_test.rb +44 -33
  197. data/test/unit/vagrant/box_test.rb +25 -65
  198. data/test/unit/vagrant/command/base_test.rb +141 -14
  199. data/test/unit/vagrant/config/base_test.rb +16 -43
  200. data/test/unit/vagrant/config/loader_test.rb +79 -0
  201. data/test/unit/vagrant/config/top_test.rb +69 -0
  202. data/test/unit/vagrant/config/vm_test.rb +62 -47
  203. data/test/unit/vagrant/config_test.rb +16 -151
  204. data/test/unit/vagrant/data_store_test.rb +43 -61
  205. data/test/unit/vagrant/downloaders/base_test.rb +12 -22
  206. data/test/unit/vagrant/downloaders/file_test.rb +58 -31
  207. data/test/unit/vagrant/downloaders/http_test.rb +12 -86
  208. data/test/unit/vagrant/environment_test.rb +107 -536
  209. data/test/unit/vagrant/hosts_test.rb +36 -0
  210. data/test/unit/vagrant/registry_test.rb +56 -0
  211. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  212. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
  213. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  214. data/test/unit/vagrant/util/retryable_test.rb +90 -34
  215. data/test/unit/vagrant_test.rb +27 -0
  216. data/test/{unit → unit_legacy}/locales/en.yml +0 -0
  217. data/test/{unit → unit_legacy}/test_helper.rb +0 -0
  218. data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
  219. data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
  220. data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
  221. data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
  222. data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
  223. data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
  224. data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
  225. data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
  226. data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
  227. data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
  228. data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
  229. data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
  230. data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
  231. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
  232. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
  233. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
  234. data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
  235. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
  236. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
  237. data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
  238. data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
  239. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
  240. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
  241. data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
  242. data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
  243. data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
  244. data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
  245. data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
  246. data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
  247. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
  248. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
  249. data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
  250. data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
  251. data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
  252. data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
  253. data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
  254. data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
  255. data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
  256. data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
  257. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  258. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  259. data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
  260. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  261. data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
  262. data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
  263. data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
  264. data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
  265. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  266. data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
  267. data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
  268. data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
  269. data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
  270. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  271. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  272. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  273. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  274. data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
  275. data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
  276. data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
  277. data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
  278. data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
  279. data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
  280. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
  281. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
  282. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
  283. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
  284. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
  285. data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
  286. data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
  287. data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
  288. data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
  289. data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
  290. data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
  291. data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
  292. data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
  293. data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
  294. data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
  295. data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
  296. data/vagrant.gemspec +7 -9
  297. metadata +183 -179
  298. data/keys/vagrant.ppk +0 -26
  299. data/lib/vagrant/action/box.rb +0 -11
  300. data/lib/vagrant/action/env.rb +0 -7
  301. data/lib/vagrant/action/general.rb +0 -8
  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/action/vm.rb +0 -34
  306. data/lib/vagrant/command/group_base.rb +0 -107
  307. data/lib/vagrant/command/helpers.rb +0 -33
  308. data/lib/vagrant/command/named_base.rb +0 -14
  309. data/lib/vagrant/command/upgrade_to_060.rb +0 -45
  310. data/lib/vagrant/command/version.rb +0 -13
  311. data/lib/vagrant/ssh/session.rb +0 -136
  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/error.rb +0 -9
  316. data/lib/vagrant/systems/linux.rb +0 -82
  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/lib/vagrant/systems.rb +0 -13
  321. data/templates/network_entry_arch.erb +0 -9
  322. data/templates/network_entry_debian.erb +0 -8
  323. data/templates/network_entry_gentoo.erb +0 -5
  324. data/templates/network_entry_redhat.erb +0 -9
  325. 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
File without changes
File without changes
File without changes
@@ -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
File without changes
@@ -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