Implement `set?' task keyword:

When called from a task, will return true when given key exists and
false when key does not exist.
This commit is contained in:
Thibault Jouan 2014-11-18 16:48:11 +00:00
parent 1465b98f18
commit 3b413a242f
4 changed files with 27 additions and 1 deletions

View File

@ -56,3 +56,16 @@ Feature: key/value registry
""" """
When I successfully execute the recipe When I successfully execute the recipe
Then the output must contain "some_value" Then the output must contain "some_value"
Scenario: `set?' keyword tests wether given key is defined
Given a recipe with:
"""
set :some_key, 'some_value'
task :registry_testing do
echo 'some_value_set' if set? :some_key
echo 'other_value' if set? :other_key
end
"""
When I execute the recipe
Then the output must contain "some_value_set"
And the output must not contain "other_value"

View File

@ -2,7 +2,7 @@ module Producer
module Core module Core
class Env class Env
extend Forwardable extend Forwardable
def_delegators :@registry, :[]= def_delegators :@registry, :[]=, :key?
attr_reader :input, :output, :error_output, :registry, :logger attr_reader :input, :output, :error_output, :registry, :logger
attr_accessor :target, :verbose, :debug, :dry_run attr_accessor :target, :verbose, :debug, :dry_run

View File

@ -17,6 +17,7 @@ module Producer
def_delegators :@name, :to_s def_delegators :@name, :to_s
def_delegators :@env, :target def_delegators :@env, :target
def_delegator :@env, :[], :get def_delegator :@env, :[], :get
def_delegator :@env, :key?, :set?
define_action :echo, Actions::Echo define_action :echo, Actions::Echo
define_action :sh, Actions::ShellCommand define_action :sh, Actions::ShellCommand

View File

@ -160,6 +160,18 @@ module Producer::Core
end end
end end
describe '#set?' do
before { env[:some_key] = :some_value }
it 'returns true when given key exists' do
expect(task.set? :some_key).to be true
end
it 'returns false when given key does not exist' do
expect(task.set? :other_key).to be false
end
end
describe '#target' do describe '#target' do
before { env.target = :some_target } before { env.target = :some_target }