diff --git a/lib/facter/resolvers/augeas_resolver.rb b/lib/facter/resolvers/augeas_resolver.rb index daae10bfb1..cadaddd498 100644 --- a/lib/facter/resolvers/augeas_resolver.rb +++ b/lib/facter/resolvers/augeas_resolver.rb @@ -20,7 +20,13 @@ def read_augeas_version(fact_name) end def read_augeas_from_cli - output = Facter::Core::Execution.execute('augparse --version 2>&1', logger: log) + command = if File.readable?('/opt/puppetlabs/puppet/bin/augparse') + '/opt/puppetlabs/puppet/bin/augparse' + else + 'augparse' + end + + output = Facter::Core::Execution.execute("#{command} --version 2>&1", logger: log) Regexp.last_match(1) if output =~ /^augparse (\d+\.\d+\.\d+)/ end diff --git a/spec/facter/resolvers/augeas_resolver_spec.rb b/spec/facter/resolvers/augeas_resolver_spec.rb index eec11b108b..f50d9fda2e 100644 --- a/spec/facter/resolvers/augeas_resolver_spec.rb +++ b/spec/facter/resolvers/augeas_resolver_spec.rb @@ -4,9 +4,11 @@ subject(:augeas) { Facter::Resolvers::Augeas } let(:log_spy) { instance_spy(Facter::Log) } + let(:executable?) { false } before do augeas.instance_variable_set(:@log, log_spy) + allow(File).to receive(:readable?).with('/opt/puppetlabs/puppet/bin/augparse').and_return(executable?) end after do @@ -25,6 +27,20 @@ end end + context 'when augparse is installed with puppet-agent package on unix based systems' do + let(:executable?) { true } + + before do + allow(Facter::Core::Execution).to receive(:execute) + .with('/opt/puppetlabs/puppet/bin/augparse --version 2>&1', logger: log_spy) + .and_return('augparse 1.12.0 ') + end + + it 'returns build' do + expect(augeas.resolve(:augeas_version)).to eq('1.12.0') + end + end + context 'when augparse is not installed' do before do allow(Facter::Core::Execution).to receive(:execute)