spec/mixlib/config_spec.rb in mixlib-config-2.2.8 vs spec/mixlib/config_spec.rb in mixlib-config-2.2.10

- old
+ new

@@ -1,8 +1,8 @@ # # Author:: Adam Jacob (<adam@chef.io>) -# Copyright:: Copyright (c) 2008-2016 Chef Software, Inc. +# Copyright:: Copyright (c) 2008-2018, Chef Software Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at @@ -140,11 +140,11 @@ describe "when a block has been used to set config values" do before do ConfigIt.configure { |c| c[:cookbook_path] = "monkey_rabbit"; c[:otherthing] = "boo" } end - { :cookbook_path => "monkey_rabbit", :otherthing => "boo" }.each do |k, v| + { cookbook_path: "monkey_rabbit", otherthing: "boo" }.each do |k, v| it "allows you to retrieve the config value for #{k} via []" do expect(ConfigIt[k]).to eql(v) end it "allows you to retrieve the config value for #{k} via method_missing" do expect(ConfigIt.send(k)).to eql(v) @@ -160,10 +160,16 @@ expect(ConfigIt.has_key?(:monkey)).to be false ConfigIt[:monkey] = "gotcha" expect(ConfigIt.has_key?(:monkey)).to be true end + it "returns true or false with key?" do + expect(ConfigIt.key?(:monkey2)).to be false + ConfigIt[:monkey2] = "gotcha" + expect(ConfigIt.key?(:monkey2)).to be true + end + describe "when a class method override writer exists" do before do @klass = Class.new @klass.extend(::Mixlib::Config) @klass.class_eval do @@ -299,29 +305,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => 4 }) + expect(@klass.save(true)).to eql({ attr: 4 }) end it "saves the new value if it gets set" do @klass.attr 5 - expect((saved = @klass.save)).to eql({ :attr => 5 }) + expect((saved = @klass.save)).to eql({ attr: 5 }) @klass.reset expect(@klass.attr).to eql(4) @klass.restore(saved) expect(@klass.attr).to eql(5) end it "saves the new value even if it is set to its default value" do @klass.attr 4 - expect((saved = @klass.save)).to eql({ :attr => 4 }) + expect((saved = @klass.save)).to eql({ attr: 4 }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => 4 }) + expect(@klass.save).to eql({ attr: 4 }) end end describe "When config has a default value block" do before :each do @@ -367,29 +373,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => 8, :x => 4 }) + expect(@klass.save(true)).to eql({ attr: 8, x: 4 }) end it "saves the new value if it gets set" do @klass.attr 5 - expect((saved = @klass.save)).to eql({ :attr => 5 }) + expect((saved = @klass.save)).to eql({ attr: 5 }) @klass.reset expect(@klass.attr).to eql(8) @klass.restore(saved) expect(@klass.attr).to eql(5) end it "saves the new value even if it is set to its default value" do @klass.attr 8 - expect((saved = @klass.save)).to eql({ :attr => 8 }) + expect((saved = @klass.save)).to eql({ attr: 8 }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => 8 }) + expect(@klass.save).to eql({ attr: 8 }) end end describe "When config has an array default value" do before :each do @@ -408,29 +414,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => [] }) + expect(@klass.save(true)).to eql({ attr: [] }) end it "saves the new value if it gets set" do @klass.attr << "x" - expect((saved = @klass.save)).to eql({ :attr => [ "x" ] }) + expect((saved = @klass.save)).to eql({ attr: [ "x" ] }) @klass.reset expect(@klass.attr).to eql([]) @klass.restore(saved) expect(@klass.attr).to eql([ "x" ]) end it "saves the new value even if it is set to its default value" do @klass.attr = [] - expect((saved = @klass.save)).to eql({ :attr => [] }) + expect((saved = @klass.save)).to eql({ attr: [] }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => [] }) + expect(@klass.save).to eql({ attr: [] }) end end describe "When config has a hash default value" do before :each do @@ -449,29 +455,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => {} }) + expect(@klass.save(true)).to eql({ attr: {} }) end it "saves the new value if it gets set" do @klass.attr[:hi] = "lo" - expect((saved = @klass.save)).to eql({ :attr => { :hi => "lo" } }) + expect((saved = @klass.save)).to eql({ attr: { hi: "lo" } }) @klass.reset expect(@klass.attr).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => { :hi => "lo" } }) + expect(@klass.save).to eql({ attr: { hi: "lo" } }) end it "saves the new value even if it is set to its default value" do @klass.attr = {} - expect((saved = @klass.save)).to eql({ :attr => {} }) + expect((saved = @klass.save)).to eql({ attr: {} }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => {} }) + expect(@klass.save).to eql({ attr: {} }) end end describe "When config has a string default value" do before :each do @@ -490,29 +496,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => "hello" }) + expect(@klass.save(true)).to eql({ attr: "hello" }) end it "saves the new value if it gets set" do @klass.attr << " world" - expect((saved = @klass.save)).to eql({ :attr => "hello world" }) + expect((saved = @klass.save)).to eql({ attr: "hello world" }) @klass.reset expect(@klass.attr).to eql("hello") @klass.restore(saved) expect(@klass.attr).to eql("hello world") end it "saves the new value even if it is set to its default value" do @klass.attr "hello world" - expect((saved = @klass.save)).to eql({ :attr => "hello world" }) + expect((saved = @klass.save)).to eql({ attr: "hello world" }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => "hello world" }) + expect(@klass.save).to eql({ attr: "hello world" }) end end describe "When config has a a default value block" do before :each do @@ -552,29 +558,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => 4 }) + expect(@klass.save(true)).to eql({ attr: 4 }) end it "saves the new value if it gets set" do @klass.attr 5 - expect((saved = @klass.save)).to eql({ :attr => 5 }) + expect((saved = @klass.save)).to eql({ attr: 5 }) @klass.reset expect(@klass.attr).to eql(4) @klass.restore(saved) expect(@klass.attr).to eql(5) end it "saves the new value even if it is set to its default value" do @klass.attr 4 - expect((saved = @klass.save)).to eql({ :attr => 4 }) + expect((saved = @klass.save)).to eql({ attr: 4 }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => 4 }) + expect(@klass.save).to eql({ attr: 4 }) end end describe "When a configurable exists with writer and default value" do before :each do @@ -629,29 +635,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => 4 }) + expect(@klass.save(true)).to eql({ attr: 4 }) end it "saves the new value if it gets set" do @klass.attr 5 - expect((saved = @klass.save)).to eql({ :attr => 10 }) + expect((saved = @klass.save)).to eql({ attr: 10 }) @klass.reset expect(@klass.attr).to eql(4) @klass.restore(saved) expect(@klass.attr).to eql(10) end it "saves the new value even if it is set to its default value" do @klass.attr 4 - expect((saved = @klass.save)).to eql({ :attr => 8 }) + expect((saved = @klass.save)).to eql({ attr: 8 }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => 8 }) + expect(@klass.save).to eql({ attr: 8 }) end end describe "When a configurable exists with writer and default value set in chained form" do before :each do @@ -703,29 +709,29 @@ it "save should not save anything for it" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :attr => 4 }) + expect(@klass.save(true)).to eql({ attr: 4 }) end it "saves the new value if it gets set" do @klass.attr 5 - expect((saved = @klass.save)).to eql({ :attr => 10 }) + expect((saved = @klass.save)).to eql({ attr: 10 }) @klass.reset expect(@klass.attr).to eql(4) @klass.restore(saved) expect(@klass.attr).to eql(10) end it "saves the new value even if it is set to its default value" do @klass.attr 2 - expect((saved = @klass.save)).to eql({ :attr => 4 }) + expect((saved = @klass.save)).to eql({ attr: 4 }) @klass.reset expect(@klass.save).to eql({}) @klass.restore(saved) - expect(@klass.save).to eql({ :attr => 4 }) + expect(@klass.save).to eql({ attr: 4 }) end end describe "When a configurable exists with a context" do before :each do @@ -753,24 +759,24 @@ expect(@klass.x).to eql(10) expect(@klass.blah.x).to eql(5) end it "setting the entire context to a hash with default value overridden sets the value" do - @klass.blah = { :x => 10 } + @klass.blah = { x: 10 } expect(@klass.blah.x).to eql(10) end it "setting the entire context to a hash sets non-default values" do - @klass.blah = { :y => 10 } + @klass.blah = { y: 10 } expect(@klass.blah.x).to eql(5) expect(@klass.blah.y).to eql(10) end it "setting the entire context to a hash deletes any non-default values and resets default values" do @klass.blah.x = 10 @klass.blah.y = 10 - @klass.blah = { :z => 10 } + @klass.blah = { z: 10 } expect(@klass.blah.x).to eql(5) expect(@klass.blah.y).to be_nil expect(@klass.blah.z).to eql(10) end @@ -802,21 +808,21 @@ it "save should not save anything for it by default" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :blah => { :x => 5 } }) + expect(@klass.save(true)).to eql({ blah: { x: 5 } }) end it "saves any new values that are set in the context" do @klass.blah.x = 10 - expect((saved = @klass.save)).to eql({ :blah => { :x => 10 } }) + expect((saved = @klass.save)).to eql({ blah: { x: 10 } }) @klass.reset expect(@klass.blah.x).to eql(5) @klass.restore(saved) expect(@klass.blah.x).to eql(10) - expect(@klass.save).to eql({ :blah => { :x => 10 } }) + expect(@klass.save).to eql({ blah: { x: 10 } }) end # this tests existing (somewhat bizzare) behavior of mixlib-config where testing to # see if a key exists is equivalent to testing if the key has been set -- we can still # retrieve the default value if it was set. the code in chef/chef which merges @@ -878,41 +884,41 @@ it "save should not save anything for it by default" do expect(@klass.save).to eql({}) end it "save with include_defaults should save all defaults" do - expect(@klass.save(true)).to eql({ :blah => { :yarr => { :x => 5, :y => 6 } } }) + expect(@klass.save(true)).to eql({ blah: { yarr: { x: 5, y: 6 } } }) end it "saves any new values that are set in the context" do @klass.blah.yarr.x = 10 @klass.blah.yarr.y = 11 - expect((saved = @klass.save)).to eql({ :blah => { :yarr => { :x => 10, :y => 11 } } }) + expect((saved = @klass.save)).to eql({ blah: { yarr: { x: 10, y: 11 } } }) @klass.reset expect(@klass.blah.yarr.x).to eql(5) expect(@klass.blah.yarr.y).to eql(6) @klass.restore(saved) expect(@klass.blah.yarr.x).to eql(10) expect(@klass.blah.yarr.y).to eql(11) - expect(@klass.save).to eql({ :blah => { :yarr => { :x => 10, :y => 11 } } }) + expect(@klass.save).to eql({ blah: { yarr: { x: 10, y: 11 } } }) end it "restores defaults not included in saved data" do - @klass.restore( :blah => { :yarr => { :x => 10 } } ) + @klass.restore( blah: { yarr: { x: 10 } } ) expect(@klass.blah.yarr.x).to eql(10) expect(@klass.blah.yarr.y).to eql(6) end it "removes added properties not included in saved state" do @klass.blah.yarr.z = 12 - @klass.restore( :blah => { :yarr => { :x => 10 } } ) + @klass.restore( blah: { yarr: { x: 10 } } ) expect(@klass.blah.yarr.x).to eql(10) expect(@klass.blah.yarr.z).to eql(nil) end it "can set a config context from another context" do - @klass.blah.blyme = { :x => 7 } + @klass.blah.blyme = { x: 7 } blyme = @klass.blah.blyme @klass.blah.yarr.x = 12 @klass.blah.yarr = blyme expect(@klass.blah.yarr.x).to eql(7) end @@ -932,11 +938,11 @@ it "save does not save the hash for the config_context" do expect(@klass.save).to eql({}) end it "save with defaults saves the hash for the config_context" do - expect(@klass.save(true)).to eql({ :blah => {} }) + expect(@klass.save(true)).to eql({ blah: {} }) end end describe "When a config_context with no configurables exists" do before :each do @@ -950,10 +956,10 @@ it "save does not save the hash for the config_context" do expect(@klass.save).to eql({}) end it "save with defaults saves the hash for the config_context" do - expect(@klass.save(true)).to eql({ :blah => {} }) + expect(@klass.save(true)).to eql({ blah: {} }) end end describe "When a nested context has strict mode on" do class StrictClass2