diff --git a/lib/puppet/util/ini_file.rb b/lib/puppet/util/ini_file.rb index b7529812..478cc208 100644 --- a/lib/puppet/util/ini_file.rb +++ b/lib/puppet/util/ini_file.rb @@ -122,14 +122,6 @@ def remove_setting(section_name, setting) # was modified. section_index = @section_names.index(section_name) decrement_section_line_numbers(section_index + 1) - - return unless section.empty? - - # By convention, it's time to remove this newly emptied out section - lines.delete_at(section.start_line) - decrement_section_line_numbers(section_index + 1) - @section_names.delete_at(section_index) - @sections_hash.delete(section.name) end def save diff --git a/lib/puppet/util/ini_file/section.rb b/lib/puppet/util/ini_file/section.rb index 46e01477..478d1661 100644 --- a/lib/puppet/util/ini_file/section.rb +++ b/lib/puppet/util/ini_file/section.rb @@ -47,8 +47,6 @@ def existing_setting?(setting_name) @existing_settings.key?(setting_name) end - # the global section is empty whenever it's new; - # other sections are empty when they have no lines def empty? global? ? new_section? : start_line == end_line end diff --git a/spec/acceptance/ini_setting_spec.rb b/spec/acceptance/ini_setting_spec.rb index 140a35e5..d0dd04d0 100644 --- a/spec/acceptance/ini_setting_spec.rb +++ b/spec/acceptance/ini_setting_spec.rb @@ -97,7 +97,7 @@ subject { super().content } it { is_expected.to match %r{four = five} } - it { is_expected.not_to match %r{\[one\]} } + it { is_expected.to match %r{^ \[one\]$} } it { is_expected.not_to match %r{two = three} } end end @@ -296,7 +296,8 @@ describe '#content' do subject { super().content } - it { is_expected.to be_empty } + it { is_expected.to match %r{^\[section1\]$} } + it { is_expected.not_to match %r{valueinsection1 = newValue} } end end end diff --git a/spec/acceptance/ini_subsetting_spec.rb b/spec/acceptance/ini_subsetting_spec.rb index 297ce4c7..3d75571e 100644 --- a/spec/acceptance/ini_subsetting_spec.rb +++ b/spec/acceptance/ini_subsetting_spec.rb @@ -130,7 +130,7 @@ describe '#content' do subject { super().content } - it { is_expected.not_to match %r{\[one\]} } + it { is_expected.to match %r{^\[one\]$} } it { is_expected.not_to match %r{key =} } it { is_expected.not_to match %r{alphabet} } it { is_expected.not_to match %r{betatrons} } diff --git a/spec/unit/puppet/provider/ini_setting/ruby_spec.rb b/spec/unit/puppet/provider/ini_setting/ruby_spec.rb index a250bcde..a442933f 100644 --- a/spec/unit/puppet/provider/ini_setting/ruby_spec.rb +++ b/spec/unit/puppet/provider/ini_setting/ruby_spec.rb @@ -1002,6 +1002,7 @@ def self.file_path #another comment ; yet another comment + -nonstandard- INIFILE it 'removes a setting with pre/suffix that exists' do resource = Puppet::Type::Ini_setting.new(common_params.merge(section: 'nonstandard', setting: 'shoes', ensure: 'absent', section_prefix: '-', section_suffix: '-')) @@ -1124,6 +1125,7 @@ def self.file_path [section3] # com = ment uncom = ment + [section4] [section:sub] subby=bar #another comment @@ -1132,7 +1134,7 @@ def self.file_path -nonstandard- shoes = purple INIFILE - it 'removes the section when removing the last line in the section' do + it 'does not remove the section when removing the last line in the section' do resource = Puppet::Type::Ini_setting.new(common_params.merge(section: 'section4', setting: 'uncom', ensure: 'absent')) provider = described_class.new(resource) expect(provider.exists?).to be true diff --git a/spec/unit/puppet/provider/ini_subsetting/ruby_spec.rb b/spec/unit/puppet/provider/ini_subsetting/ruby_spec.rb index 9236fb68..5addcf44 100644 --- a/spec/unit/puppet/provider/ini_subsetting/ruby_spec.rb +++ b/spec/unit/puppet/provider/ini_subsetting/ruby_spec.rb @@ -345,9 +345,11 @@ def validate_file(expected_content, tmpfile) something = else INIFILE - expected_content_two = '' + expected_content_two = <<-INIFILE + [main] + INIFILE - it 'removes the subsetting when the it is empty' do + it 'removes the subsetting and not the section when the list is empty' do resource = Puppet::Type::Ini_subsetting.new(common_params.merge(setting: 'reports', subsetting: 'http', subsetting_separator: ',')) provider = described_class.new(resource) provider.destroy