From 2363bfb62a1b4348018ee5dbbc9d5057e750a943 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Mon, 6 Apr 2015 12:39:09 +0000 Subject: [PATCH] Implement `set' task keyword --- features/recipe/registry.feature | 11 +++++++++++ lib/producer/core/task.rb | 1 + spec/producer/core/task_spec.rb | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/features/recipe/registry.feature b/features/recipe/registry.feature index b661827..fa73daf 100644 --- a/features/recipe/registry.feature +++ b/features/recipe/registry.feature @@ -57,6 +57,17 @@ Feature: key/value registry When I successfully execute the recipe Then the output must contain "some_value" + Scenario: `set' keyword sets a value from a task + Given a recipe with: + """ + task :registry_testing do + set :some_key, 'some_value' + echo get :some_key + end + """ + When I successfully execute the recipe + Then the output must contain "some_value" + Scenario: `set?' keyword tests wether given key is defined Given a recipe with: """ diff --git a/lib/producer/core/task.rb b/lib/producer/core/task.rb index 82b88c7..1b75683 100644 --- a/lib/producer/core/task.rb +++ b/lib/producer/core/task.rb @@ -16,6 +16,7 @@ module Producer extend Forwardable def_delegators :@name, :to_s def_delegators :@env, :target + def_delegator :@env, :[]=, :set def_delegator :@env, :[], :get def_delegator :@env, :key?, :set? def_delegator :@env, :recipe_argv diff --git a/spec/producer/core/task_spec.rb b/spec/producer/core/task_spec.rb index cbce7e7..a8836bd 100644 --- a/spec/producer/core/task_spec.rb +++ b/spec/producer/core/task_spec.rb @@ -152,6 +152,13 @@ module Producer::Core end end + describe '#set' do + it 'sets a value in the registry' do + task.set :some_key, :some_value + expect(task.get :some_key).to eq :some_value + end + end + describe '#get' do before { env[:some_key] = :some_value }