From 1b842a2ea19116c65b79b53cd88d77b69ac7543c Mon Sep 17 00:00:00 2001 From: Andrei Filipovici Date: Fri, 11 Sep 2020 16:05:51 +0300 Subject: [PATCH] (FACT-2327) added list method --- lib/facter.rb | 9 +++++++++ spec/facter/facter_spec.rb | 12 ++++++++++++ .../facter/resolvers/windows/netkvm_resolver_spec.rb | 2 +- spec/mocks/win32_mock.rb | 6 +++++- spec/mocks/win32_registry_error_mock.rb | 2 +- 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/facter.rb b/lib/facter.rb index 2e8cede94b..857d392732 100644 --- a/lib/facter.rb +++ b/lib/facter.rb @@ -281,6 +281,15 @@ def log_exception(exception, message = :default) logger.error(arr.flatten.join("\n")) end + # Returns a list with the names of all solved facts + # + # @return [Array] the list with all the fact names + # + # @api public + def list + to_hash.keys.sort + end + private def logger diff --git a/spec/facter/facter_spec.rb b/spec/facter/facter_spec.rb index 0b065e8751..7b13ecf890 100644 --- a/spec/facter/facter_spec.rb +++ b/spec/facter/facter_spec.rb @@ -440,4 +440,16 @@ def mock_collection(method, os_name = nil, error = nil) expect(logger).not_to have_received(:debug) end end + + describe '#list' do + before do + allow(Facter).to receive(:to_hash).and_return({ 'up_time' => 235, 'timezone' => 'EEST', 'virtual' => 'physical' }) + end + + it 'returns the resolved fact names' do + result = Facter.list + + expect(result).to eq(%w[timezone up_time virtual]) + end + end end diff --git a/spec/facter/resolvers/windows/netkvm_resolver_spec.rb b/spec/facter/resolvers/windows/netkvm_resolver_spec.rb index f30d008264..9ef85676f2 100644 --- a/spec/facter/resolvers/windows/netkvm_resolver_spec.rb +++ b/spec/facter/resolvers/windows/netkvm_resolver_spec.rb @@ -2,7 +2,7 @@ describe Facter::Resolvers::NetKVM do describe '#resolve' do - let(:reg) { instance_double('Win32::Registry::HKEY_LOCAL_MACHINE') } + let(:reg) { instance_spy('Win32::Registry') } before do allow(reg).to receive(:keys).and_return(reg_value) diff --git a/spec/mocks/win32_mock.rb b/spec/mocks/win32_mock.rb index b5df44d3d1..06ae7c924f 100644 --- a/spec/mocks/win32_mock.rb +++ b/spec/mocks/win32_mock.rb @@ -1,7 +1,11 @@ # frozen_string_literal: true module Win32 - module Registry + class Registry + def keys; end + + def close; end + class HKEY_LOCAL_MACHINE def self.open(*); end diff --git a/spec/mocks/win32_registry_error_mock.rb b/spec/mocks/win32_registry_error_mock.rb index a26caec873..a753c2c400 100644 --- a/spec/mocks/win32_registry_error_mock.rb +++ b/spec/mocks/win32_registry_error_mock.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module Win32 - module Registry + class Registry class Error < RuntimeError end end