chef 11.16.0.rc.0 → 11.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/chef/exceptions.rb +2 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/provider/user/dscl.rb +32 -28
- data/lib/chef/resource/dsc_script.rb +18 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +33 -78
- data/lib/chef/version.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +4 -3
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/provider/dsc_script_spec.rb +5 -1
- data/spec/unit/provider/user/dscl_spec.rb +2 -1
- data/spec/unit/resource/dsc_script_spec.rb +90 -57
- data/spec/unit/util/dsc/configuration_generator_spec.rb +31 -33
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +18 -27
- metadata +61 -61
| @@ -20,28 +20,28 @@ require 'chef' | |
| 20 20 | 
             
            require 'chef/util/dsc/configuration_generator'
         | 
| 21 21 |  | 
| 22 22 | 
             
            describe Chef::Util::DSC::ConfigurationGenerator do
         | 
| 23 | 
            -
               | 
| 24 | 
            -
                 | 
| 25 | 
            -
                 | 
| 23 | 
            +
              let(:conf_man) do
         | 
| 24 | 
            +
                node = Chef::Node.new
         | 
| 25 | 
            +
                Chef::Util::DSC::ConfigurationGenerator.new(node, 'tmp')
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              describe '#validate_configuration_name!' do
         | 
| 29 29 | 
             
                it 'should not raise an error if a name contains all upper case letters' do
         | 
| 30 | 
            -
                   | 
| 30 | 
            +
                  conf_man.send(:validate_configuration_name!, "HELLO")
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 33 | 
             
                it 'should not raise an error if the name contains all lower case letters' do
         | 
| 34 | 
            -
                   | 
| 34 | 
            +
                  conf_man.send(:validate_configuration_name!, "hello")
         | 
| 35 35 | 
             
                end
         | 
| 36 36 |  | 
| 37 37 | 
             
                it 'should not raise an error if no special characters are used except _' do
         | 
| 38 | 
            -
                   | 
| 38 | 
            +
                  conf_man.send(:validate_configuration_name!, "hello_world")
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 41 | 
             
                %w{! @ # $ % ^ & * & * ( ) - = + \{ \} . ? < > \\ /}.each do |sym|
         | 
| 42 42 | 
             
                  it "raises an Argument error if it configuration name contains #{sym}" do
         | 
| 43 43 | 
             
                    expect {
         | 
| 44 | 
            -
                       | 
| 44 | 
            +
                      conf_man.send(:validate_configuration_name!, "Hello#{sym}")
         | 
| 45 45 | 
             
                    }.to raise_error(ArgumentError)
         | 
| 46 46 | 
             
                  end
         | 
| 47 47 | 
             
                end
         | 
| @@ -50,7 +50,7 @@ describe Chef::Util::DSC::ConfigurationGenerator do | |
| 50 50 | 
             
              describe "#get_merged_configuration_flags" do
         | 
| 51 51 | 
             
                context 'when strings are used as switches' do
         | 
| 52 52 | 
             
                  it 'should merge the hash if there are no restricted switches' do
         | 
| 53 | 
            -
                    merged =  | 
| 53 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, {'flag' => 'a'}, 'hello')
         | 
| 54 54 | 
             
                    merged.should include(:flag)
         | 
| 55 55 | 
             
                    merged[:flag].should eql('a')
         | 
| 56 56 | 
             
                    merged.should include(:outputpath)
         | 
| @@ -58,25 +58,25 @@ describe Chef::Util::DSC::ConfigurationGenerator do | |
| 58 58 |  | 
| 59 59 | 
             
                  it 'should raise an ArgumentError if you try to override outputpath' do
         | 
| 60 60 | 
             
                    expect {
         | 
| 61 | 
            -
                       | 
| 61 | 
            +
                      conf_man.send(:get_merged_configuration_flags!, {'outputpath' => 'a'}, 'hello')
         | 
| 62 62 | 
             
                    }.to raise_error(ArgumentError)
         | 
| 63 63 | 
             
                  end
         | 
| 64 64 |  | 
| 65 65 | 
             
                  it 'should be case insensitive for switches that are not allowed' do
         | 
| 66 66 | 
             
                    expect {
         | 
| 67 | 
            -
                       | 
| 67 | 
            +
                      conf_man.send(:get_merged_configuration_flags!, {'OutputPath' => 'a'}, 'hello')
         | 
| 68 68 | 
             
                    }.to raise_error(ArgumentError)
         | 
| 69 69 | 
             
                  end
         | 
| 70 70 |  | 
| 71 71 | 
             
                  it 'should be case insensitive to switches that are allowed' do
         | 
| 72 | 
            -
                    merged =  | 
| 72 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, {'FLAG' => 'a'}, 'hello')
         | 
| 73 73 | 
             
                    merged.should include(:flag)
         | 
| 74 74 | 
             
                  end
         | 
| 75 75 | 
             
                end
         | 
| 76 76 |  | 
| 77 77 | 
             
                context 'when symbols are used as switches' do
         | 
| 78 78 | 
             
                  it 'should merge the hash if there are no restricted switches' do
         | 
| 79 | 
            -
                    merged =  | 
| 79 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, {:flag => 'a'}, 'hello')
         | 
| 80 80 | 
             
                    merged.should include(:flag)
         | 
| 81 81 | 
             
                    merged[:flag].should eql('a')
         | 
| 82 82 | 
             
                    merged.should include(:outputpath)
         | 
| @@ -84,31 +84,31 @@ describe Chef::Util::DSC::ConfigurationGenerator do | |
| 84 84 |  | 
| 85 85 | 
             
                  it 'should raise an ArgumentError if you try to override outputpath' do
         | 
| 86 86 | 
             
                    expect {
         | 
| 87 | 
            -
                       | 
| 87 | 
            +
                      conf_man.send(:get_merged_configuration_flags!, {:outputpath => 'a'}, 'hello')
         | 
| 88 88 | 
             
                    }.to raise_error(ArgumentError)
         | 
| 89 89 | 
             
                  end
         | 
| 90 90 |  | 
| 91 91 | 
             
                  it 'should be case insensitive for switches that are not allowed' do
         | 
| 92 92 | 
             
                    expect {
         | 
| 93 | 
            -
                       | 
| 93 | 
            +
                      conf_man.send(:get_merged_configuration_flags!, {:OutputPath => 'a'}, 'hello')
         | 
| 94 94 | 
             
                    }.to raise_error(ArgumentError)
         | 
| 95 95 | 
             
                  end
         | 
| 96 96 |  | 
| 97 97 | 
             
                  it 'should be case insensitive to switches that are allowed' do
         | 
| 98 | 
            -
                    merged =  | 
| 98 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, {:FLAG => 'a'}, 'hello')
         | 
| 99 99 | 
             
                    merged.should include(:flag)
         | 
| 100 100 | 
             
                  end
         | 
| 101 101 | 
             
                end
         | 
| 102 102 |  | 
| 103 103 | 
             
                context 'when there are no flags' do
         | 
| 104 104 | 
             
                  it 'should supply an output path if configuration_flags is an empty hash' do
         | 
| 105 | 
            -
                    merged =  | 
| 105 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, {}, 'hello')
         | 
| 106 106 | 
             
                    merged.should include(:outputpath)
         | 
| 107 107 | 
             
                    merged.length.should eql(1)
         | 
| 108 108 | 
             
                  end
         | 
| 109 109 |  | 
| 110 110 | 
             
                  it 'should supply an output path if configuration_flags is an empty hash' do
         | 
| 111 | 
            -
                    merged =  | 
| 111 | 
            +
                    merged = conf_man.send(:get_merged_configuration_flags!, nil, 'hello')
         | 
| 112 112 | 
             
                    merged.should include(:outputpath)
         | 
| 113 113 | 
             
                    merged.length.should eql(1)
         | 
| 114 114 | 
             
                  end
         | 
| @@ -122,18 +122,16 @@ describe Chef::Util::DSC::ConfigurationGenerator do | |
| 122 122 | 
             
              end
         | 
| 123 123 |  | 
| 124 124 | 
             
              describe '#write_document_generation_script' do
         | 
| 125 | 
            -
                 | 
| 126 | 
            -
                  @file_like_object = double("file like object")
         | 
| 127 | 
            -
                end
         | 
| 125 | 
            +
                let(:file_like_object) { double("file like object") }
         | 
| 128 126 |  | 
| 129 127 | 
             
                it "should write the input to a file" do
         | 
| 130 | 
            -
                  File. | 
| 131 | 
            -
                   | 
| 132 | 
            -
                  File.stub(:join) do |a, b|
         | 
| 128 | 
            +
                  allow(File).to receive(:open).and_yield(file_like_object)
         | 
| 129 | 
            +
                  allow(File).to receive(:join) do |a, b|
         | 
| 133 130 | 
             
                    [a,b].join("++")
         | 
| 134 131 | 
             
                  end
         | 
| 135 | 
            -
                   | 
| 136 | 
            -
                   | 
| 132 | 
            +
                  allow(file_like_object).to receive(:write)
         | 
| 133 | 
            +
                  conf_man.send(:write_document_generation_script, 'file', 'hello')
         | 
| 134 | 
            +
                  expect(file_like_object).to have_received(:write)
         | 
| 137 135 | 
             
                end
         | 
| 138 136 | 
             
              end
         | 
| 139 137 |  | 
| @@ -141,26 +139,26 @@ describe Chef::Util::DSC::ConfigurationGenerator do | |
| 141 139 | 
             
                it "should find the mof file" do
         | 
| 142 140 | 
             
                  # These tests seem way too implementation specific. Unfortunatly, File and Dir
         | 
| 143 141 | 
             
                  # need to be mocked because they are OS specific
         | 
| 144 | 
            -
             | 
| 145 | 
            -
                  File.stub(:join) do |a, b|
         | 
| 142 | 
            +
                  allow(File).to receive(:join) do |a, b|
         | 
| 146 143 | 
             
                    [a,b].join("++")
         | 
| 147 144 | 
             
                  end
         | 
| 148 | 
            -
             | 
| 149 | 
            -
                   | 
| 145 | 
            +
             | 
| 146 | 
            +
                  allow(Dir).to receive(:entries).with("tmp++hello") {['f1', 'f2', 'hello.mof', 'f3']}
         | 
| 147 | 
            +
                  expect(conf_man.send(:find_configuration_document, 'hello')).to eql('tmp++hello++hello.mof')
         | 
| 150 148 | 
             
                end
         | 
| 151 149 |  | 
| 152 150 | 
             
                it "should return nil if the mof file is not found" do
         | 
| 153 | 
            -
                  File. | 
| 151 | 
            +
                  allow(File).to receive(:join) do |a, b|
         | 
| 154 152 | 
             
                    [a,b].join("++")
         | 
| 155 153 | 
             
                  end
         | 
| 156 | 
            -
                  Dir. | 
| 157 | 
            -
                  expect( | 
| 154 | 
            +
                  allow(Dir).to receive(:entries).with("tmp++hello") {['f1', 'f2', 'f3']}
         | 
| 155 | 
            +
                  expect(conf_man.send(:find_configuration_document, 'hello')).to be_nil
         | 
| 158 156 | 
             
                end
         | 
| 159 157 | 
             
              end
         | 
| 160 158 |  | 
| 161 159 | 
             
              describe "#configuration_code" do
         | 
| 162 160 | 
             
                it "should build dsc" do
         | 
| 163 | 
            -
                  dsc =  | 
| 161 | 
            +
                  dsc = conf_man.send(:configuration_code, 'archive{}', 'hello')
         | 
| 164 162 | 
             
                  found_configuration = false
         | 
| 165 163 | 
             
                  dsc.split(';').each do |command|
         | 
| 166 164 | 
             
                    if command.downcase =~ /\s*configuration\s+'hello'\s*\{\s*node\s+'localhost'\s*\{\s*archive\s*\{\s*\}\s*\}\s*\}\s*/
         | 
| @@ -103,49 +103,40 @@ EOF | |
| 103 103 | 
             
              end
         | 
| 104 104 |  | 
| 105 105 | 
             
              context 'Incorrectly formatted output from LCM' do
         | 
| 106 | 
            -
                it 'should  | 
| 107 | 
            -
                  str =  | 
| 106 | 
            +
                it 'should allow missing a [End Resource] when its the last one and still find all the resource' do
         | 
| 107 | 
            +
                  str = <<-EOF
         | 
| 108 108 | 
             
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 109 | 
            -
            logtype: [machinename]: LCM:  [ Start  Resource ] | 
| 109 | 
            +
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name]
         | 
| 110 110 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 111 | 
            -
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 112 | 
            -
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 113 111 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| 114 | 
            -
            logtype: [machinename]: LCM:  [  | 
| 115 | 
            -
            logtype: [machinename]: LCM:  [ End     | 
| 116 | 
            -
             | 
| 117 | 
            -
                  expect { Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str) }.to(raise_error(
         | 
| 118 | 
            -
                    Chef::Util::DSC::LocalConfigurationManager::Parser::ParseException))
         | 
| 119 | 
            -
                end
         | 
| 120 | 
            -
             | 
| 121 | 
            -
                it 'should raise an exception if a test is found inside a test' do
         | 
| 122 | 
            -
                  str = <<EOF
         | 
| 123 | 
            -
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 124 | 
            -
            logtype: [machinename]: LCM:  [ Start  Resource ] [name]
         | 
| 125 | 
            -
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 112 | 
            +
            logtype: [machinename]: LCM:  [ Skip   Set      ]
         | 
| 113 | 
            +
            logtype: [machinename]: LCM:  [ End    Resource ]
         | 
| 114 | 
            +
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name2]
         | 
| 126 115 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 127 116 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| 128 | 
            -
            logtype: [machinename]: LCM:  [  | 
| 129 | 
            -
            logtype: [machinename]: LCM:  [ End     | 
| 117 | 
            +
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 118 | 
            +
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 130 119 | 
             
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 131 120 | 
             
            EOF
         | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 121 | 
            +
             | 
| 122 | 
            +
                  resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
         | 
| 123 | 
            +
                  resources[0].changes_state?.should be_false
         | 
| 124 | 
            +
                  resources[1].changes_state?.should be_true
         | 
| 134 125 | 
             
                end
         | 
| 135 126 |  | 
| 136 | 
            -
                it 'should allow missing a [End Resource] when its the  | 
| 127 | 
            +
                it 'should allow missing a [End Resource] when its the first one and still find all the resource' do
         | 
| 137 128 | 
             
                  str = <<-EOF
         | 
| 138 129 | 
             
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 139 130 | 
             
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name]
         | 
| 140 131 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 141 132 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| 142 133 | 
             
            logtype: [machinename]: LCM:  [ Skip   Set      ]
         | 
| 143 | 
            -
            logtype: [machinename]: LCM:  [ End    Resource ]
         | 
| 144 134 | 
             
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name2]
         | 
| 145 135 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 146 136 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| 147 137 | 
             
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 148 138 | 
             
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 139 | 
            +
            logtype: [machinename]: LCM:  [ End    Resource ]
         | 
| 149 140 | 
             
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 150 141 | 
             
            EOF
         | 
| 151 142 |  | 
| @@ -154,13 +145,12 @@ EOF | |
| 154 145 | 
             
                  resources[1].changes_state?.should be_true
         | 
| 155 146 | 
             
                end
         | 
| 156 147 |  | 
| 157 | 
            -
                it 'should allow missing  | 
| 148 | 
            +
                it 'should allow missing set and end resource and assume an unconverged resource in this case' do
         | 
| 158 149 | 
             
                  str = <<-EOF
         | 
| 159 150 | 
             
            logtype: [machinename]: LCM:  [ Start  Set      ]
         | 
| 160 151 | 
             
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name]
         | 
| 161 152 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 162 153 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| 163 | 
            -
            logtype: [machinename]: LCM:  [ Skip   Set      ]
         | 
| 164 154 | 
             
            logtype: [machinename]: LCM:  [ Start  Resource ]  [name2]
         | 
| 165 155 | 
             
            logtype: [machinename]: LCM:  [ Start  Test     ]
         | 
| 166 156 | 
             
            logtype: [machinename]: LCM:  [ End    Test     ]
         | 
| @@ -169,10 +159,11 @@ logtype: [machinename]: LCM:  [ End    Set      ] | |
| 169 159 | 
             
            logtype: [machinename]: LCM:  [ End    Resource ]
         | 
| 170 160 | 
             
            logtype: [machinename]: LCM:  [ End    Set      ]
         | 
| 171 161 | 
             
            EOF
         | 
| 172 | 
            -
             | 
| 173 162 | 
             
                  resources = Chef::Util::DSC::LocalConfigurationManager::Parser::parse(str)
         | 
| 174 | 
            -
                  resources[0].changes_state?.should  | 
| 163 | 
            +
                  resources[0].changes_state?.should be_true
         | 
| 164 | 
            +
                  resources[0].name.should eql('[name]')
         | 
| 175 165 | 
             
                  resources[1].changes_state?.should be_true
         | 
| 166 | 
            +
                  resources[1].name.should eql('[name2]')
         | 
| 176 167 | 
             
                end
         | 
| 177 168 | 
             
              end
         | 
| 178 169 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,359 +1,359 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: chef
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 11.16.0 | 
| 4 | 
            +
              version: 11.16.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adam Jacob
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-09- | 
| 11 | 
            +
            date: 2014-09-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: mixlib-config
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - ~>
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: '2.0'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - ~>
         | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 26 | 
             
                    version: '2.0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: mixlib-cli
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - ~>
         | 
| 31 | 
            +
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: '1.4'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - ~>
         | 
| 38 | 
            +
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '1.4'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: mixlib-log
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 | 
            -
                - - ~>
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 47 | 
             
                    version: '1.3'
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 | 
            -
                - - ~>
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '1.3'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: mixlib-authentication
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - ~>
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 61 | 
             
                    version: '1.3'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - ~>
         | 
| 66 | 
            +
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 68 | 
             
                    version: '1.3'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: mixlib-shellout
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - - ~>
         | 
| 73 | 
            +
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 75 | 
             
                    version: '1.4'
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - - ~>
         | 
| 80 | 
            +
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '1.4'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: ohai
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - -  | 
| 87 | 
            +
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: 7.4 | 
| 89 | 
            +
                    version: '7.4'
         | 
| 90 90 | 
             
              type: :runtime
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 | 
            -
                - -  | 
| 94 | 
            +
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: 7.4 | 
| 96 | 
            +
                    version: '7.4'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 98 | 
             
              name: rest-client
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 | 
            -
                - -  | 
| 101 | 
            +
                - - ">="
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 103 | 
             
                    version: 1.0.4
         | 
| 104 | 
            -
                - - <=
         | 
| 104 | 
            +
                - - "<="
         | 
| 105 105 | 
             
                  - !ruby/object:Gem::Version
         | 
| 106 106 | 
             
                    version: 1.6.7
         | 
| 107 107 | 
             
              type: :runtime
         | 
| 108 108 | 
             
              prerelease: false
         | 
| 109 109 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 110 110 | 
             
                requirements:
         | 
| 111 | 
            -
                - -  | 
| 111 | 
            +
                - - ">="
         | 
| 112 112 | 
             
                  - !ruby/object:Gem::Version
         | 
| 113 113 | 
             
                    version: 1.0.4
         | 
| 114 | 
            -
                - - <=
         | 
| 114 | 
            +
                - - "<="
         | 
| 115 115 | 
             
                  - !ruby/object:Gem::Version
         | 
| 116 116 | 
             
                    version: 1.6.7
         | 
| 117 117 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 118 118 | 
             
              name: mime-types
         | 
| 119 119 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 120 120 | 
             
                requirements:
         | 
| 121 | 
            -
                - - ~>
         | 
| 121 | 
            +
                - - "~>"
         | 
| 122 122 | 
             
                  - !ruby/object:Gem::Version
         | 
| 123 123 | 
             
                    version: '1.16'
         | 
| 124 124 | 
             
              type: :runtime
         | 
| 125 125 | 
             
              prerelease: false
         | 
| 126 126 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 127 127 | 
             
                requirements:
         | 
| 128 | 
            -
                - - ~>
         | 
| 128 | 
            +
                - - "~>"
         | 
| 129 129 | 
             
                  - !ruby/object:Gem::Version
         | 
| 130 130 | 
             
                    version: '1.16'
         | 
| 131 131 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 132 132 | 
             
              name: ffi-yajl
         | 
| 133 133 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 134 134 | 
             
                requirements:
         | 
| 135 | 
            -
                - - ~>
         | 
| 135 | 
            +
                - - "~>"
         | 
| 136 136 | 
             
                  - !ruby/object:Gem::Version
         | 
| 137 137 | 
             
                    version: '1.0'
         | 
| 138 138 | 
             
              type: :runtime
         | 
| 139 139 | 
             
              prerelease: false
         | 
| 140 140 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 141 141 | 
             
                requirements:
         | 
| 142 | 
            -
                - - ~>
         | 
| 142 | 
            +
                - - "~>"
         | 
| 143 143 | 
             
                  - !ruby/object:Gem::Version
         | 
| 144 144 | 
             
                    version: '1.0'
         | 
| 145 145 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 146 146 | 
             
              name: net-ssh
         | 
| 147 147 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 148 148 | 
             
                requirements:
         | 
| 149 | 
            -
                - - ~>
         | 
| 149 | 
            +
                - - "~>"
         | 
| 150 150 | 
             
                  - !ruby/object:Gem::Version
         | 
| 151 151 | 
             
                    version: '2.6'
         | 
| 152 152 | 
             
              type: :runtime
         | 
| 153 153 | 
             
              prerelease: false
         | 
| 154 154 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 155 155 | 
             
                requirements:
         | 
| 156 | 
            -
                - - ~>
         | 
| 156 | 
            +
                - - "~>"
         | 
| 157 157 | 
             
                  - !ruby/object:Gem::Version
         | 
| 158 158 | 
             
                    version: '2.6'
         | 
| 159 159 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 160 160 | 
             
              name: net-ssh-multi
         | 
| 161 161 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 162 162 | 
             
                requirements:
         | 
| 163 | 
            -
                - - ~>
         | 
| 163 | 
            +
                - - "~>"
         | 
| 164 164 | 
             
                  - !ruby/object:Gem::Version
         | 
| 165 165 | 
             
                    version: '1.1'
         | 
| 166 166 | 
             
              type: :runtime
         | 
| 167 167 | 
             
              prerelease: false
         | 
| 168 168 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 169 169 | 
             
                requirements:
         | 
| 170 | 
            -
                - - ~>
         | 
| 170 | 
            +
                - - "~>"
         | 
| 171 171 | 
             
                  - !ruby/object:Gem::Version
         | 
| 172 172 | 
             
                    version: '1.1'
         | 
| 173 173 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 174 174 | 
             
              name: highline
         | 
| 175 175 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 176 176 | 
             
                requirements:
         | 
| 177 | 
            -
                - - ~>
         | 
| 177 | 
            +
                - - "~>"
         | 
| 178 178 | 
             
                  - !ruby/object:Gem::Version
         | 
| 179 179 | 
             
                    version: '1.6'
         | 
| 180 | 
            -
                - -  | 
| 180 | 
            +
                - - ">="
         | 
| 181 181 | 
             
                  - !ruby/object:Gem::Version
         | 
| 182 182 | 
             
                    version: 1.6.9
         | 
| 183 183 | 
             
              type: :runtime
         | 
| 184 184 | 
             
              prerelease: false
         | 
| 185 185 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 186 186 | 
             
                requirements:
         | 
| 187 | 
            -
                - - ~>
         | 
| 187 | 
            +
                - - "~>"
         | 
| 188 188 | 
             
                  - !ruby/object:Gem::Version
         | 
| 189 189 | 
             
                    version: '1.6'
         | 
| 190 | 
            -
                - -  | 
| 190 | 
            +
                - - ">="
         | 
| 191 191 | 
             
                  - !ruby/object:Gem::Version
         | 
| 192 192 | 
             
                    version: 1.6.9
         | 
| 193 193 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 194 194 | 
             
              name: erubis
         | 
| 195 195 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 196 196 | 
             
                requirements:
         | 
| 197 | 
            -
                - - ~>
         | 
| 197 | 
            +
                - - "~>"
         | 
| 198 198 | 
             
                  - !ruby/object:Gem::Version
         | 
| 199 199 | 
             
                    version: '2.7'
         | 
| 200 200 | 
             
              type: :runtime
         | 
| 201 201 | 
             
              prerelease: false
         | 
| 202 202 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 203 203 | 
             
                requirements:
         | 
| 204 | 
            -
                - - ~>
         | 
| 204 | 
            +
                - - "~>"
         | 
| 205 205 | 
             
                  - !ruby/object:Gem::Version
         | 
| 206 206 | 
             
                    version: '2.7'
         | 
| 207 207 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 208 208 | 
             
              name: diff-lcs
         | 
| 209 209 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 210 210 | 
             
                requirements:
         | 
| 211 | 
            -
                - - ~>
         | 
| 211 | 
            +
                - - "~>"
         | 
| 212 212 | 
             
                  - !ruby/object:Gem::Version
         | 
| 213 213 | 
             
                    version: '1.2'
         | 
| 214 | 
            -
                - -  | 
| 214 | 
            +
                - - ">="
         | 
| 215 215 | 
             
                  - !ruby/object:Gem::Version
         | 
| 216 216 | 
             
                    version: 1.2.4
         | 
| 217 217 | 
             
              type: :runtime
         | 
| 218 218 | 
             
              prerelease: false
         | 
| 219 219 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 220 220 | 
             
                requirements:
         | 
| 221 | 
            -
                - - ~>
         | 
| 221 | 
            +
                - - "~>"
         | 
| 222 222 | 
             
                  - !ruby/object:Gem::Version
         | 
| 223 223 | 
             
                    version: '1.2'
         | 
| 224 | 
            -
                - -  | 
| 224 | 
            +
                - - ">="
         | 
| 225 225 | 
             
                  - !ruby/object:Gem::Version
         | 
| 226 226 | 
             
                    version: 1.2.4
         | 
| 227 227 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 228 228 | 
             
              name: chef-zero
         | 
| 229 229 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 230 230 | 
             
                requirements:
         | 
| 231 | 
            -
                - - ~>
         | 
| 231 | 
            +
                - - "~>"
         | 
| 232 232 | 
             
                  - !ruby/object:Gem::Version
         | 
| 233 233 | 
             
                    version: '2.1'
         | 
| 234 | 
            -
                - -  | 
| 234 | 
            +
                - - ">="
         | 
| 235 235 | 
             
                  - !ruby/object:Gem::Version
         | 
| 236 236 | 
             
                    version: 2.1.4
         | 
| 237 237 | 
             
              type: :runtime
         | 
| 238 238 | 
             
              prerelease: false
         | 
| 239 239 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 240 240 | 
             
                requirements:
         | 
| 241 | 
            -
                - - ~>
         | 
| 241 | 
            +
                - - "~>"
         | 
| 242 242 | 
             
                  - !ruby/object:Gem::Version
         | 
| 243 243 | 
             
                    version: '2.1'
         | 
| 244 | 
            -
                - -  | 
| 244 | 
            +
                - - ">="
         | 
| 245 245 | 
             
                  - !ruby/object:Gem::Version
         | 
| 246 246 | 
             
                    version: 2.1.4
         | 
| 247 247 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 248 248 | 
             
              name: pry
         | 
| 249 249 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 250 250 | 
             
                requirements:
         | 
| 251 | 
            -
                - - ~>
         | 
| 251 | 
            +
                - - "~>"
         | 
| 252 252 | 
             
                  - !ruby/object:Gem::Version
         | 
| 253 253 | 
             
                    version: '0.9'
         | 
| 254 254 | 
             
              type: :runtime
         | 
| 255 255 | 
             
              prerelease: false
         | 
| 256 256 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 257 257 | 
             
                requirements:
         | 
| 258 | 
            -
                - - ~>
         | 
| 258 | 
            +
                - - "~>"
         | 
| 259 259 | 
             
                  - !ruby/object:Gem::Version
         | 
| 260 260 | 
             
                    version: '0.9'
         | 
| 261 261 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 262 262 | 
             
              name: plist
         | 
| 263 263 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 264 264 | 
             
                requirements:
         | 
| 265 | 
            -
                - - ~>
         | 
| 265 | 
            +
                - - "~>"
         | 
| 266 266 | 
             
                  - !ruby/object:Gem::Version
         | 
| 267 267 | 
             
                    version: 3.1.0
         | 
| 268 268 | 
             
              type: :runtime
         | 
| 269 269 | 
             
              prerelease: false
         | 
| 270 270 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 271 271 | 
             
                requirements:
         | 
| 272 | 
            -
                - - ~>
         | 
| 272 | 
            +
                - - "~>"
         | 
| 273 273 | 
             
                  - !ruby/object:Gem::Version
         | 
| 274 274 | 
             
                    version: 3.1.0
         | 
| 275 275 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 276 276 | 
             
              name: rack
         | 
| 277 277 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 278 278 | 
             
                requirements:
         | 
| 279 | 
            -
                - -  | 
| 279 | 
            +
                - - ">="
         | 
| 280 280 | 
             
                  - !ruby/object:Gem::Version
         | 
| 281 281 | 
             
                    version: '0'
         | 
| 282 282 | 
             
              type: :development
         | 
| 283 283 | 
             
              prerelease: false
         | 
| 284 284 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 285 285 | 
             
                requirements:
         | 
| 286 | 
            -
                - -  | 
| 286 | 
            +
                - - ">="
         | 
| 287 287 | 
             
                  - !ruby/object:Gem::Version
         | 
| 288 288 | 
             
                    version: '0'
         | 
| 289 289 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 290 290 | 
             
              name: rake
         | 
| 291 291 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 292 292 | 
             
                requirements:
         | 
| 293 | 
            -
                - - ~>
         | 
| 293 | 
            +
                - - "~>"
         | 
| 294 294 | 
             
                  - !ruby/object:Gem::Version
         | 
| 295 295 | 
             
                    version: 10.1.0
         | 
| 296 296 | 
             
              type: :development
         | 
| 297 297 | 
             
              prerelease: false
         | 
| 298 298 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 299 299 | 
             
                requirements:
         | 
| 300 | 
            -
                - - ~>
         | 
| 300 | 
            +
                - - "~>"
         | 
| 301 301 | 
             
                  - !ruby/object:Gem::Version
         | 
| 302 302 | 
             
                    version: 10.1.0
         | 
| 303 303 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 304 304 | 
             
              name: rspec_junit_formatter
         | 
| 305 305 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 306 306 | 
             
                requirements:
         | 
| 307 | 
            -
                - - ~>
         | 
| 307 | 
            +
                - - "~>"
         | 
| 308 308 | 
             
                  - !ruby/object:Gem::Version
         | 
| 309 309 | 
             
                    version: 0.1.0
         | 
| 310 310 | 
             
              type: :development
         | 
| 311 311 | 
             
              prerelease: false
         | 
| 312 312 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 313 313 | 
             
                requirements:
         | 
| 314 | 
            -
                - - ~>
         | 
| 314 | 
            +
                - - "~>"
         | 
| 315 315 | 
             
                  - !ruby/object:Gem::Version
         | 
| 316 316 | 
             
                    version: 0.1.0
         | 
| 317 317 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 318 318 | 
             
              name: rspec-core
         | 
| 319 319 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 320 320 | 
             
                requirements:
         | 
| 321 | 
            -
                - - ~>
         | 
| 321 | 
            +
                - - "~>"
         | 
| 322 322 | 
             
                  - !ruby/object:Gem::Version
         | 
| 323 323 | 
             
                    version: 2.14.0
         | 
| 324 324 | 
             
              type: :development
         | 
| 325 325 | 
             
              prerelease: false
         | 
| 326 326 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 327 327 | 
             
                requirements:
         | 
| 328 | 
            -
                - - ~>
         | 
| 328 | 
            +
                - - "~>"
         | 
| 329 329 | 
             
                  - !ruby/object:Gem::Version
         | 
| 330 330 | 
             
                    version: 2.14.0
         | 
| 331 331 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 332 332 | 
             
              name: rspec-expectations
         | 
| 333 333 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 334 334 | 
             
                requirements:
         | 
| 335 | 
            -
                - - ~>
         | 
| 335 | 
            +
                - - "~>"
         | 
| 336 336 | 
             
                  - !ruby/object:Gem::Version
         | 
| 337 337 | 
             
                    version: 2.14.0
         | 
| 338 338 | 
             
              type: :development
         | 
| 339 339 | 
             
              prerelease: false
         | 
| 340 340 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 341 341 | 
             
                requirements:
         | 
| 342 | 
            -
                - - ~>
         | 
| 342 | 
            +
                - - "~>"
         | 
| 343 343 | 
             
                  - !ruby/object:Gem::Version
         | 
| 344 344 | 
             
                    version: 2.14.0
         | 
| 345 345 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 346 346 | 
             
              name: rspec-mocks
         | 
| 347 347 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 348 348 | 
             
                requirements:
         | 
| 349 | 
            -
                - - ~>
         | 
| 349 | 
            +
                - - "~>"
         | 
| 350 350 | 
             
                  - !ruby/object:Gem::Version
         | 
| 351 351 | 
             
                    version: 2.14.0
         | 
| 352 352 | 
             
              type: :development
         | 
| 353 353 | 
             
              prerelease: false
         | 
| 354 354 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 355 355 | 
             
                requirements:
         | 
| 356 | 
            -
                - - ~>
         | 
| 356 | 
            +
                - - "~>"
         | 
| 357 357 | 
             
                  - !ruby/object:Gem::Version
         | 
| 358 358 | 
             
                    version: 2.14.0
         | 
| 359 359 | 
             
            description: A systems integration framework, built to bring the benefits of configuration
         | 
| @@ -1917,14 +1917,14 @@ require_paths: | |
| 1917 1917 | 
             
            - lib
         | 
| 1918 1918 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 1919 1919 | 
             
              requirements:
         | 
| 1920 | 
            -
              - -  | 
| 1920 | 
            +
              - - ">="
         | 
| 1921 1921 | 
             
                - !ruby/object:Gem::Version
         | 
| 1922 1922 | 
             
                  version: '0'
         | 
| 1923 1923 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 1924 1924 | 
             
              requirements:
         | 
| 1925 | 
            -
              - -  | 
| 1925 | 
            +
              - - ">="
         | 
| 1926 1926 | 
             
                - !ruby/object:Gem::Version
         | 
| 1927 | 
            -
                  version:  | 
| 1927 | 
            +
                  version: '0'
         | 
| 1928 1928 | 
             
            requirements: []
         | 
| 1929 1929 | 
             
            rubyforge_project: 
         | 
| 1930 1930 | 
             
            rubygems_version: 2.2.2
         |