Properly cleanup exported box
This commit is contained in:
parent
62a3adb7dd
commit
8bd64de61d
|
@ -2,6 +2,8 @@ module Vagrant
|
||||||
class Action
|
class Action
|
||||||
module VM
|
module VM
|
||||||
class Export
|
class Export
|
||||||
|
attr_reader :temp_dir
|
||||||
|
|
||||||
def initialize(app, env)
|
def initialize(app, env)
|
||||||
@app = app
|
@app = app
|
||||||
@env = env
|
@env = env
|
||||||
|
@ -16,11 +18,19 @@ module Vagrant
|
||||||
export
|
export
|
||||||
|
|
||||||
@app.call(env)
|
@app.call(env)
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
end
|
||||||
|
|
||||||
|
def cleanup
|
||||||
|
if temp_dir && File.exist?(temp_dir)
|
||||||
|
FileUtils.rm_rf(temp_dir)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup_temp_dir
|
def setup_temp_dir
|
||||||
@env.logger.info "Creating temporary directory for export..."
|
@env.logger.info "Creating temporary directory for export..."
|
||||||
@env["export.temp_dir"] = File.join(@env.env.tmp_path, Time.now.to_i.to_s)
|
@temp_dir = @env["export.temp_dir"] = File.join(@env.env.tmp_path, Time.now.to_i.to_s)
|
||||||
FileUtils.mkpath(@env["export.temp_dir"])
|
FileUtils.mkpath(@env["export.temp_dir"])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ class ExportVMActionTest < Test::Unit::TestCase
|
||||||
@instance.expects(:setup_temp_dir).in_sequence(seq)
|
@instance.expects(:setup_temp_dir).in_sequence(seq)
|
||||||
@instance.expects(:export).in_sequence(seq)
|
@instance.expects(:export).in_sequence(seq)
|
||||||
@app.expects(:call).with(@env).in_sequence(seq)
|
@app.expects(:call).with(@env).in_sequence(seq)
|
||||||
|
@instance.expects(:cleanup).in_sequence(seq)
|
||||||
|
|
||||||
@instance.call(@env)
|
@instance.call(@env)
|
||||||
end
|
end
|
||||||
|
@ -33,6 +34,7 @@ class ExportVMActionTest < Test::Unit::TestCase
|
||||||
@instance.expects(:setup_temp_dir).never
|
@instance.expects(:setup_temp_dir).never
|
||||||
@instance.expects(:export).never
|
@instance.expects(:export).never
|
||||||
@app.expects(:call).with(@env).never
|
@app.expects(:call).with(@env).never
|
||||||
|
@instance.expects(:cleanup).never
|
||||||
|
|
||||||
@instance.call(@env)
|
@instance.call(@env)
|
||||||
assert @env.error?
|
assert @env.error?
|
||||||
|
@ -40,6 +42,25 @@ class ExportVMActionTest < Test::Unit::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "cleaning up" do
|
||||||
|
setup do
|
||||||
|
@temp_dir = "foo"
|
||||||
|
@instance.stubs(:temp_dir).returns(@temp_dir)
|
||||||
|
File.stubs(:exist?).returns(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "delete the temporary file if it exists" do
|
||||||
|
File.expects(:unlink).with(@temp_dir).once
|
||||||
|
@instance.cleanup
|
||||||
|
end
|
||||||
|
|
||||||
|
should "not delete anything if it doesn't exist" do
|
||||||
|
File.stubs(:exist?).returns(false)
|
||||||
|
File.expects(:unlink).never
|
||||||
|
@instance.cleanup
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "setting up the temporary directory" do
|
context "setting up the temporary directory" do
|
||||||
setup do
|
setup do
|
||||||
@time_now = Time.now.to_i.to_s
|
@time_now = Time.now.to_i.to_s
|
||||||
|
@ -60,6 +81,7 @@ class ExportVMActionTest < Test::Unit::TestCase
|
||||||
should "set to the environment" do
|
should "set to the environment" do
|
||||||
@instance.setup_temp_dir
|
@instance.setup_temp_dir
|
||||||
assert_equal @temp_dir, @env["export.temp_dir"]
|
assert_equal @temp_dir, @env["export.temp_dir"]
|
||||||
|
assert_equal @temp_dir, @instance.temp_dir
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue