diff --git a/lib/puppet/provider/selmodule/semodule.rb b/lib/puppet/provider/selmodule/semodule.rb index b292305..c3c92ee 100644 --- a/lib/puppet/provider/selmodule/semodule.rb +++ b/lib/puppet/provider/selmodule/semodule.rb @@ -22,7 +22,7 @@ def exists? debug "Checking for module #{@resource[:name]}" execpipe("#{command(:semodule)} --list") do |out| out.each_line do |line| - if line =~ %r{#{@resource[:name]}\b} + if line =~ %r{^#{@resource[:name]}\b} return :true end end diff --git a/spec/unit/provider/selmodule_spec.rb b/spec/unit/provider/selmodule_spec.rb index c994ba3..1d05a8f 100644 --- a/spec/unit/provider/selmodule_spec.rb +++ b/spec/unit/provider/selmodule_spec.rb @@ -27,6 +27,12 @@ expect(provider.exists?).to be_nil end + it 'returns nil if module with same suffix is loaded' do + allow(provider).to receive(:command).with(:semodule).and_return '/usr/sbin/semodule' + allow(provider).to receive(:execpipe).with('/usr/sbin/semodule --list').and_yield StringIO.new("bar\t1.2.3\nmyfoo\t1.0.0\n") + expect(provider.exists?).to be_nil + end + it 'returns nil if no modules are loaded' do allow(provider).to receive(:command).with(:semodule).and_return '/usr/sbin/semodule' allow(provider).to receive(:execpipe).with('/usr/sbin/semodule --list').and_yield StringIO.new('')