summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/provider/file_line/ruby.rb27
-rwxr-xr-xspec/unit/puppet/provider/file_line/ruby_spec.rb4
2 files changed, 17 insertions, 14 deletions
diff --git a/lib/puppet/provider/file_line/ruby.rb b/lib/puppet/provider/file_line/ruby.rb
index 1d27424..aa99986 100644
--- a/lib/puppet/provider/file_line/ruby.rb
+++ b/lib/puppet/provider/file_line/ruby.rb
@@ -1,18 +1,21 @@
Puppet::Type.type(:file_line).provide(:ruby) do
def exists?
- found = true
- if resource[:replace].to_s != 'true' and count_matches(match_regex) > 0
- found = true
+ found = false
+ lines_count = 0
+ lines.each do |line|
+ found = line.chomp == resource[:line]
+ if found
+ lines_count += 1
+ end
+ end
+ if resource[:match] == nil
+ found = lines_count > 0
else
- lines.find do |line|
- if resource[:ensure].to_s == 'absent' and resource[:match_for_absence].to_s == 'true'
- found = line.chomp =~ Regexp.new(resource[:match])
- else
- found = line.chomp == resource[:line].chomp
- end
- if found == false then
- break
- end
+ match_count = count_matches(match_regex)
+ if resource[:replace].to_s == 'true'
+ found = lines_count > 0 && lines_count == match_count
+ else
+ found = match_count > 0
end
end
found
diff --git a/spec/unit/puppet/provider/file_line/ruby_spec.rb b/spec/unit/puppet/provider/file_line/ruby_spec.rb
index dcf8509..ab6edf9 100755
--- a/spec/unit/puppet/provider/file_line/ruby_spec.rb
+++ b/spec/unit/puppet/provider/file_line/ruby_spec.rb
@@ -190,7 +190,7 @@ describe provider_class, :unless => Puppet::Util::Platform.windows? do
File.open(@tmpfile, 'w') do |fh|
fh.write("foo1\nfoo = bar\nfoo2")
end
- expect(@provider.exists?).to eql(false)
+ expect(@provider.exists?).to eql(true)
@provider.create
expect(File.read(@tmpfile).chomp).to eql("foo1\nfoo = bar\nfoo2")
end
@@ -387,7 +387,7 @@ describe provider_class, :unless => Puppet::Util::Platform.windows? do
File.open(@tmpfile, 'w') do |fh|
fh.write("foo1\nfoo\nfoo2")
end
- expect(@provider.exists?).to be_nil
+ expect(@provider.exists?).to eql (true)
end
it 'should remove one line if it matches' do