Implement `echo' task action

This commit is contained in:
Thibault Jouan 2013-08-14 23:41:38 +00:00
parent f0e144cebd
commit a675c9c910
6 changed files with 48 additions and 2 deletions

View File

@ -0,0 +1,12 @@
Feature: `echo' task action
Scenario: ouputs text
Given a recipe with:
"""
task :some_task do
echo 'hello'
end
"""
When I execute the recipe
Then the exit status must be 0
And the output must contain exactly "hello\n"

View File

@ -1,4 +1,5 @@
require 'producer/core/action'
require 'producer/core/actions/echo'
require 'producer/core/actions/shell_command'
require 'producer/core/cli'
require 'producer/core/env'

View File

@ -0,0 +1,11 @@
module Producer
module Core
module Actions
class Echo < Action
def apply
env.output arguments.first
end
end
end
end
end

View File

@ -10,7 +10,8 @@ module Producer
end
end
define_action :sh, Actions::ShellCommand
define_action :echo, Actions::Echo
define_action :sh, Actions::ShellCommand
attr_accessor :actions

View File

@ -0,0 +1,21 @@
require 'spec_helper'
module Producer::Core
describe Actions::Echo do
let(:env) { Env.new }
let(:text) { 'hello' }
subject(:echo) { Actions::Echo.new(env, text) }
describe '#apply' do
before do
env.output = StringIO.new
end
it 'outputs the string given as argument through env.output' do
expect(env).to receive(:output).with(text)
echo.apply
end
end
end
end

View File

@ -6,7 +6,7 @@ module Producer::Core
let(:env) { double('env') }
subject(:dsl) { Task::DSL.new &block }
%w[sh].each do |action|
%w[echo sh].each do |action|
it "has `#{action}' action defined" do
expect(dsl).to respond_to action.to_sym
end