rvagrant 0.8.7.dev
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.
- data/.gitignore +25 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +386 -0
- data/Gemfile +21 -0
- data/LICENSE +21 -0
- data/README.md +61 -0
- data/Rakefile +11 -0
- data/bin/vagrant +28 -0
- data/config/default.rb +38 -0
- data/contrib/README.md +12 -0
- data/contrib/emacs/vagrant.el +8 -0
- data/contrib/vim/vagrantfile.vim +9 -0
- data/keys/README.md +17 -0
- data/keys/vagrant +27 -0
- data/keys/vagrant.ppk +26 -0
- data/keys/vagrant.pub +1 -0
- data/lib/vagrant.rb +44 -0
- data/lib/vagrant/action.rb +138 -0
- data/lib/vagrant/action/box.rb +11 -0
- data/lib/vagrant/action/box/destroy.rb +21 -0
- data/lib/vagrant/action/box/download.rb +72 -0
- data/lib/vagrant/action/box/package.rb +19 -0
- data/lib/vagrant/action/box/unpackage.rb +55 -0
- data/lib/vagrant/action/box/verify.rb +23 -0
- data/lib/vagrant/action/builder.rb +124 -0
- data/lib/vagrant/action/builtin.rb +108 -0
- data/lib/vagrant/action/env.rb +7 -0
- data/lib/vagrant/action/env/set.rb +18 -0
- data/lib/vagrant/action/environment.rb +50 -0
- data/lib/vagrant/action/general.rb +8 -0
- data/lib/vagrant/action/general/package.rb +113 -0
- data/lib/vagrant/action/general/validate.rb +19 -0
- data/lib/vagrant/action/vm.rb +34 -0
- data/lib/vagrant/action/vm/boot.rb +48 -0
- data/lib/vagrant/action/vm/check_accessible.rb +23 -0
- data/lib/vagrant/action/vm/check_box.rb +28 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +35 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +26 -0
- data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +27 -0
- data/lib/vagrant/action/vm/customize.rb +26 -0
- data/lib/vagrant/action/vm/destroy.rb +19 -0
- data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +30 -0
- data/lib/vagrant/action/vm/discard_state.rb +22 -0
- data/lib/vagrant/action/vm/export.rb +52 -0
- data/lib/vagrant/action/vm/forward_ports.rb +133 -0
- data/lib/vagrant/action/vm/forward_ports_helpers.rb +28 -0
- data/lib/vagrant/action/vm/halt.rb +29 -0
- data/lib/vagrant/action/vm/host_name.rb +21 -0
- data/lib/vagrant/action/vm/import.rb +40 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +26 -0
- data/lib/vagrant/action/vm/modify.rb +37 -0
- data/lib/vagrant/action/vm/network.rb +146 -0
- data/lib/vagrant/action/vm/nfs.rb +160 -0
- data/lib/vagrant/action/vm/nfs_helpers.rb +11 -0
- data/lib/vagrant/action/vm/package.rb +23 -0
- data/lib/vagrant/action/vm/package_vagrantfile.rb +33 -0
- data/lib/vagrant/action/vm/provision.rb +34 -0
- data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/share_folders.rb +78 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +85 -0
- data/lib/vagrant/box.rb +90 -0
- data/lib/vagrant/box_collection.rb +53 -0
- data/lib/vagrant/cli.rb +55 -0
- data/lib/vagrant/command.rb +25 -0
- data/lib/vagrant/command/base.rb +106 -0
- data/lib/vagrant/command/box.rb +33 -0
- data/lib/vagrant/command/destroy.rb +17 -0
- data/lib/vagrant/command/group_base.rb +107 -0
- data/lib/vagrant/command/halt.rb +18 -0
- data/lib/vagrant/command/helpers.rb +33 -0
- data/lib/vagrant/command/init.rb +14 -0
- data/lib/vagrant/command/named_base.rb +14 -0
- data/lib/vagrant/command/package.rb +41 -0
- data/lib/vagrant/command/provision.rb +23 -0
- data/lib/vagrant/command/reload.rb +17 -0
- data/lib/vagrant/command/resume.rb +17 -0
- data/lib/vagrant/command/ssh.rb +49 -0
- data/lib/vagrant/command/ssh_config.rb +29 -0
- data/lib/vagrant/command/status.rb +31 -0
- data/lib/vagrant/command/suspend.rb +17 -0
- data/lib/vagrant/command/up.rb +19 -0
- data/lib/vagrant/command/upgrade_to_060.rb +45 -0
- data/lib/vagrant/command/version.rb +13 -0
- data/lib/vagrant/config.rb +123 -0
- data/lib/vagrant/config/base.rb +85 -0
- data/lib/vagrant/config/error_recorder.rb +19 -0
- data/lib/vagrant/config/nfs.rb +10 -0
- data/lib/vagrant/config/package.rb +9 -0
- data/lib/vagrant/config/ssh.rb +38 -0
- data/lib/vagrant/config/top.rb +61 -0
- data/lib/vagrant/config/vagrant.rb +17 -0
- data/lib/vagrant/config/vm.rb +148 -0
- data/lib/vagrant/config/vm/provisioner.rb +56 -0
- data/lib/vagrant/config/vm/sub_vm.rb +17 -0
- data/lib/vagrant/data_store.rb +70 -0
- data/lib/vagrant/downloaders.rb +7 -0
- data/lib/vagrant/downloaders/base.rb +23 -0
- data/lib/vagrant/downloaders/file.rb +22 -0
- data/lib/vagrant/downloaders/http.rb +70 -0
- data/lib/vagrant/environment.rb +516 -0
- data/lib/vagrant/errors.rb +352 -0
- data/lib/vagrant/hosts.rb +9 -0
- data/lib/vagrant/hosts/arch.rb +27 -0
- data/lib/vagrant/hosts/base.rb +76 -0
- data/lib/vagrant/hosts/bsd.rb +58 -0
- data/lib/vagrant/hosts/fedora.rb +11 -0
- data/lib/vagrant/hosts/linux.rb +69 -0
- data/lib/vagrant/plugin.rb +79 -0
- data/lib/vagrant/provisioners.rb +9 -0
- data/lib/vagrant/provisioners/base.rb +67 -0
- data/lib/vagrant/provisioners/chef.rb +155 -0
- data/lib/vagrant/provisioners/chef_client.rb +120 -0
- data/lib/vagrant/provisioners/chef_solo.rb +135 -0
- data/lib/vagrant/provisioners/puppet.rb +137 -0
- data/lib/vagrant/provisioners/puppet_server.rb +55 -0
- data/lib/vagrant/provisioners/shell.rb +96 -0
- data/lib/vagrant/ssh.rb +224 -0
- data/lib/vagrant/ssh/session.rb +136 -0
- data/lib/vagrant/systems.rb +13 -0
- data/lib/vagrant/systems/arch.rb +34 -0
- data/lib/vagrant/systems/base.rb +87 -0
- data/lib/vagrant/systems/debian.rb +36 -0
- data/lib/vagrant/systems/freebsd.rb +84 -0
- data/lib/vagrant/systems/gentoo.rb +27 -0
- data/lib/vagrant/systems/linux.rb +82 -0
- data/lib/vagrant/systems/linux/config.rb +21 -0
- data/lib/vagrant/systems/linux/error.rb +9 -0
- data/lib/vagrant/systems/redhat.rb +48 -0
- data/lib/vagrant/systems/solaris.rb +67 -0
- data/lib/vagrant/systems/suse.rb +9 -0
- data/lib/vagrant/systems/ubuntu.rb +17 -0
- data/lib/vagrant/test_helpers.rb +128 -0
- data/lib/vagrant/ui.rb +81 -0
- data/lib/vagrant/util.rb +13 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/counter.rb +24 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/platform.rb +57 -0
- data/lib/vagrant/util/retryable.rb +25 -0
- data/lib/vagrant/util/safe_exec.rb +35 -0
- data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
- data/lib/vagrant/util/template_renderer.rb +83 -0
- data/lib/vagrant/version.rb +6 -0
- data/lib/vagrant/vm.rb +181 -0
- data/templates/chef_server_client.erb +32 -0
- data/templates/chef_solo_solo.erb +23 -0
- data/templates/commands/init/Vagrantfile.erb +86 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/locales/en.yml +556 -0
- data/templates/network_entry_arch.erb +9 -0
- data/templates/network_entry_debian.erb +8 -0
- data/templates/network_entry_gentoo.erb +5 -0
- data/templates/network_entry_redhat.erb +9 -0
- data/templates/nfs/exports.erb +5 -0
- data/templates/nfs/exports_linux.erb +5 -0
- data/templates/package_Vagrantfile.erb +11 -0
- data/templates/ssh_config.erb +15 -0
- data/test/unit/locales/en.yml +8 -0
- data/test/unit/test_helper.rb +28 -0
- data/test/unit/vagrant/action/box/destroy_test.rb +18 -0
- data/test/unit/vagrant/action/box/download_test.rb +125 -0
- data/test/unit/vagrant/action/box/package_test.rb +25 -0
- data/test/unit/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/unit/vagrant/action/box/verify_test.rb +30 -0
- data/test/unit/vagrant/action/builder_test.rb +207 -0
- data/test/unit/vagrant/action/env/set_test.rb +24 -0
- data/test/unit/vagrant/action/environment_test.rb +27 -0
- data/test/unit/vagrant/action/general/package_test.rb +268 -0
- data/test/unit/vagrant/action/general/validate_test.rb +31 -0
- data/test/unit/vagrant/action/vm/boot_test.rb +66 -0
- data/test/unit/vagrant/action/vm/check_accessible_test.rb +61 -0
- data/test/unit/vagrant/action/vm/check_box_test.rb +56 -0
- data/test/unit/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/unit/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/unit/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
- data/test/unit/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/unit/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
- data/test/unit/vagrant/action/vm/customize_test.rb +37 -0
- data/test/unit/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/unit/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/unit/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/unit/vagrant/action/vm/export_test.rb +107 -0
- data/test/unit/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
- data/test/unit/vagrant/action/vm/forward_ports_test.rb +213 -0
- data/test/unit/vagrant/action/vm/halt_test.rb +79 -0
- data/test/unit/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/unit/vagrant/action/vm/import_test.rb +66 -0
- data/test/unit/vagrant/action/vm/match_mac_address_test.rb +40 -0
- data/test/unit/vagrant/action/vm/modify_test.rb +38 -0
- data/test/unit/vagrant/action/vm/network_test.rb +286 -0
- data/test/unit/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/unit/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/unit/vagrant/action/vm/package_test.rb +25 -0
- data/test/unit/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/unit/vagrant/action/vm/provision_test.rb +65 -0
- data/test/unit/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
- data/test/unit/vagrant/action/vm/resume_test.rb +35 -0
- data/test/unit/vagrant/action/vm/share_folders_test.rb +144 -0
- data/test/unit/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/unit/vagrant/action/warden_test.rb +125 -0
- data/test/unit/vagrant/action_test.rb +89 -0
- data/test/unit/vagrant/box_collection_test.rb +45 -0
- data/test/unit/vagrant/box_test.rb +74 -0
- data/test/unit/vagrant/cli_test.rb +35 -0
- data/test/unit/vagrant/command/base_test.rb +23 -0
- data/test/unit/vagrant/command/group_base_test.rb +15 -0
- data/test/unit/vagrant/command/helpers_test.rb +88 -0
- data/test/unit/vagrant/command/package_test.rb +27 -0
- data/test/unit/vagrant/config/base_test.rb +52 -0
- data/test/unit/vagrant/config/error_recorder_test.rb +18 -0
- data/test/unit/vagrant/config/ssh_test.rb +12 -0
- data/test/unit/vagrant/config/vagrant_test.rb +35 -0
- data/test/unit/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/unit/vagrant/config/vm_test.rb +56 -0
- data/test/unit/vagrant/config_test.rb +162 -0
- data/test/unit/vagrant/data_store_test.rb +77 -0
- data/test/unit/vagrant/downloaders/base_test.rb +28 -0
- data/test/unit/vagrant/downloaders/file_test.rb +48 -0
- data/test/unit/vagrant/downloaders/http_test.rb +82 -0
- data/test/unit/vagrant/environment_test.rb +598 -0
- data/test/unit/vagrant/errors_test.rb +42 -0
- data/test/unit/vagrant/hosts/base_test.rb +46 -0
- data/test/unit/vagrant/hosts/bsd_test.rb +53 -0
- data/test/unit/vagrant/hosts/linux_test.rb +54 -0
- data/test/unit/vagrant/plugin_test.rb +9 -0
- data/test/unit/vagrant/provisioners/base_test.rb +63 -0
- data/test/unit/vagrant/provisioners/chef_client_test.rb +190 -0
- data/test/unit/vagrant/provisioners/chef_solo_test.rb +114 -0
- data/test/unit/vagrant/provisioners/chef_test.rb +202 -0
- data/test/unit/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/unit/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/unit/vagrant/provisioners/shell_test.rb +79 -0
- data/test/unit/vagrant/ssh/session_test.rb +40 -0
- data/test/unit/vagrant/ssh_test.rb +307 -0
- data/test/unit/vagrant/systems/base_test.rb +18 -0
- data/test/unit/vagrant/systems/linux_test.rb +104 -0
- data/test/unit/vagrant/ui_test.rb +29 -0
- data/test/unit/vagrant/util/busy_test.rb +106 -0
- data/test/unit/vagrant/util/counter_test.rb +29 -0
- data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
- data/test/unit/vagrant/util/platform_test.rb +18 -0
- data/test/unit/vagrant/util/retryable_test.rb +50 -0
- data/test/unit/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/unit/vagrant/util/template_renderer_test.rb +145 -0
- data/test/unit/vagrant/vm_test.rb +300 -0
- data/vagrant.gemspec +35 -0
- metadata +431 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ShellUITest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::UI::Shell
|
|
6
|
+
@shell = mock("shell")
|
|
7
|
+
@instance = @klass.new(vagrant_env, @shell)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "prefixing with resource" do
|
|
11
|
+
should "prefix message with environment resource" do
|
|
12
|
+
@shell.expects(:say).with() do |message, color|
|
|
13
|
+
assert message =~ /\[#{@instance.env.resource}\]/
|
|
14
|
+
true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
@instance.info("vagrant.errors.test_key")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
should "not prefix the message if given false" do
|
|
21
|
+
@shell.expects(:say).with() do |message, color|
|
|
22
|
+
assert message !~ /\[#{@instance.env.resource}\]/
|
|
23
|
+
true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
@instance.info("vagrant.errors.test_key", :prefix => false)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class BusyUtilTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Util::Busy
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "registering" do
|
|
9
|
+
setup do
|
|
10
|
+
@callback = lambda { puts "FOO" }
|
|
11
|
+
Signal.stubs(:trap)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
teardown do
|
|
15
|
+
@klass.registered.clear
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "trap the signal on the first registration" do
|
|
19
|
+
Signal.expects(:trap).with("INT").once
|
|
20
|
+
@klass.register(@callback)
|
|
21
|
+
@klass.register(lambda { puts "BAR" })
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
should "not register the same callback multiple times" do
|
|
25
|
+
@klass.register(@callback)
|
|
26
|
+
@klass.register(@callback)
|
|
27
|
+
@klass.register(@callback)
|
|
28
|
+
assert_equal 1, @klass.registered.length
|
|
29
|
+
assert_equal @callback, @klass.registered.first
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "unregistering" do
|
|
34
|
+
setup do
|
|
35
|
+
Signal.stubs(:trap)
|
|
36
|
+
|
|
37
|
+
@callback = lambda { puts "FOO" }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
teardown do
|
|
41
|
+
@klass.registered.clear
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
should "remove the callback and set the trap to DEFAULT when removing final" do
|
|
45
|
+
@klass.register(@callback)
|
|
46
|
+
Signal.expects(:trap).with("INT", "DEFAULT").once
|
|
47
|
+
@klass.unregister(@callback)
|
|
48
|
+
assert @klass.registered.empty?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
should "not reset signal trap if not final callback" do
|
|
52
|
+
@klass.register(@callback)
|
|
53
|
+
@klass.register(lambda { puts "BAR" })
|
|
54
|
+
Signal.expects(:trap).never
|
|
55
|
+
@klass.unregister(@callback)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "marking for busy" do
|
|
60
|
+
setup do
|
|
61
|
+
@callback = lambda { "foo" }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
should "register, call the block, then unregister" do
|
|
65
|
+
waiter = mock("waiting")
|
|
66
|
+
proc = lambda { waiter.ping! }
|
|
67
|
+
|
|
68
|
+
seq = sequence('seq')
|
|
69
|
+
@klass.expects(:register).with(@callback).in_sequence(seq)
|
|
70
|
+
waiter.expects(:ping!).in_sequence(seq)
|
|
71
|
+
@klass.expects(:unregister).with(@callback).in_sequence(seq)
|
|
72
|
+
|
|
73
|
+
@klass.busy(@callback, &proc)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
should "unregister callback even if block raises exception" do
|
|
77
|
+
waiter = mock("waiting")
|
|
78
|
+
proc = lambda { waiter.ping! }
|
|
79
|
+
|
|
80
|
+
seq = sequence('seq')
|
|
81
|
+
@klass.expects(:register).with(@callback).in_sequence(seq)
|
|
82
|
+
waiter.expects(:ping!).raises(Exception.new("uh oh!")).in_sequence(seq)
|
|
83
|
+
@klass.expects(:unregister).with(@callback).in_sequence(seq)
|
|
84
|
+
|
|
85
|
+
assert_raises(Exception) { @klass.busy(@callback, &proc) }
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
context "firing callbacks" do
|
|
90
|
+
setup do
|
|
91
|
+
Signal.stubs(:trap)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
teardown do
|
|
95
|
+
@klass.registered.clear
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
should "just call the registered callbacks" do
|
|
99
|
+
waiting = mock("waiting")
|
|
100
|
+
waiting.expects(:ping!).once
|
|
101
|
+
|
|
102
|
+
@klass.register(lambda { waiting.ping! })
|
|
103
|
+
@klass.fire_callbacks
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class CounterUtilTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Class.new do
|
|
6
|
+
extend Vagrant::Util::Counter
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "basic counter" do
|
|
11
|
+
should "get and update the counter" do
|
|
12
|
+
assert_equal 1, @klass.get_and_update_counter
|
|
13
|
+
assert_equal 2, @klass.get_and_update_counter
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
context "multiple classes with a counter" do
|
|
18
|
+
setup do
|
|
19
|
+
@klass2 = Class.new do
|
|
20
|
+
extend Vagrant::Util::Counter
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
should "not affect other classes" do
|
|
25
|
+
assert_equal 1, @klass.get_and_update_counter
|
|
26
|
+
assert_equal 1, @klass2.get_and_update_counter
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class HashWithIndifferentAccessUtilTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Util::HashWithIndifferentAccess
|
|
6
|
+
@instance = @klass.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
should "be a hash" do
|
|
10
|
+
assert @instance.is_a?(Hash)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "allow indifferent access when setting with a string" do
|
|
14
|
+
@instance["foo"] = "bar"
|
|
15
|
+
assert_equal "bar", @instance[:foo]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "allow indifferent access when setting with a symbol" do
|
|
19
|
+
@instance[:foo] = "bar"
|
|
20
|
+
assert_equal "bar", @instance["foo"]
|
|
21
|
+
end
|
|
22
|
+
|
|
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)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
should "forward up block to Hash if given to initializer" do
|
|
32
|
+
instance = @klass.new do |h,k|
|
|
33
|
+
h[k] = "foo"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
assert_equal "foo", instance[:foo]
|
|
37
|
+
assert_equal "foo", instance["foo"]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class PlatformTest < Test::Unit::TestCase
|
|
4
|
+
context "file options" do
|
|
5
|
+
should "include add binary bit to options on windows platform" do
|
|
6
|
+
# This constant is not defined on non-windows platforms, so define it here
|
|
7
|
+
File::BINARY = 4096 unless defined?(File::BINARY)
|
|
8
|
+
|
|
9
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(true)
|
|
10
|
+
assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY|File::BINARY
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "not include binary bit on other platforms" do
|
|
14
|
+
Vagrant::Util::Platform.stubs(:windows?).returns(false)
|
|
15
|
+
assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class RetryableUtilTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Class.new do
|
|
6
|
+
extend Vagrant::Util::Retryable
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
should "retry specified number of times if exception is raised" do
|
|
11
|
+
proc = mock("proc")
|
|
12
|
+
proc.expects(:call).twice
|
|
13
|
+
|
|
14
|
+
assert_raises(RuntimeError) {
|
|
15
|
+
@klass.retryable(:tries => 2, :on => RuntimeError) do
|
|
16
|
+
proc.call
|
|
17
|
+
raise "An error"
|
|
18
|
+
end
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "only retry on specified exception" do
|
|
23
|
+
proc = mock("proc")
|
|
24
|
+
proc.expects(:call).once
|
|
25
|
+
|
|
26
|
+
assert_raises(StandardError) {
|
|
27
|
+
@klass.retryable(:tries => 5, :on => RuntimeError) do
|
|
28
|
+
proc.call
|
|
29
|
+
raise StandardError.new
|
|
30
|
+
end
|
|
31
|
+
}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "retry on multiple exceptions given" do
|
|
35
|
+
proc = mock("proc")
|
|
36
|
+
proc.expects(:call).twice
|
|
37
|
+
|
|
38
|
+
assert_raises(StandardError) {
|
|
39
|
+
@klass.retryable(:tries => 2, :on => [StandardError, RuntimeError]) do
|
|
40
|
+
proc.call
|
|
41
|
+
raise StandardError
|
|
42
|
+
end
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
should "return the value of the block" do
|
|
47
|
+
result = @klass.retryable { 7 }
|
|
48
|
+
assert_equal 7, result
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class StackedProcRunnerUtilTest < Test::Unit::TestCase
|
|
4
|
+
class TestClass
|
|
5
|
+
include Vagrant::Util::StackedProcRunner
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
setup do
|
|
9
|
+
@instance = TestClass.new
|
|
10
|
+
@instance.proc_stack.clear
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
should "not run the procs right away" do
|
|
14
|
+
obj = mock("obj")
|
|
15
|
+
obj.expects(:foo).never
|
|
16
|
+
@instance.push_proc { |config| obj.foo }
|
|
17
|
+
@instance.push_proc { |config| obj.foo }
|
|
18
|
+
@instance.push_proc { |config| obj.foo }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
should "run the blocks when run_procs! is ran" do
|
|
22
|
+
obj = mock("obj")
|
|
23
|
+
obj.expects(:foo).times(2)
|
|
24
|
+
@instance.push_proc { obj.foo }
|
|
25
|
+
@instance.push_proc { obj.foo }
|
|
26
|
+
@instance.run_procs!
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should "run the blocks with the same arguments" do
|
|
30
|
+
passed_config = mock("config")
|
|
31
|
+
@instance.push_proc { |config| assert passed_config.equal?(config) }
|
|
32
|
+
@instance.push_proc { |config| assert passed_config.equal?(config) }
|
|
33
|
+
@instance.run_procs!(passed_config)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
should "not clear the blocks after running" do
|
|
37
|
+
obj = mock("obj")
|
|
38
|
+
obj.expects(:foo).times(2)
|
|
39
|
+
@instance.push_proc { obj.foo }
|
|
40
|
+
@instance.run_procs!
|
|
41
|
+
@instance.run_procs!
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TemplateRendererUtilTest < Test::Unit::TestCase
|
|
4
|
+
context "initializing" do
|
|
5
|
+
should "set the template to the given argument" do
|
|
6
|
+
r = Vagrant::Util::TemplateRenderer.new("foo")
|
|
7
|
+
assert_equal "foo", r.template
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
should "set any additional variables" do
|
|
11
|
+
r = Vagrant::Util::TemplateRenderer.new("foo", {:bar => :baz})
|
|
12
|
+
assert_equal :baz, r.bar
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
context "rendering" do
|
|
17
|
+
setup do
|
|
18
|
+
@template = "foo"
|
|
19
|
+
@r = Vagrant::Util::TemplateRenderer.new(@template)
|
|
20
|
+
@r.stubs(:full_template_path).returns(@template + "!")
|
|
21
|
+
|
|
22
|
+
@contents = "bar"
|
|
23
|
+
|
|
24
|
+
@file = mock("file")
|
|
25
|
+
@file.stubs(:read).returns(@contents)
|
|
26
|
+
File.stubs(:open).yields(@file)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should "open the template file for reading" do
|
|
30
|
+
File.expects(:open).with(@r.full_template_path, 'r').once
|
|
31
|
+
@r.render
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
should "set the template to the file contents, render, then set it back" do
|
|
35
|
+
result = "bar"
|
|
36
|
+
|
|
37
|
+
template_seq = sequence("template_seq")
|
|
38
|
+
@r.expects(:template=).with(@file.read).in_sequence(template_seq)
|
|
39
|
+
@r.expects(:render_string).returns(result).in_sequence(template_seq)
|
|
40
|
+
@r.expects(:template=).with(@template).in_sequence(template_seq)
|
|
41
|
+
assert_equal result, @r.render
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
should "render the ERB file in the context of the renderer" do
|
|
45
|
+
result = "bar"
|
|
46
|
+
template = "<%= foo %>"
|
|
47
|
+
@r.foo = result
|
|
48
|
+
@file.expects(:read).returns(template)
|
|
49
|
+
assert_equal result, @r.render
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
context "rendering as string" do
|
|
54
|
+
setup do
|
|
55
|
+
@result = "foo"
|
|
56
|
+
@erb = mock("erb")
|
|
57
|
+
@erb.stubs(:result).returns(@result)
|
|
58
|
+
|
|
59
|
+
@r = Vagrant::Util::TemplateRenderer.new("foo")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
should "simply render the template as a string" do
|
|
63
|
+
Erubis::Eruby.expects(:new).with(@r.template, :trim => true).returns(@erb)
|
|
64
|
+
@erb.expects(:result).returns(@result)
|
|
65
|
+
assert_equal @result, @r.render_string
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
context "the full template path" do
|
|
70
|
+
setup do
|
|
71
|
+
@template = "foo"
|
|
72
|
+
@r = Vagrant::Util::TemplateRenderer.new(@template)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
should "be the ERB file in the templates directory" do
|
|
76
|
+
result = Vagrant.source_root.join("templates", "#{@template}.erb")
|
|
77
|
+
assert_equal result.to_s, @r.full_template_path
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
should "remove duplicate path separators" do
|
|
81
|
+
@r.template = "foo///bar"
|
|
82
|
+
result = Vagrant.source_root.join("templates", "foo", "bar.erb")
|
|
83
|
+
assert_equal result.to_s, @r.full_template_path
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context "class methods" do
|
|
88
|
+
context "render_with method" do
|
|
89
|
+
setup do
|
|
90
|
+
@template = "foo"
|
|
91
|
+
@r = Vagrant::Util::TemplateRenderer.new(@template)
|
|
92
|
+
@r.stubs(:render)
|
|
93
|
+
|
|
94
|
+
@method = :rawr
|
|
95
|
+
|
|
96
|
+
Vagrant::Util::TemplateRenderer.stubs(:new).with(@template, {}).returns(@r)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
should "use the second argument as the template" do
|
|
100
|
+
Vagrant::Util::TemplateRenderer.expects(:new).with(@template, {}).returns(@r)
|
|
101
|
+
Vagrant::Util::TemplateRenderer.render_with(@method, @template)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
should "send in additional argument to the renderer" do
|
|
105
|
+
data = {:hey => :foo}
|
|
106
|
+
Vagrant::Util::TemplateRenderer.expects(:new).with(@template, data).returns(@r)
|
|
107
|
+
Vagrant::Util::TemplateRenderer.render_with(@method, @template, data)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
should "yield a block if given with the renderer as the argument" do
|
|
111
|
+
@r.expects(:yielded=).with(true).once
|
|
112
|
+
Vagrant::Util::TemplateRenderer.render_with(@method, @template) do |r|
|
|
113
|
+
r.yielded = true
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
should "render the result using the given method" do
|
|
118
|
+
result = mock('result')
|
|
119
|
+
@r.expects(@method).returns(result)
|
|
120
|
+
assert_equal result, Vagrant::Util::TemplateRenderer.render_with(@method, @template)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
should "convert the given method to a sym prior to calling" do
|
|
124
|
+
@r.expects(@method.to_sym).returns(nil)
|
|
125
|
+
Vagrant::Util::TemplateRenderer.render_with(@method.to_s, @template)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "render method" do
|
|
130
|
+
should "call render_with the render! method" do
|
|
131
|
+
args = ["foo", "bar", "baz"]
|
|
132
|
+
Vagrant::Util::TemplateRenderer.expects(:render_with).with(:render, *args)
|
|
133
|
+
Vagrant::Util::TemplateRenderer.render(*args)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
context "render_string method" do
|
|
138
|
+
should "call render_with the render! method" do
|
|
139
|
+
args = ["foo", "bar", "baz"]
|
|
140
|
+
Vagrant::Util::TemplateRenderer.expects(:render_with).with(:render_string, *args)
|
|
141
|
+
Vagrant::Util::TemplateRenderer.render_string(*args)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|