diff --git a/lib/producer/core.rb b/lib/producer/core.rb index c9ab4c0..0a138d2 100644 --- a/lib/producer/core.rb +++ b/lib/producer/core.rb @@ -3,4 +3,5 @@ require 'producer/core/env' require 'producer/core/recipe' require 'producer/core/recipe/dsl' require 'producer/core/task' +require 'producer/core/task/dsl' require 'producer/core/version' diff --git a/lib/producer/core/task.rb b/lib/producer/core/task.rb index dc0e773..ad79491 100644 --- a/lib/producer/core/task.rb +++ b/lib/producer/core/task.rb @@ -11,20 +11,6 @@ module Producer def evaluate DSL.new &@block end - - - class DSL - ConditionNotMetError = Class.new(StandardError) - - def initialize(&block) - instance_eval &block - rescue ConditionNotMetError - end - - def condition(&block) - raise ConditionNotMetError unless block.call - end - end end end end diff --git a/lib/producer/core/task/dsl.rb b/lib/producer/core/task/dsl.rb new file mode 100644 index 0000000..dd9ee74 --- /dev/null +++ b/lib/producer/core/task/dsl.rb @@ -0,0 +1,18 @@ +module Producer + module Core + class Task + class DSL + ConditionNotMetError = Class.new(StandardError) + + def initialize(&block) + instance_eval &block + rescue ConditionNotMetError + end + + def condition(&block) + raise ConditionNotMetError unless block.call + end + end + end + end +end diff --git a/spec/producer/core/task/dsl_spec.rb b/spec/producer/core/task/dsl_spec.rb new file mode 100644 index 0000000..523298a --- /dev/null +++ b/spec/producer/core/task/dsl_spec.rb @@ -0,0 +1,39 @@ +require 'spec_helper' + +module Producer::Core + describe Task::DSL do + subject(:dsl) { Task::DSL.new &block } + + describe '#initialize' do + let(:block) { Proc.new { raise 'error from task' } } + + it 'evaluates its block' do + expect { dsl }.to raise_error(RuntimeError, 'error from task') + end + end + + describe '#condition' do + context 'condition is met (block evals to true)' do + let(:block) { Proc.new { + condition { true } + raise 'error after condition' + } } + + it 'evaluates all the block' do + expect { dsl }.to raise_error(RuntimeError, 'error after condition') + end + end + + context 'condition is not met (block evals to false)' do + let(:block) { Proc.new { + condition { false } + raise + } } + + it 'stops block evaluation' do + expect { dsl }.not_to raise_error + end + end + end + end +end diff --git a/spec/producer/core/task_spec.rb b/spec/producer/core/task_spec.rb index 7b345e3..2916953 100644 --- a/spec/producer/core/task_spec.rb +++ b/spec/producer/core/task_spec.rb @@ -18,41 +18,5 @@ module Producer::Core task.evaluate end end - - describe Task::DSL do - subject(:dsl) { Task::DSL.new &block } - - describe '#initialize' do - let(:block) { Proc.new { raise 'error from task' } } - - it 'evaluates its block' do - expect { dsl }.to raise_error(RuntimeError, 'error from task') - end - end - - describe '#condition' do - context 'condition is met (block evals to true)' do - let(:block) { Proc.new { - condition { true } - raise 'error after condition' - } } - - it 'evaluates all the block' do - expect { dsl }.to raise_error(RuntimeError, 'error after condition') - end - end - - context 'condition is not met (block evals to false)' do - let(:block) { Proc.new { - condition { false } - raise - } } - - it 'stops block evaluation' do - expect { dsl }.not_to raise_error - end - end - end - end end end