Remove Env#current_recipe attribute

This commit is contained in:
Thibault Jouan 2013-08-13 01:36:33 +00:00
parent a5d9ca26f4
commit 53db841b2d
6 changed files with 11 additions and 29 deletions

View File

@ -3,8 +3,7 @@ Feature: `env' recipe keyword
Scenario: exposes the internal env object
Given a recipe with:
"""
puts env.current_recipe.filepath
env
"""
When I execute the recipe
Then the exit status must be 0
And the output must contain exactly "recipe.rb\n"

View File

@ -21,7 +21,7 @@ module Producer
end
def env
@env ||= Env.new(recipe)
@env ||= Env.new
end
def recipe

View File

@ -1,12 +1,10 @@
module Producer
module Core
class Env
attr_reader :current_recipe
attr_writer :output
attr_accessor :target
def initialize(recipe = nil)
@current_recipe = recipe
def initialize
@output = $stdout
@target = nil
end

View File

@ -13,7 +13,7 @@ module Producer
def evaluate(env)
@env = env
if @code
instance_eval @code, env.current_recipe.filepath
instance_eval @code
else
instance_eval &@block
end

View File

@ -66,7 +66,7 @@ module Producer::Core
describe '#env' do
it 'builds an environment with the current recipe' do
expect(Env).to receive(:new).with(cli.recipe)
expect(Env).to receive(:new)
cli.env
end

View File

@ -5,27 +5,12 @@ module Producer::Core
subject(:env) { Env.new }
describe '#initialize' do
it 'assigns nil as a default target' do
expect(env.target).not_to be
end
context 'without argument' do
it 'assigns no recipe' do
expect(env.current_recipe).not_to be
end
it 'assigns $stdout as the default output' do
expect(env.instance_eval { @output }).to eq $stdout
end
end
context 'when a recipe is given as argument' do
let(:recipe) { Recipe.new(proc { nil }) }
subject(:env) { Env.new(recipe) }
it 'assigns the current recipe' do
expect(env.current_recipe).to be recipe
end
it 'assigns nil as a default target' do
expect(env.target).not_to be
end
end