producer-core/features/recipe_macro.feature
2014-09-25 00:27:46 +00:00

51 lines
1.2 KiB
Gherkin

Feature: `macro' recipe keyword
Scenario: declares a new recipe keyword accepting task code
Given a recipe with:
"""
macro :hello do
echo 'hello macro'
end
hello
"""
When I successfully execute the recipe
Then the output must contain "hello macro"
Scenario: declares a new task keyword
Given a recipe with:
"""
macro(:hello) { echo 'hello macro' }
task(:some_task) { hello }
"""
When I successfully execute the recipe
Then the output must contain "hello macro"
Scenario: supports arguments
Given a recipe with:
"""
macro :my_echo do |kind, message|
echo "#{kind}: #{message}"
end
my_echo 'my', 'hello'
"""
When I successfully execute the recipe
Then the output must contain "my: hello"
Scenario: supports arguments in conditions
Given a recipe with:
"""
macro :my_echo do |message|
condition { message =~ /foo/ }
echo message
end
%w[foo bar].each { |e| my_echo e }
"""
When I successfully execute the recipe
Then the output must contain "foo"
And the output must not contain "bar"