Skip to content

Commit

Permalink
Merge pull request #416 from rwaffen/update_fact
Browse files Browse the repository at this point in the history
Extend fact to not fail on debian packages
  • Loading branch information
bastelfreak authored Jul 5, 2024
2 parents d161fc1 + a535c4d commit 7fdf4a5
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 12 deletions.
2 changes: 2 additions & 0 deletions lib/facter/puppetdb_version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@
setcode do
output = Facter::Core::Execution.execute('puppetdb --version')
output.split(':').last.strip
rescue Facter::Core::Execution::ExecutionFailure
nil
end
end
38 changes: 26 additions & 12 deletions spec/unit/facter/puppetdb_version_spec.rb
Original file line number Diff line number Diff line change
@@ -1,25 +1,39 @@
# frozen_string_literal: true

require 'spec_helper'
require 'facter'

describe 'puppetdb_version' do
subject(:fact) { Facter.fact(:puppetdb_version) }

before(:each) do
Facter.clear
end

it 'returns the correct puppetdb version' do
allow(Facter::Util::Resolution).to receive(:which).with('puppetdb').and_return('/usr/bin/puppetdb')
allow(Facter::Core::Execution).to receive(:execute).with('puppetdb --version').and_return("puppetdb version: 7.18.0\n")
context 'when puppetdb is available' do
before(:each) do
allow(Facter::Util::Resolution).to receive(:which).with('puppetdb').and_return('/usr/bin/puppetdb')
end

context 'on a default system' do
it 'returns the correct version from puppetdb --version' do
expect(Facter::Core::Execution).to receive(:execute)
.with('puppetdb --version')
.and_return('puppetdb version: 7.19.0')

expect(Facter.fact(:puppetdb_version).value).to eq('7.19.0')
end

it 'returns nil if the command execution fails' do
allow(Facter::Core::Execution).to receive(:execute).with('puppetdb --version').and_raise(Facter::Core::Execution::ExecutionFailure)

expect(Facter.fact(:puppetdb_version).value).to eq('7.18.0')
expect(Facter.fact(:puppetdb_version).value).to be_nil
end
end
end

it 'returns nil if puppetdb command is not available' do
allow(Facter::Util::Resolution).to receive(:which).with('puppetdb').and_return(nil)
context 'when puppetdb is not available' do
before(:each) do
allow(Facter::Util::Resolution).to receive(:which).with('puppetdb').and_return(nil)
end

expect(Facter.fact(:puppetdb_version).value).to be_nil
it 'returns nil' do
expect(Facter.fact(:puppetdb_version).value).to be_nil
end
end
end

0 comments on commit 7fdf4a5

Please sign in to comment.