From 366c682152d09bf746de6334838713f5c4a728c6 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Fri, 20 Dec 2013 11:17:25 +0000 Subject: [PATCH] Remove Recipe::DSL.evaluate method --- lib/producer/core/recipe.rb | 3 ++- lib/producer/core/recipe/dsl.rb | 7 ------- spec/producer/core/recipe/dsl_spec.rb | 29 --------------------------- spec/producer/core/recipe_spec.rb | 27 +++++++++++++++++++------ 4 files changed, 23 insertions(+), 43 deletions(-) diff --git a/lib/producer/core/recipe.rb b/lib/producer/core/recipe.rb index 8de3291..ae38465 100644 --- a/lib/producer/core/recipe.rb +++ b/lib/producer/core/recipe.rb @@ -3,7 +3,8 @@ module Producer class Recipe class << self def evaluate_from_file(filepath, env) - DSL.evaluate(File.read(filepath), env) + dsl = DSL.new(File.read(filepath)).evaluate(env) + Recipe.new(dsl.tasks) end end diff --git a/lib/producer/core/recipe/dsl.rb b/lib/producer/core/recipe/dsl.rb index 935b24c..9303665 100644 --- a/lib/producer/core/recipe/dsl.rb +++ b/lib/producer/core/recipe/dsl.rb @@ -2,13 +2,6 @@ module Producer module Core class Recipe class DSL - class << self - def evaluate(code, env) - dsl = new(code).evaluate(env) - Recipe.new(dsl.tasks) - end - end - attr_reader :tasks def initialize(code = nil, &block) diff --git a/spec/producer/core/recipe/dsl_spec.rb b/spec/producer/core/recipe/dsl_spec.rb index 656540e..3807b68 100644 --- a/spec/producer/core/recipe/dsl_spec.rb +++ b/spec/producer/core/recipe/dsl_spec.rb @@ -8,35 +8,6 @@ module Producer::Core let(:env) { double('env').as_null_object } subject(:dsl) { Recipe::DSL.new(&code) } - describe '.evaluate' do - let(:code) { 'nil' } - - it 'builds a new DSL sandbox with given code as string' do - expect(Recipe::DSL).to receive(:new).with(code).and_call_original - Recipe::DSL.evaluate(code, env) - end - - it 'evaluates the DSL sandbox code with given environment' do - dsl = double('dsl').as_null_object - allow(Recipe::DSL).to receive(:new) { dsl } - expect(dsl).to receive(:evaluate).with(env) - Recipe::DSL.evaluate(code, env) - end - - it 'builds a recipe with evaluated tasks' do - dsl = Recipe::DSL.new { task(:some_task) { } } - allow(Recipe::DSL).to receive(:new) { dsl } - expect(Recipe).to receive(:new).with(dsl.tasks) - Recipe::DSL.evaluate(code, env) - end - - it 'returns the recipe' do - recipe = double('recipe').as_null_object - allow(Recipe).to receive(:new) { recipe } - expect(Recipe::DSL.evaluate(code, env)).to be recipe - end - end - describe '#initialize' do it 'assigns no task' do expect(dsl.instance_eval { @tasks }).to be_empty diff --git a/spec/producer/core/recipe_spec.rb b/spec/producer/core/recipe_spec.rb index 05a1760..d4e2d08 100644 --- a/spec/producer/core/recipe_spec.rb +++ b/spec/producer/core/recipe_spec.rb @@ -9,18 +9,33 @@ module Producer::Core describe '.evaluate_from_file' do let(:env) { double 'env' } let(:filepath) { fixture_path_for 'recipes/empty.rb' } + let(:code) { File.read(filepath) } - it 'delegates to DSL.evaluate with the recipe file content' do - expect(Recipe::DSL) - .to receive(:evaluate).with(File.read(filepath), env) + it 'builds a new DSL sandbox with code read from given file path' do + expect(Recipe::DSL).to receive(:new).with(code).and_call_original Recipe.evaluate_from_file(filepath, env) end - it 'returns the evaluated recipe' do - recipe = double 'recipe' - allow(Recipe::DSL).to receive(:evaluate) { recipe } + it 'evaluates the DSL sandbox code with given environment' do + dsl = double('dsl').as_null_object + allow(Recipe::DSL).to receive(:new) { dsl } + expect(dsl).to receive(:evaluate).with(env) + Recipe.evaluate_from_file(filepath, env) + end + + it 'builds a recipe with evaluated tasks' do + dsl = Recipe::DSL.new { task(:some_task) { } } + allow(Recipe::DSL).to receive(:new) { dsl } + expect(Recipe).to receive(:new).with(dsl.tasks) + Recipe.evaluate_from_file(filepath, env) + end + + it 'returns the recipe' do + recipe = double('recipe').as_null_object + allow(Recipe).to receive(:new) { recipe } expect(Recipe.evaluate_from_file(filepath, env)).to be recipe end + end describe '#initialize' do