From ccf13370425eadcc385b3a881e003667a153c496 Mon Sep 17 00:00:00 2001 From: Magnus Gustavsson Date: Fri, 23 Aug 2024 11:22:20 +0200 Subject: [PATCH] Add a fact for installed postgres version There is sometimes a need to handle versions differently. This fact provides a basis for writing such code. --- lib/facter/postgres_version.rb | 9 +++++++++ spec/unit/facter/postgres_version_spec.rb | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 lib/facter/postgres_version.rb create mode 100644 spec/unit/facter/postgres_version_spec.rb diff --git a/lib/facter/postgres_version.rb b/lib/facter/postgres_version.rb new file mode 100644 index 0000000000..29448e258c --- /dev/null +++ b/lib/facter/postgres_version.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +Facter.add('postgres_version') do + confine { Facter::Core::Execution.which('postgres') } + setcode do + version = Facter::Core::Execution.execute('postgres -V 2>/dev/null') + version.match(%r{\d+\.\d+$})[0] if version + end +end diff --git a/spec/unit/facter/postgres_version_spec.rb b/spec/unit/facter/postgres_version_spec.rb new file mode 100644 index 0000000000..222f98674d --- /dev/null +++ b/spec/unit/facter/postgres_version_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Facter::Util::Fact.to_s do + before(:each) do + Facter.clear + end + + describe 'postgres_version' do + context 'with value' do + before :each do + allow(Facter::Core::Execution).to receive(:which).and_return('/usr/bin/postgres') + allow(Facter::Core::Execution).to receive(:execute).with('postgres -V 2>/dev/null').and_return('postgres (PostgreSQL) 10.0') + end + + it 'postgres_version' do + expect(Facter.fact(:postgres_version).value).to eq('10.0') + end + end + end +end