Implement Action#output (delegates to env.output)

This commit is contained in:
Thibault Jouan 2014-01-08 22:43:52 +00:00
parent 103b9d1230
commit e567c61e4e
5 changed files with 15 additions and 3 deletions

View File

@ -1,6 +1,11 @@
module Producer
module Core
class Action
require 'forwardable'
extend Forwardable
def_delegator :@env, :output
attr_accessor :env, :arguments
def initialize(env, *args)

View File

@ -3,7 +3,7 @@ module Producer
module Actions
class Echo < Action
def apply
env.output.puts arguments.first
output.puts arguments.first
end
end
end

View File

@ -3,7 +3,7 @@ module Producer
module Actions
class ShellCommand < Action
def apply
env.output.puts env.remote.execute(arguments.first)
output.puts env.remote.execute(arguments.first)
end
end
end

View File

@ -17,5 +17,12 @@ module Producer::Core
expect(action.arguments).to eq arguments
end
end
describe '#output' do
it 'delegates to env output' do
expect(action.env).to receive(:output).with(:content)
action.output :content
end
end
end
end

View File

@ -7,7 +7,7 @@ module Producer::Core
subject(:echo) { Actions::Echo.new(env, text) }
describe '#apply' do
it 'writes the given string to env.output with a record separator' do
it 'writes the given string to env output with a record separator' do
echo.apply
expect(env.output.string).to eq "hello\n"
end