diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2018-07-11 12:57:34 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2018-07-11 12:57:34 -0700 |
commit | a65cb52db5985e602a46f5375295761b6f04bb68 (patch) | |
tree | aa89a96750b8d4117934a8624c0fc989c5e83215 | |
parent | c43316fd69daa98e8f1b713622428b0f75da5f1f (diff) | |
download | mixlib-config-a65cb52db5985e602a46f5375295761b6f04bb68.tar.gz |
test+fix config contexts
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r-- | lib/mixlib/config.rb | 36 | ||||
-rw-r--r-- | spec/mixlib/config_spec.rb | 9 |
2 files changed, 27 insertions, 18 deletions
diff --git a/lib/mixlib/config.rb b/lib/mixlib/config.rb index 3ef06e8..aa56cea 100644 --- a/lib/mixlib/config.rb +++ b/lib/mixlib/config.rb @@ -555,6 +555,25 @@ module Mixlib internal_get_or_set(method_symbol, *args) end + protected + + # Given a (nested) Hash, apply it to the config object and any contexts. + # + # This is preferable to converting it to the string representation with + # the #to_dotted_hash method above. + # + # === Parameters + # hash<Hash>:: The hash to apply to the config oject + def apply_nested_hash(hash) + hash.each do |k, v| + if v.is_a? Hash + internal_get(k.to_sym).apply_nested_hash(v) + else + internal_set(k.to_sym, v) + end + end + end + private # Given a (nested) Hash, turn it into a single top-level hash using dots as @@ -578,23 +597,6 @@ module Mixlib end end - # Given a (nested) Hash, apply it to the config object and any contexts. - # - # This is preferable to converting it to the string representation with - # the #to_dotted_hash method above. - # - # === Parameters - # hash<Hash>:: The hash to apply to the config oject - def apply_nested_hash(hash) - hash.each do |k, v| - if v.is_a? Hash - internal_get(k.to_sym).apply_nested_hash(v) - else - internal_set(k.to_sym, v) - end - end - end - # Internal dispatch setter for config values. # # === Parameters diff --git a/spec/mixlib/config_spec.rb b/spec/mixlib/config_spec.rb index 1786789..ca86b01 100644 --- a/spec/mixlib/config_spec.rb +++ b/spec/mixlib/config_spec.rb @@ -1278,13 +1278,20 @@ alpha = "beta" { "alpha" => "beta", "foo" => %w{ bar baz matazz}, + "bar" => { "baz" => { "fizz" => "buzz" } }, } end - it "translates the Hash into method-style" do + it "configures the config object from a hash" do + ConfigIt.config_context :bar do + config_context :baz do + default :fizz, "quux" + end + end ConfigIt.from_hash(hash) expect(ConfigIt.foo).to eql(%w{ bar baz matazz }) expect(ConfigIt.alpha).to eql("beta") + expect(ConfigIt[:bar][:baz][:fizz]).to eql("buzz") end end end |