diff --git a/lib/vagrant/action/environment.rb b/lib/vagrant/action/environment.rb index ac8003ff4..cf756516f 100644 --- a/lib/vagrant/action/environment.rb +++ b/lib/vagrant/action/environment.rb @@ -14,6 +14,17 @@ module Vagrant attr_reader :error def initialize(env) + super() do |h,k| + # By default, try to find the key as a method on the + # environment. Gross eval use here. + begin + value = eval("h.env.#{k}") + h[k] = value + rescue Exception + nil + end + end + @env = env @error = nil end diff --git a/lib/vagrant/action/vm/import.rb b/lib/vagrant/action/vm/import.rb index cbf6ad740..b544819cf 100644 --- a/lib/vagrant/action/vm/import.rb +++ b/lib/vagrant/action/vm/import.rb @@ -11,12 +11,12 @@ module Vagrant begin # Import the virtual machine - env['vm'] = VirtualBox::VM.import(env.env.box.ovf_file) do |progress| + env.env.vm.vm = VirtualBox::VM.import(env.env.box.ovf_file) do |progress| env.logger.report_progress(progress.percent, 100, false) end # Flag as erroneous and return if import failed - return env.error!(:virtualbox_import_failure) if !env['vm'] + return env.error!(:virtualbox_import_failure) if !env['vm'].vm ensure env.logger.clear_progress end diff --git a/test/vagrant/action/environment_test.rb b/test/vagrant/action/environment_test.rb index aac751ad3..46b06326f 100644 --- a/test/vagrant/action/environment_test.rb +++ b/test/vagrant/action/environment_test.rb @@ -6,6 +6,11 @@ class ActionEnvironmentTest < Test::Unit::TestCase @instance = @klass.new(mock_environment) end + should "default values to those on the env" do + @instance.env.stubs(:key).returns("value") + assert_equal "value", @instance["key"] + end + should "setup the logger" do assert_equal @instance.env.logger, @instance.logger end diff --git a/test/vagrant/action/vm/import_test.rb b/test/vagrant/action/vm/import_test.rb index ed87f9984..6467e885e 100644 --- a/test/vagrant/action/vm/import_test.rb +++ b/test/vagrant/action/vm/import_test.rb @@ -11,6 +11,8 @@ class ImportVMActionTest < Test::Unit::TestCase @box.stubs(:ovf_file).returns(ovf_file) @env.env.stubs(:box).returns(@box) + @env.env.vm = Vagrant::VM.new + VirtualBox::VM.stubs(:import) end @@ -25,7 +27,7 @@ class ImportVMActionTest < Test::Unit::TestCase @app.expects(:call).with(@env).once @instance.call(@env) - assert_equal vm, @env["vm"] + assert_equal vm, @env["vm"].vm end should "mark environment erroneous and not continue chain on failure" do diff --git a/vagrant.gemspec b/vagrant.gemspec index 4e07c85c9..1126a8633 100644 --- a/vagrant.gemspec +++ b/vagrant.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version= s.authors = ["Mitchell Hashimoto", "John Bender"] - s.date = %q{2010-07-02} + s.date = %q{2010-07-05} s.default_executable = %q{vagrant} s.description = %q{Vagrant is a tool for building and distributing virtualized development environments.} s.email = ["mitchell.hashimoto@gmail.com", "john.m.bender@gmail.com"] @@ -33,6 +33,16 @@ Gem::Specification.new do |s| "keys/vagrant.ppk", "keys/vagrant.pub", "lib/vagrant.rb", + "lib/vagrant/action.rb", + "lib/vagrant/action/builder.rb", + "lib/vagrant/action/builtin.rb", + "lib/vagrant/action/environment.rb", + "lib/vagrant/action/error_halt.rb", + "lib/vagrant/action/vm/boot.rb", + "lib/vagrant/action/vm/customize.rb", + "lib/vagrant/action/vm/forward_ports.rb", + "lib/vagrant/action/vm/import.rb", + "lib/vagrant/action/vm/share_folders.rb", "lib/vagrant/actions/base.rb", "lib/vagrant/actions/box/add.rb", "lib/vagrant/actions/box/destroy.rb", @@ -113,6 +123,15 @@ Gem::Specification.new do |s| "templates/unison/crontab_entry.erb", "templates/unison/script.erb", "test/test_helper.rb", + "test/vagrant/action/builder_test.rb", + "test/vagrant/action/environment_test.rb", + "test/vagrant/action/error_halt_test.rb", + "test/vagrant/action/vm/boot_test.rb", + "test/vagrant/action/vm/customize_test.rb", + "test/vagrant/action/vm/forward_ports_test.rb", + "test/vagrant/action/vm/import_test.rb", + "test/vagrant/action/vm/share_folders_test.rb", + "test/vagrant/action_test.rb", "test/vagrant/actions/base_test.rb", "test/vagrant/actions/box/add_test.rb", "test/vagrant/actions/box/destroy_test.rb", @@ -190,6 +209,15 @@ Gem::Specification.new do |s| s.summary = %q{Vagrant is a tool for building and distributing virtualized development environments.} s.test_files = [ "test/test_helper.rb", + "test/vagrant/action/builder_test.rb", + "test/vagrant/action/environment_test.rb", + "test/vagrant/action/error_halt_test.rb", + "test/vagrant/action/vm/boot_test.rb", + "test/vagrant/action/vm/customize_test.rb", + "test/vagrant/action/vm/forward_ports_test.rb", + "test/vagrant/action/vm/import_test.rb", + "test/vagrant/action/vm/share_folders_test.rb", + "test/vagrant/action_test.rb", "test/vagrant/actions/base_test.rb", "test/vagrant/actions/box/add_test.rb", "test/vagrant/actions/box/destroy_test.rb",