core: Machine#with_ui
This commit is contained in:
parent
8c85e57db1
commit
efc1bf50dd
|
@ -1,3 +1,5 @@
|
||||||
|
require "thread"
|
||||||
|
|
||||||
require "log4r"
|
require "log4r"
|
||||||
|
|
||||||
module Vagrant
|
module Vagrant
|
||||||
|
@ -103,6 +105,7 @@ module Vagrant
|
||||||
@provider_name = provider_name
|
@provider_name = provider_name
|
||||||
@provider_options = provider_options
|
@provider_options = provider_options
|
||||||
@ui = Vagrant::UI::Prefixed.new(@env.ui, @name)
|
@ui = Vagrant::UI::Prefixed.new(@env.ui, @name)
|
||||||
|
@ui_mutex = Mutex.new
|
||||||
|
|
||||||
# Read the ID, which is usually in local storage
|
# Read the ID, which is usually in local storage
|
||||||
@id = nil
|
@id = nil
|
||||||
|
@ -337,5 +340,19 @@ module Vagrant
|
||||||
raise Errors::MachineStateInvalid if !result.is_a?(MachineState)
|
raise Errors::MachineStateInvalid if !result.is_a?(MachineState)
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Temporarily changes the machine UI. This is useful if you want
|
||||||
|
# to execute an {#action} with a different UI.
|
||||||
|
def with_ui(ui)
|
||||||
|
@ui_mutex.synchronize do
|
||||||
|
begin
|
||||||
|
old_ui = @ui
|
||||||
|
@ui = ui
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
@ui = old_ui
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -445,4 +445,18 @@ describe Vagrant::Machine do
|
||||||
to raise_error(Vagrant::Errors::MachineStateInvalid)
|
to raise_error(Vagrant::Errors::MachineStateInvalid)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#with_ui" do
|
||||||
|
it "temporarily changes the UI" do
|
||||||
|
ui = Object.new
|
||||||
|
changed_ui = nil
|
||||||
|
|
||||||
|
subject.with_ui(ui) do
|
||||||
|
changed_ui = subject.ui
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(changed_ui).to equal(ui)
|
||||||
|
expect(subject.ui).to_not equal(ui)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue