fixed-vagrant 0.7.4.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 +15 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +272 -0
- data/Gemfile +21 -0
- data/LICENSE +21 -0
- data/README.md +75 -0
- data/Rakefile +22 -0
- data/bin/vagrant +22 -0
- data/config/default.rb +39 -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 +42 -0
- data/lib/vagrant/action.rb +134 -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 +104 -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 +109 -0
- data/lib/vagrant/action/general/validate.rb +19 -0
- data/lib/vagrant/action/vm.rb +31 -0
- data/lib/vagrant/action/vm/boot.rb +48 -0
- data/lib/vagrant/action/vm/check_box.rb +28 -0
- data/lib/vagrant/action/vm/check_guest_additions.rb +30 -0
- data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
- data/lib/vagrant/action/vm/clear_forwarded_ports.rb +39 -0
- data/lib/vagrant/action/vm/clear_nfs_exports.rb +20 -0
- data/lib/vagrant/action/vm/clear_shared_folders.rb +32 -0
- data/lib/vagrant/action/vm/customize.rb +21 -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 +134 -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 +35 -0
- data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
- data/lib/vagrant/action/vm/network.rb +139 -0
- data/lib/vagrant/action/vm/nfs.rb +159 -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 +41 -0
- data/lib/vagrant/action/vm/resume.rb +20 -0
- data/lib/vagrant/action/vm/share_folders.rb +70 -0
- data/lib/vagrant/action/vm/suspend.rb +20 -0
- data/lib/vagrant/action/warden.rb +79 -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 +17 -0
- data/lib/vagrant/command/reload.rb +17 -0
- data/lib/vagrant/command/resume.rb +17 -0
- data/lib/vagrant/command/ssh.rb +42 -0
- data/lib/vagrant/command/ssh_config.rb +26 -0
- data/lib/vagrant/command/status.rb +22 -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 +33 -0
- data/lib/vagrant/config/top.rb +61 -0
- data/lib/vagrant/config/vagrant.rb +16 -0
- data/lib/vagrant/config/vm.rb +137 -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 +64 -0
- data/lib/vagrant/environment.rb +392 -0
- data/lib/vagrant/errors.rb +332 -0
- data/lib/vagrant/hosts.rb +8 -0
- data/lib/vagrant/hosts/arch.rb +27 -0
- data/lib/vagrant/hosts/base.rb +78 -0
- data/lib/vagrant/hosts/bsd.rb +52 -0
- data/lib/vagrant/hosts/linux.rb +47 -0
- data/lib/vagrant/plugin.rb +57 -0
- data/lib/vagrant/provisioners.rb +9 -0
- data/lib/vagrant/provisioners/base.rb +63 -0
- data/lib/vagrant/provisioners/chef.rb +130 -0
- data/lib/vagrant/provisioners/chef_server.rb +103 -0
- data/lib/vagrant/provisioners/chef_solo.rb +142 -0
- data/lib/vagrant/provisioners/puppet.rb +137 -0
- data/lib/vagrant/provisioners/puppet_server.rb +55 -0
- data/lib/vagrant/provisioners/shell.rb +52 -0
- data/lib/vagrant/ssh.rb +173 -0
- data/lib/vagrant/ssh/session.rb +125 -0
- data/lib/vagrant/systems.rb +11 -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 +83 -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 +39 -0
- data/lib/vagrant/systems/solaris.rb +62 -0
- data/lib/vagrant/systems/ubuntu.rb +17 -0
- data/lib/vagrant/test_helpers.rb +128 -0
- data/lib/vagrant/ui.rb +69 -0
- data/lib/vagrant/util.rb +13 -0
- data/lib/vagrant/util/busy.rb +59 -0
- data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
- data/lib/vagrant/util/plain_logger.rb +25 -0
- data/lib/vagrant/util/platform.rb +65 -0
- data/lib/vagrant/util/resource_logger.rb +63 -0
- data/lib/vagrant/util/retryable.rb +25 -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 +177 -0
- data/templates/chef_server_client.erb +18 -0
- data/templates/chef_solo_solo.erb +19 -0
- data/templates/commands/init/Vagrantfile.erb +82 -0
- data/templates/config/validation_failed.erb +7 -0
- data/templates/locales/en.yml +535 -0
- data/templates/network_entry_debian.erb +8 -0
- data/templates/network_entry_gentoo.erb +5 -0
- data/templates/network_entry_redhat.erb +8 -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 +9 -0
- data/test/locales/en.yml +8 -0
- data/test/test_helper.rb +26 -0
- data/test/vagrant/action/box/destroy_test.rb +18 -0
- data/test/vagrant/action/box/download_test.rb +125 -0
- data/test/vagrant/action/box/package_test.rb +25 -0
- data/test/vagrant/action/box/unpackage_test.rb +84 -0
- data/test/vagrant/action/box/verify_test.rb +30 -0
- data/test/vagrant/action/builder_test.rb +203 -0
- data/test/vagrant/action/env/set_test.rb +24 -0
- data/test/vagrant/action/environment_test.rb +27 -0
- data/test/vagrant/action/general/package_test.rb +268 -0
- data/test/vagrant/action/general/validate_test.rb +31 -0
- data/test/vagrant/action/vm/boot_test.rb +66 -0
- data/test/vagrant/action/vm/check_box_test.rb +56 -0
- data/test/vagrant/action/vm/check_guest_additions_test.rb +9 -0
- data/test/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
- data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +72 -0
- data/test/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
- data/test/vagrant/action/vm/clear_shared_folders_test.rb +49 -0
- data/test/vagrant/action/vm/customize_test.rb +30 -0
- data/test/vagrant/action/vm/destroy_test.rb +25 -0
- data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
- data/test/vagrant/action/vm/discard_state_test.rb +45 -0
- data/test/vagrant/action/vm/export_test.rb +107 -0
- data/test/vagrant/action/vm/forward_ports_helpers_test.rb +70 -0
- data/test/vagrant/action/vm/forward_ports_test.rb +194 -0
- data/test/vagrant/action/vm/halt_test.rb +79 -0
- data/test/vagrant/action/vm/host_name_test.rb +36 -0
- data/test/vagrant/action/vm/import_test.rb +66 -0
- data/test/vagrant/action/vm/match_mac_address_test.rb +36 -0
- data/test/vagrant/action/vm/network_test.rb +286 -0
- data/test/vagrant/action/vm/nfs_helpers_test.rb +26 -0
- data/test/vagrant/action/vm/nfs_test.rb +260 -0
- data/test/vagrant/action/vm/package_test.rb +25 -0
- data/test/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
- data/test/vagrant/action/vm/provision_test.rb +90 -0
- data/test/vagrant/action/vm/resume_test.rb +35 -0
- data/test/vagrant/action/vm/share_folders_test.rb +139 -0
- data/test/vagrant/action/vm/suspend_test.rb +35 -0
- data/test/vagrant/action/warden_test.rb +119 -0
- data/test/vagrant/action_test.rb +89 -0
- data/test/vagrant/box_collection_test.rb +45 -0
- data/test/vagrant/box_test.rb +74 -0
- data/test/vagrant/cli_test.rb +35 -0
- data/test/vagrant/command/base_test.rb +23 -0
- data/test/vagrant/command/group_base_test.rb +15 -0
- data/test/vagrant/command/helpers_test.rb +88 -0
- data/test/vagrant/command/package_test.rb +27 -0
- data/test/vagrant/config/base_test.rb +52 -0
- data/test/vagrant/config/error_recorder_test.rb +18 -0
- data/test/vagrant/config/ssh_test.rb +12 -0
- data/test/vagrant/config/vagrant_test.rb +35 -0
- data/test/vagrant/config/vm/provisioner_test.rb +92 -0
- data/test/vagrant/config/vm_test.rb +86 -0
- data/test/vagrant/config_test.rb +162 -0
- data/test/vagrant/data_store_test.rb +77 -0
- data/test/vagrant/downloaders/base_test.rb +28 -0
- data/test/vagrant/downloaders/file_test.rb +48 -0
- data/test/vagrant/downloaders/http_test.rb +80 -0
- data/test/vagrant/environment_test.rb +508 -0
- data/test/vagrant/errors_test.rb +42 -0
- data/test/vagrant/hosts/base_test.rb +46 -0
- data/test/vagrant/hosts/bsd_test.rb +53 -0
- data/test/vagrant/hosts/linux_test.rb +54 -0
- data/test/vagrant/plugin_test.rb +9 -0
- data/test/vagrant/provisioners/base_test.rb +63 -0
- data/test/vagrant/provisioners/chef_server_test.rb +188 -0
- data/test/vagrant/provisioners/chef_solo_test.rb +219 -0
- data/test/vagrant/provisioners/chef_test.rb +179 -0
- data/test/vagrant/provisioners/puppet_server_test.rb +68 -0
- data/test/vagrant/provisioners/puppet_test.rb +182 -0
- data/test/vagrant/provisioners/shell_test.rb +68 -0
- data/test/vagrant/ssh/session_test.rb +40 -0
- data/test/vagrant/ssh_test.rb +342 -0
- data/test/vagrant/systems/base_test.rb +18 -0
- data/test/vagrant/systems/linux_test.rb +114 -0
- data/test/vagrant/ui_test.rb +29 -0
- data/test/vagrant/util/busy_test.rb +106 -0
- data/test/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
- data/test/vagrant/util/plain_logger_test.rb +17 -0
- data/test/vagrant/util/platform_test.rb +18 -0
- data/test/vagrant/util/resource_logger_test.rb +78 -0
- data/test/vagrant/util/retryable_test.rb +50 -0
- data/test/vagrant/util/stacked_proc_runner_test.rb +43 -0
- data/test/vagrant/util/template_renderer_test.rb +145 -0
- data/test/vagrant/vm_test.rb +291 -0
- data/vagrant.gemspec +36 -0
- metadata +514 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#VAGRANT-BEGIN
|
|
2
|
+
# The contents below are automatically generated by Vagrant.
|
|
3
|
+
# Please do not modify any of these contents.
|
|
4
|
+
auto eth<%= net_options[:adapter] %>
|
|
5
|
+
iface eth<%= net_options[:adapter] %> inet static
|
|
6
|
+
address <%= net_options[:ip] %>
|
|
7
|
+
netmask <%= net_options[:netmask] %>
|
|
8
|
+
#VAGRANT-END
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# VAGRANT-BEGIN: <%= uuid %>
|
|
2
|
+
<% folders.each do |name, opts| %>
|
|
3
|
+
"<%= opts[:hostpath] %>" <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>)
|
|
4
|
+
<% end %>
|
|
5
|
+
# VAGRANT-END: <%= uuid %>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Vagrant::Config.run do |config|
|
|
2
|
+
# This Vagrantfile is auto-generated by `vagrant package` to contain
|
|
3
|
+
# the MAC address of the box. Custom configuration should be placed in
|
|
4
|
+
# the actual `Vagrantfile` in this box.
|
|
5
|
+
config.vm.base_mac = "<%= base_mac %>"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# Load include vagrant file if it exists after the auto-generated
|
|
9
|
+
# so it can override any of the settings
|
|
10
|
+
include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
|
|
11
|
+
load include_vagrantfile if File.exist?(include_vagrantfile)
|
data/test/locales/en.yml
ADDED
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Add this folder to the load path for "test_helper"
|
|
2
|
+
$:.unshift(File.dirname(__FILE__))
|
|
3
|
+
|
|
4
|
+
require 'vagrant'
|
|
5
|
+
require 'mario'
|
|
6
|
+
require 'contest'
|
|
7
|
+
require 'mocha'
|
|
8
|
+
|
|
9
|
+
# Try to load ruby debug since its useful if it is available.
|
|
10
|
+
# But not a big deal if its not available (probably on a non-MRI
|
|
11
|
+
# platform)
|
|
12
|
+
begin
|
|
13
|
+
require 'ruby-debug'
|
|
14
|
+
rescue LoadError
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Silence Mario by sending log output to black hole
|
|
18
|
+
Mario::Platform.logger(nil)
|
|
19
|
+
|
|
20
|
+
# Add the I18n locale for tests
|
|
21
|
+
I18n.load_path << File.expand_path("../locales/en.yml", __FILE__)
|
|
22
|
+
|
|
23
|
+
class Test::Unit::TestCase
|
|
24
|
+
include Vagrant::TestHelpers
|
|
25
|
+
end
|
|
26
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class DestroyBoxActionTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Box::Destroy
|
|
6
|
+
@app, @env = action_env
|
|
7
|
+
@env["box"] = Vagrant::Box.new(vagrant_env, "foo")
|
|
8
|
+
|
|
9
|
+
@instance = @klass.new(@app, @env)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
should "delete the box directory" do
|
|
13
|
+
seq = sequence("seq")
|
|
14
|
+
FileUtils.expects(:rm_rf).with(@env["box"].directory).in_sequence(seq)
|
|
15
|
+
@app.expects(:call).with(@env).once.in_sequence(seq)
|
|
16
|
+
@instance.call(@env)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class DownloadBoxActionTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Box::Download
|
|
6
|
+
@app, @env = action_env
|
|
7
|
+
@env["box"] = Vagrant::Box.new(vagrant_env, "foo")
|
|
8
|
+
@env["box"].uri = "http://google.com"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "initializing" do
|
|
12
|
+
should "initialize download classes" do
|
|
13
|
+
@klass.new(@app, @env)
|
|
14
|
+
assert_equal [Vagrant::Downloaders::HTTP, Vagrant::Downloaders::File], @env["download.classes"]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context "with an instance" do
|
|
19
|
+
setup do
|
|
20
|
+
@instance = @klass.new(@app, @env)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "calling" do
|
|
24
|
+
should "call the proper methods in sequence" do
|
|
25
|
+
seq = sequence("seq")
|
|
26
|
+
@instance.expects(:instantiate_downloader).in_sequence(seq).returns(true)
|
|
27
|
+
@instance.expects(:download).in_sequence(seq)
|
|
28
|
+
@app.expects(:call).with(@env).in_sequence(seq)
|
|
29
|
+
@instance.expects(:recover).with(@env).in_sequence(seq)
|
|
30
|
+
@instance.call(@env)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "instantiating downloader" do
|
|
35
|
+
should "instantiate the proper class" do
|
|
36
|
+
instance = mock("instance")
|
|
37
|
+
Vagrant::Downloaders::HTTP.expects(:new).with(@env).returns(instance)
|
|
38
|
+
instance.expects(:prepare).with(@env["box"].uri).once
|
|
39
|
+
assert @instance.instantiate_downloader
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
should "error environment if URI is invalid for any downloaders" do
|
|
43
|
+
@env["box"].uri = "foobar"
|
|
44
|
+
assert_raises(Vagrant::Errors::BoxDownloadUnknownType) {
|
|
45
|
+
@instance.instantiate_downloader
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
context "downloading" do
|
|
51
|
+
setup do
|
|
52
|
+
@path = "foo"
|
|
53
|
+
|
|
54
|
+
@tempfile = mock("tempfile")
|
|
55
|
+
@tempfile.stubs(:path).returns(@path)
|
|
56
|
+
|
|
57
|
+
@instance.stubs(:with_tempfile).yields(@tempfile)
|
|
58
|
+
@instance.stubs(:download_to)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
should "make a tempfile and copy the URI contents to it" do
|
|
62
|
+
@instance.expects(:with_tempfile).yields(@tempfile)
|
|
63
|
+
@instance.expects(:download_to).with(@tempfile)
|
|
64
|
+
@instance.download
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
should "save the tempfile path" do
|
|
68
|
+
@instance.download
|
|
69
|
+
assert @env.has_key?("download.temp_path")
|
|
70
|
+
assert_equal @tempfile.path, @env["download.temp_path"]
|
|
71
|
+
assert_equal @tempfile.path, @instance.temp_path
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "tempfile" do
|
|
76
|
+
should "create a tempfile in the vagrant tmp directory" do
|
|
77
|
+
File.expects(:open).with { |name, bitmask|
|
|
78
|
+
name.to_s =~ /#{Vagrant::Action::Box::Download::BASENAME}/ && name.to_s =~ /#{@env.env.tmp_path}/
|
|
79
|
+
}.once
|
|
80
|
+
@instance.with_tempfile
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
should "yield the tempfile object" do
|
|
84
|
+
@tempfile = mock("tempfile")
|
|
85
|
+
File.expects(:open).yields(@tempfile)
|
|
86
|
+
|
|
87
|
+
@instance.with_tempfile do |otherfile|
|
|
88
|
+
assert @tempfile.equal?(otherfile)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
context "cleaning up" do
|
|
94
|
+
setup do
|
|
95
|
+
@temp_path = "foo"
|
|
96
|
+
@instance.stubs(:temp_path).returns(@temp_path)
|
|
97
|
+
File.stubs(:exist?).returns(true)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
should "delete the temporary file if it exists" do
|
|
101
|
+
File.expects(:unlink).with(@temp_path).once
|
|
102
|
+
@instance.recover(@env)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
should "not delete anything if it doesn't exist" do
|
|
106
|
+
File.stubs(:exist?).returns(false)
|
|
107
|
+
File.expects(:unlink).never
|
|
108
|
+
@instance.recover(@env)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
context "downloading to" do
|
|
113
|
+
setup do
|
|
114
|
+
@downloader = mock("downloader")
|
|
115
|
+
@instance.instance_variable_set(:@downloader, @downloader)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
should "call download! on the download with the URI and tempfile" do
|
|
119
|
+
tempfile = "foo"
|
|
120
|
+
@downloader.expects(:download!).with(@env["box"].uri, tempfile)
|
|
121
|
+
@instance.download_to(tempfile)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class PackageBoxActionTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Box::Package
|
|
6
|
+
@app, @env = action_env
|
|
7
|
+
@env["box"] = Vagrant::Box.new(vagrant_env, "foo")
|
|
8
|
+
|
|
9
|
+
@instance = @klass.new(@app, @env)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
should "be a subclass of general packaging middleware" do
|
|
13
|
+
assert @instance.is_a?(Vagrant::Action::General::Package)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
should "set the package directory then call parent" do
|
|
17
|
+
@instance.expects(:general_call).once.with() do |env|
|
|
18
|
+
assert env["package.directory"]
|
|
19
|
+
assert_equal env["package.directory"], @env["box"].directory
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
@instance.call(@env)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class UnpackageBoxActionTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Box::Unpackage
|
|
6
|
+
@app, @env = action_env
|
|
7
|
+
@env["box"] = Vagrant::Box.new(vagrant_env, "foo")
|
|
8
|
+
|
|
9
|
+
@instance = @klass.new(@app, @env)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context "calling" do
|
|
13
|
+
should "call the proper chain" do
|
|
14
|
+
seq = sequence("sequence")
|
|
15
|
+
@instance.expects(:setup_box_directory).in_sequence(seq).returns(true)
|
|
16
|
+
@instance.expects(:decompress).in_sequence(seq)
|
|
17
|
+
@app.expects(:call).with(@env)
|
|
18
|
+
@instance.call(@env)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "cleaning up" do
|
|
23
|
+
setup do
|
|
24
|
+
@instance.stubs(:box_directory).returns("foo")
|
|
25
|
+
File.stubs(:directory?).returns(false)
|
|
26
|
+
FileUtils.stubs(:rm_rf)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
should "do nothing if box directory is not set" do
|
|
30
|
+
@instance.stubs(:box_directory).returns(nil)
|
|
31
|
+
File.expects(:directory?).never
|
|
32
|
+
FileUtils.expects(:rm_rf).never
|
|
33
|
+
@instance.recover(nil)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
should "do nothing if not a directory" do
|
|
37
|
+
FileUtils.expects(:rm_rf).never
|
|
38
|
+
@instance.recover(nil)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
should "remove the directory if exists" do
|
|
42
|
+
File.expects(:directory?).with(@instance.box_directory).once.returns(true)
|
|
43
|
+
FileUtils.expects(:rm_rf).with(@instance.box_directory).once
|
|
44
|
+
@instance.recover(nil)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "setting up the box directory" do
|
|
49
|
+
setup do
|
|
50
|
+
File.stubs(:directory?).returns(false)
|
|
51
|
+
FileUtils.stubs(:mkdir_p)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
should "error the environment if the box already exists" do
|
|
55
|
+
File.expects(:directory?).returns(true)
|
|
56
|
+
assert_raises(Vagrant::Errors::BoxAlreadyExists) {
|
|
57
|
+
@instance.setup_box_directory
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
should "create the directory" do
|
|
62
|
+
FileUtils.expects(:mkdir_p).with(@env["box"].directory).once
|
|
63
|
+
@instance.setup_box_directory
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "decompressing" do
|
|
68
|
+
setup do
|
|
69
|
+
@env["download.temp_path"] = "bar"
|
|
70
|
+
|
|
71
|
+
Dir.stubs(:chdir).yields
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
should "change to the box directory" do
|
|
75
|
+
Dir.expects(:chdir).with(@env["box"].directory)
|
|
76
|
+
@instance.decompress
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
should "open the tar file within the new directory, and extract it all" do
|
|
80
|
+
Archive::Tar::Minitar.expects(:unpack).with(@env["download.temp_path"], @env["box"].directory.to_s).once
|
|
81
|
+
@instance.decompress
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class VerifyBoxActionTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Box::Verify
|
|
6
|
+
@app, @env = action_env
|
|
7
|
+
@env["box"] = Vagrant::Box.new(vagrant_env, "foo")
|
|
8
|
+
|
|
9
|
+
@instance = @klass.new(@app, @env)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context "calling" do
|
|
13
|
+
should "continue fine if verification succeeds" do
|
|
14
|
+
seq = sequence("seq")
|
|
15
|
+
VirtualBox::Appliance.expects(:new).with(@env["box"].ovf_file.to_s).in_sequence(seq)
|
|
16
|
+
@app.expects(:call).with(@env).once.in_sequence(seq)
|
|
17
|
+
assert_nothing_raised {
|
|
18
|
+
@instance.call(@env)
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
should "halt chain if verification fails" do
|
|
23
|
+
VirtualBox::Appliance.expects(:new).with(@env["box"].ovf_file.to_s).raises(Exception)
|
|
24
|
+
@app.expects(:call).with(@env).never
|
|
25
|
+
assert_raises(Vagrant::Errors::BoxVerificationFailed) {
|
|
26
|
+
@instance.call(@env)
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class ActionBuilderTest < Test::Unit::TestCase
|
|
4
|
+
setup do
|
|
5
|
+
@klass = Vagrant::Action::Builder
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "initializing" do
|
|
9
|
+
should "setup empty middleware stack" do
|
|
10
|
+
builder = @klass.new
|
|
11
|
+
assert builder.stack.empty?
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
should "take block to setup stack" do
|
|
15
|
+
builder = @klass.new do
|
|
16
|
+
use Hash
|
|
17
|
+
use lambda { |i| i }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
assert !builder.stack.empty?
|
|
21
|
+
assert_equal 2, builder.stack.length
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context "with an instance" do
|
|
26
|
+
setup do
|
|
27
|
+
@instance = @klass.new
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "adding to the stack" do
|
|
31
|
+
should "return self" do
|
|
32
|
+
assert @instance.equal?(@instance.use(1))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
should "add to the end" do
|
|
36
|
+
@instance.use 1
|
|
37
|
+
@instance.use 2
|
|
38
|
+
assert_equal [2, [], nil], @instance.stack.last
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
should "merge in other builder's stack" do
|
|
42
|
+
other = @klass.new do
|
|
43
|
+
use 2
|
|
44
|
+
use 3
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
@instance.use 1
|
|
48
|
+
@instance.use other
|
|
49
|
+
assert_equal 3, @instance.stack.length
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
should "prepend a set environment task for merging middlewares if given" do
|
|
53
|
+
other = @klass.new do
|
|
54
|
+
use 1
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
@instance.use 0
|
|
58
|
+
@instance.use(other, :foo => :bar)
|
|
59
|
+
assert_equal 3, @instance.stack.length
|
|
60
|
+
assert_equal Vagrant::Action::Env::Set, @instance.stack[1].first
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context "flatten" do
|
|
65
|
+
should "return the flattened format of the builder" do
|
|
66
|
+
env = Vagrant::Action::Environment.new(nil)
|
|
67
|
+
env.expects(:foo).once
|
|
68
|
+
|
|
69
|
+
func = lambda { |x| x.foo }
|
|
70
|
+
@instance.use func
|
|
71
|
+
proc = @instance.flatten
|
|
72
|
+
assert proc.respond_to?(:call)
|
|
73
|
+
proc.call(env)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "inserting" do
|
|
78
|
+
setup do
|
|
79
|
+
@instance.use "1"
|
|
80
|
+
@instance.use "2"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
should "insert at the proper numeric index" do
|
|
84
|
+
@instance.insert(1, "3")
|
|
85
|
+
assert_equal "3", @instance.stack[1].first
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
should "insert next to the proper object if given" do
|
|
89
|
+
@instance.insert("2", "3")
|
|
90
|
+
assert_equal "3", @instance.stack[1].first
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
should "be able to call insert_before as well" do
|
|
94
|
+
@instance.insert_before("1", "0")
|
|
95
|
+
assert_equal "0", @instance.stack.first.first
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
should "be able to insert_after" do
|
|
99
|
+
@instance.insert_after("1", "0")
|
|
100
|
+
assert_equal "0", @instance.stack[1].first
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
should "be able to insert_after using numeric index" do
|
|
104
|
+
@instance.insert_after(1, "0")
|
|
105
|
+
assert_equal "0", @instance.stack[2].first
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
should "raise an exception if invalid index" do
|
|
109
|
+
assert_raises(RuntimeError) {
|
|
110
|
+
@instance.insert_after("15", "0")
|
|
111
|
+
}
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
context "swapping" do
|
|
116
|
+
setup do
|
|
117
|
+
@instance.use "1"
|
|
118
|
+
@instance.use "2"
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
should "be able to swap using the object" do
|
|
122
|
+
@instance.swap "1", "3"
|
|
123
|
+
assert_equal "3", @instance.stack.first.first
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
should "be able to swap using the index" do
|
|
127
|
+
@instance.swap 0, "3"
|
|
128
|
+
assert_equal "3", @instance.stack.first.first
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
context "deleting" do
|
|
133
|
+
setup do
|
|
134
|
+
@instance.use "1"
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
should "delete the proper object" do
|
|
138
|
+
@instance.delete("1")
|
|
139
|
+
assert @instance.stack.empty?
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
should "delete by index if given" do
|
|
143
|
+
@instance.delete(0)
|
|
144
|
+
assert @instance.stack.empty?
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
context "getting an index of an object" do
|
|
149
|
+
should "return the proper index if it exists" do
|
|
150
|
+
@instance.use 1
|
|
151
|
+
@instance.use 2
|
|
152
|
+
@instance.use 3
|
|
153
|
+
assert_equal 1, @instance.index(2)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
context "converting to an app" do
|
|
158
|
+
should "make non-classes lambdas" do
|
|
159
|
+
env = Vagrant::Action::Environment.new(nil)
|
|
160
|
+
env.expects(:foo).once
|
|
161
|
+
|
|
162
|
+
func = lambda { |x| x.foo }
|
|
163
|
+
@instance.use func
|
|
164
|
+
@instance.to_app(env).call(env)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
should "raise exception if given invalid middleware" do
|
|
168
|
+
@instance.use 7
|
|
169
|
+
assert_raises(RuntimeError) {
|
|
170
|
+
@instance.to_app(nil)
|
|
171
|
+
}
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
context "calling" do
|
|
176
|
+
def mock_middleware
|
|
177
|
+
middleware = Class.new do
|
|
178
|
+
def initialize(app, env)
|
|
179
|
+
@app = app
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def call(env)
|
|
183
|
+
@app.call(env)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
should "convert to an app then call with the env" do
|
|
189
|
+
mw = mock_middleware
|
|
190
|
+
mw.any_instance.expects(:call).with() do |env|
|
|
191
|
+
assert env.has_key?(:key)
|
|
192
|
+
true
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
env = Vagrant::Action::Environment.new(nil)
|
|
196
|
+
env[:key] = :value
|
|
197
|
+
|
|
198
|
+
@instance.use(mw)
|
|
199
|
+
@instance.call(env)
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|