Fail when accessing registry with invalid key
This commit is contained in:
parent
ff30b7474c
commit
2d4e04b2e5
@ -34,3 +34,15 @@ Feature: key/value registry
|
|||||||
"""
|
"""
|
||||||
When I successfully execute the recipe
|
When I successfully execute the recipe
|
||||||
Then the output must contain "some_value"
|
Then the output must contain "some_value"
|
||||||
|
|
||||||
|
Scenario: `get' keyword should trigger an error when given invalid key
|
||||||
|
Given a recipe with:
|
||||||
|
"""
|
||||||
|
task :some_task do
|
||||||
|
echo get :no_key
|
||||||
|
echo 'after_fail'
|
||||||
|
end
|
||||||
|
"""
|
||||||
|
When I execute the recipe
|
||||||
|
Then the output must not contain "after_fail"
|
||||||
|
And the output must match /\A\w+Error:\s+:no_key/
|
||||||
|
@ -18,7 +18,9 @@ module Producer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def [](key)
|
def [](key)
|
||||||
@registry[key]
|
@registry.fetch key
|
||||||
|
rescue KeyError
|
||||||
|
fail RegistryKeyError, key.inspect
|
||||||
end
|
end
|
||||||
alias get []
|
alias get []
|
||||||
|
|
||||||
|
@ -4,5 +4,6 @@ module Producer
|
|||||||
RuntimeError = Class.new(RuntimeError)
|
RuntimeError = Class.new(RuntimeError)
|
||||||
ConditionNotMetError = Class.new(Error)
|
ConditionNotMetError = Class.new(Error)
|
||||||
RemoteCommandExecutionError = Class.new(RuntimeError)
|
RemoteCommandExecutionError = Class.new(RuntimeError)
|
||||||
|
RegistryKeyError = Class.new(RuntimeError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -107,6 +107,10 @@ module Producer::Core
|
|||||||
it 'returns the value indexed by given key from the registry' do
|
it 'returns the value indexed by given key from the registry' do
|
||||||
expect(env[:some_key]).to eq :some_value
|
expect(env[:some_key]).to eq :some_value
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'raises an error when given invalid key' do
|
||||||
|
expect { env[:no_key] }.to raise_error RegistryKeyError
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#[]=' do
|
describe '#[]=' do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user