Implement source keyword feature for recipes

This commit is contained in:
Thibault Jouan 2013-07-28 18:38:00 +00:00
parent 65643e065e
commit c7295fb977
4 changed files with 30 additions and 0 deletions

View File

@ -8,3 +8,16 @@ Feature: recipe evaluation
When I execute the recipe When I execute the recipe
Then the exit status must be 0 Then the exit status must be 0
And the output must contain "hello from recipe" And the output must contain "hello from recipe"
Scenario: source keyword, requires a recipe file
Given a recipe with:
"""
source 'sourced_recipe'
"""
And a file named "sourced_recipe.rb" with:
"""
puts 'sourced recipe'
"""
When I execute the recipe
Then the exit status must be 0
And the output must contain "sourced recipe"

View File

@ -24,6 +24,13 @@ module Producer
instance_eval &block instance_eval &block
end end
end end
private
def source(filepath)
instance_eval File.read("./#{filepath}.rb")
end
end end
end end
end end

1
spec/fixtures/recipes/error.rb vendored Normal file
View File

@ -0,0 +1 @@
raise 'error from recipe'

View File

@ -45,6 +45,15 @@ module Producer::Core
expect { dsl }.to raise_error(RuntimeError, 'error from recipe') expect { dsl }.to raise_error(RuntimeError, 'error from recipe')
end end
end end
describe '#source' do
let(:code) { "source '#{fixture_path_for 'recipes/error'}'" }
let(:dsl) { Recipe::DSL.new code }
it 'evaluates its code' do
expect { dsl }.to raise_error(RuntimeError, 'error from recipe')
end
end
end end
end end
end end