Import upstream version 4.2.14+git20221209.1.114d3ef
Debian Janitor
1 year, 4 months ago
27 | 27 | * AIX |
28 | 28 | |
29 | 29 | ## Requirements |
30 | * Ruby 2.3+ | |
30 | * Ruby 2.5+ | |
31 | 31 | * FFI (for facts like `mountpoints` which are resolved using C API calls) |
32 | 32 | |
33 | 33 | ## Basic concepts |
337 | 337 | /#{version[1]}/ |
338 | 338 | end |
339 | 339 | case agent[:platform] |
340 | when /solaris-10/ | |
341 | os_release_full = /#{os_version}_u\d+/ | |
342 | os_kernel = /Generic_\d+-\d+/ | |
343 | os_kernel_major = os_kernel | |
340 | 344 | when /solaris-11/ |
341 | 345 | os_release_full = /#{os_version}\.\d+/ |
342 | 346 | os_kernel = os_release_full |
4 | 4 | |
5 | 5 | Gem::Specification.new do |spec| |
6 | 6 | spec.name = 'facter-ng' |
7 | spec.version = '4.2.14' | |
7 | spec.version = '4.3.0' | |
8 | 8 | spec.authors = ['Puppet'] |
9 | 9 | spec.email = ['team-nw@puppet.com'] |
10 | 10 | spec.homepage = 'https://github.com/puppetlabs/facter' |
26 | 26 | |
27 | 27 | spec.files = dirs.map { |path| path.sub(base, '') } |
28 | 28 | |
29 | spec.required_ruby_version = '>= 2.3', '< 4.0' | |
29 | spec.required_ruby_version = '>= 2.5', '< 4.0' | |
30 | 30 | |
31 | 31 | spec.bindir = 'bin' |
32 | 32 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } |
11 | 11 | gem_executables: 'facter' |
12 | 12 | gem_license: 'Apache-2.0' |
13 | 13 | gem_default_executables: 'facter' |
14 | gem_required_ruby_version: ['>= 2.3', '< 4.0'] | |
14 | gem_required_ruby_version: ['>= 2.5', '< 4.0'] | |
15 | 15 | gem_runtime_dependencies: |
16 | 16 | hocon: ~> 1.3 |
17 | 17 | thor: ['>= 1.0.1', '< 2.0'] |
4 | 4 | |
5 | 5 | Gem::Specification.new do |spec| |
6 | 6 | spec.name = 'facter' |
7 | spec.version = '4.2.14' | |
7 | spec.version = '4.3.0' | |
8 | 8 | spec.authors = ['Puppet'] |
9 | 9 | spec.email = ['team-nw@puppet.com'] |
10 | 10 | spec.homepage = 'https://github.com/puppetlabs/facter' |
23 | 23 | base = "#{__dir__}#{File::SEPARATOR}" |
24 | 24 | spec.files = dirs.map { |path| path.sub(base, '') } |
25 | 25 | |
26 | spec.required_ruby_version = '>= 2.3', '< 4.0' | |
26 | spec.required_ruby_version = '>= 2.5', '< 4.0' | |
27 | 27 | spec.bindir = 'bin' |
28 | 28 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } |
29 | 29 | spec.require_paths = ['lib'] |
0 | 0 | # frozen_string_literal: true |
1 | 1 | |
2 | 2 | module Facter |
3 | VERSION = '4.2.14' unless defined?(VERSION) | |
3 | VERSION = '4.3.0' unless defined?(VERSION) | |
4 | 4 | end |
36 | 36 | end |
37 | 37 | |
38 | 38 | it 'delegates #exec to #execute' do |
39 | expect(impl).to receive(:execute).with('waffles', on_fail: nil) | |
39 | expect(impl).to receive(:execute).with('waffles', { on_fail: nil }) | |
40 | 40 | execution.exec('waffles') |
41 | 41 | end |
42 | 42 |
40 | 40 | |
41 | 41 | it 'passes resolution specific options to the fact' do |
42 | 42 | fact = Facter::Util::Fact.new(:myname) |
43 | allow(Facter::Util::Fact).to receive(:new).with(:myname, timeout: 'myval').and_return(fact) | |
44 | ||
45 | expect(fact).to receive(:add).with(timeout: 'myval') | |
43 | allow(Facter::Util::Fact).to receive(:new).with(:myname, { timeout: 'myval' }).and_return(fact) | |
44 | ||
45 | expect(fact).to receive(:add).with({ timeout: 'myval' }) | |
46 | 46 | |
47 | 47 | collection.add(:myname, timeout: 'myval') {} |
48 | 48 | end |
353 | 353 | let(:yaml_content) { load_fixture('external_fact_yaml_date').read } |
354 | 354 | |
355 | 355 | it 'loads date' do |
356 | pending 'There is a bug in newer versions of Psych and Timecop' if RUBY_VERSION =~ /^3\.2/ | |
356 | if RUBY_VERSION.to_f == 3.2 && Gem::Version.new(Timecop::VERSION) < Gem::Version.new('0.9.6') | |
357 | pending 'There is a bug in newer versions of Psych and timecop' | |
358 | end | |
357 | 359 | expected_result = { 'testsfact' => { 'date' => Date.parse('2020-04-28') } } |
358 | 360 | |
359 | 361 | expect(yaml_parser.parse_results).to eq(expected_result) |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Aix::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.4.5' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/alpine-release') | |
8 | .with(:release, { release_file: '/etc/alpine-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 | |
16 | 16 | it 'calls Facter::Resolvers::SpecificReleaseFile with version' do |
17 | 17 | fact.call_the_resolver |
18 | 18 | expect(Facter::Resolvers::SpecificReleaseFile).to have_received(:resolve) |
19 | .with(:release, release_file: '/etc/alpine-release') | |
19 | .with(:release, { release_file: '/etc/alpine-release' }) | |
20 | 20 | end |
21 | 21 | |
22 | 22 | it 'returns operating system name fact' do |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Amzn::Os::Distro::Codename.new } |
5 | 5 | |
6 | before do | |
7 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) | |
8 | .with(:release, { release_file: '/etc/system-release' }).and_return(value) | |
9 | end | |
10 | ||
6 | 11 | context 'when codename is not in system-release' do |
7 | 12 | let(:value) { 'Amazon Linux AMI release 2017.03' } |
8 | 13 | let(:expected_value) { 'n/a' } |
9 | 14 | |
10 | before do | |
11 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) | |
12 | .with(:release, release_file: '/etc/system-release').and_return(value) | |
13 | end | |
14 | ||
15 | 15 | it 'calls Facter::Resolvers::SpecificReleaseFile' do |
16 | 16 | fact.call_the_resolver |
17 | 17 | expect(Facter::Resolvers::SpecificReleaseFile).to have_received(:resolve) |
18 | .with(:release, release_file: '/etc/system-release') | |
18 | .with(:release, { release_file: '/etc/system-release' }) | |
19 | 19 | end |
20 | 20 | |
21 | 21 | it "returns 'n/a' fact value" do |
28 | 28 | let(:value) { 'Amazon Linux release 2 (2017.12) LTS Release Candidate' } |
29 | 29 | let(:expected_value) { '2017.12' } |
30 | 30 | |
31 | before do | |
32 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) | |
33 | .with(:release, release_file: '/etc/system-release').and_return(value) | |
34 | end | |
35 | ||
36 | 31 | it 'calls Facter::Resolvers::SpecificReleaseFile' do |
37 | 32 | fact.call_the_resolver |
38 | 33 | expect(Facter::Resolvers::SpecificReleaseFile).to have_received(:resolve) |
39 | .with(:release, release_file: '/etc/system-release') | |
34 | .with(:release, { release_file: '/etc/system-release' }) | |
40 | 35 | end |
41 | 36 | |
42 | 37 | it 'returns release fact' do |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) |
10 | .with(:release, release_file: '/etc/system-release').and_return(value) | |
10 | .with(:release, { release_file: '/etc/system-release' }).and_return(value) | |
11 | 11 | end |
12 | 12 | |
13 | 13 | it 'calls Facter::Resolvers::SpecificReleaseFile' do |
14 | 14 | fact.call_the_resolver |
15 | 15 | expect(Facter::Resolvers::SpecificReleaseFile).to have_received(:resolve) |
16 | .with(:release, release_file: '/etc/system-release') | |
16 | .with(:release, { release_file: '/etc/system-release' }) | |
17 | 17 | end |
18 | 18 | |
19 | 19 | it 'returns release fact' do |
8 | 8 | |
9 | 9 | before do |
10 | 10 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) |
11 | .with(:release, release_file: '/etc/system-release').and_return(value) | |
11 | .with(:release, { release_file: '/etc/system-release' }).and_return(value) | |
12 | 12 | end |
13 | 13 | |
14 | 14 | it 'calls Facter::Resolvers::SpecificReleaseFile' do |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/system-release') | |
8 | .with(:release, { release_file: '/etc/system-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/system-release') | |
8 | .with(:release, { release_file: '/etc/system-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::SpecificReleaseFile).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/devuan_version') | |
8 | .with(:release, { release_file: '/etc/devuan_version' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Freebsd::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.4.5' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/gentoo-release') | |
8 | .with(:release, { release_file: '/etc/gentoo-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Linux::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.4.5' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Macosx::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.4.5' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/meego-release') | |
8 | .with(:release, { release_file: '/etc/meego-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/enterprise-release') | |
8 | .with(:release, { release_file: '/etc/enterprise-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/oracle-release') | |
8 | .with(:release, { release_file: '/etc/oracle-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 | |
16 | 16 | it 'calls Facter::Resolvers::ReleaseFromFirstLine with version' do |
17 | 17 | fact.call_the_resolver |
18 | 18 | expect(Facter::Resolvers::ReleaseFromFirstLine).to have_received(:resolve) |
19 | .with(:release, release_file: '/etc/oracle-release') | |
19 | .with(:release, { release_file: '/etc/oracle-release' }) | |
20 | 20 | end |
21 | 21 | |
22 | 22 | it 'returns operating system name fact' do |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Resolvers::ReleaseFromFirstLine).to receive(:resolve) |
8 | .with(:release, release_file: '/etc/ovs-release') | |
8 | .with(:release, { release_file: '/etc/ovs-release' }) | |
9 | 9 | .and_return(value) |
10 | 10 | end |
11 | 11 | |
16 | 16 | it 'calls Facter::Resolvers::ReleaseFromFirstLine with version' do |
17 | 17 | fact.call_the_resolver |
18 | 18 | expect(Facter::Resolvers::ReleaseFromFirstLine).to have_received(:resolve) |
19 | .with(:release, release_file: '/etc/ovs-release') | |
19 | .with(:release, { release_file: '/etc/ovs-release' }) | |
20 | 20 | end |
21 | 21 | |
22 | 22 | it 'returns operating system name fact' do |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Solaris::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.4.5' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
32 | 32 | allow(Facter::Resolvers::Windows::Virtualization).to receive(:resolve).with(:virtual).and_return('kvm') |
33 | 33 | allow(Facter::Resolvers::DMIComputerSystem).to receive(:resolve).with(:name).and_return('OpenStack') |
34 | 34 | allow(Facter::Resolvers::DMIBios).to receive(:resolve).with(:manufacturer).and_return('value') |
35 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.kvm', openstack: true).and_return(expected_fact) | |
35 | allow(Facter::ResolvedFact).to receive(:new) | |
36 | .with('hypervisors.kvm', { openstack: true }) | |
37 | .and_return(expected_fact) | |
36 | 38 | |
37 | 39 | fact = Facts::Windows::Hypervisors::Kvm.new |
38 | 40 | expect(fact.call_the_resolver).to eq(expected_fact) |
46 | 48 | allow(Facter::Resolvers::NetKVM).to receive(:resolve).with(:kvm).and_return(true) |
47 | 49 | allow(Facter::Resolvers::DMIComputerSystem).to receive(:resolve).with(:name).and_return('value') |
48 | 50 | allow(Facter::Resolvers::DMIBios).to receive(:resolve).with(:manufacturer).and_return('Google') |
49 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.kvm', google: true).and_return(expected_fact) | |
51 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.kvm', { google: true }).and_return(expected_fact) | |
50 | 52 | |
51 | 53 | fact = Facts::Windows::Hypervisors::Kvm.new |
52 | 54 | expect(fact.call_the_resolver).to eq(expected_fact) |
21 | 21 | allow(Facter::Resolvers::Windows::Virtualization) |
22 | 22 | .to receive(:resolve).with(:oem_strings) |
23 | 23 | .and_return(['vboxVer_ 13.4', 'vboxRev_ 13.4']) |
24 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.virtualbox', revision: ' 13.4', version: ' 13.4') | |
25 | .and_return(expected_fact) | |
24 | allow(Facter::ResolvedFact).to receive(:new) | |
25 | .with('hypervisors.virtualbox', { revision: ' 13.4', version: ' 13.4' }) | |
26 | .and_return(expected_fact) | |
26 | 27 | |
27 | 28 | fact = Facts::Windows::Hypervisors::Virtualbox.new |
28 | 29 | expect(fact.call_the_resolver).to eq(expected_fact) |
36 | 37 | allow(Facter::Resolvers::Windows::Virtualization).to receive(:resolve).with(:virtual).and_return('value') |
37 | 38 | allow(Facter::Resolvers::DMIComputerSystem).to receive(:resolve).with(:name).and_return('VirtualBox') |
38 | 39 | allow(Facter::Resolvers::Windows::Virtualization).to receive(:resolve).with(:oem_strings).and_return(['', '']) |
39 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.virtualbox', revision: '', version: '') | |
40 | .and_return(expected_fact) | |
40 | allow(Facter::ResolvedFact).to receive(:new) | |
41 | .with('hypervisors.virtualbox', { revision: '', version: '' }) | |
42 | .and_return(expected_fact) | |
41 | 43 | |
42 | 44 | fact = Facts::Windows::Hypervisors::Virtualbox.new |
43 | 45 | expect(fact.call_the_resolver).to eq(expected_fact) |
17 | 17 | expected_fact = double(Facter::ResolvedFact, name: 'hypervisors.xen', value: { context: 'pv' }) |
18 | 18 | allow(Facter::Resolvers::Windows::Virtualization).to receive(:resolve).with(:virtual).and_return('xen') |
19 | 19 | allow(Facter::Resolvers::DMIComputerSystem).to receive(:resolve).with(:name).and_return('PV domU') |
20 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.xen', context: 'pv').and_return(expected_fact) | |
20 | allow(Facter::ResolvedFact).to receive(:new) | |
21 | .with('hypervisors.xen', { context: 'pv' }).and_return(expected_fact) | |
21 | 22 | |
22 | 23 | fact = Facts::Windows::Hypervisors::Xen.new |
23 | 24 | expect(fact.call_the_resolver).to eq(expected_fact) |
29 | 30 | expected_fact = double(Facter::ResolvedFact, name: 'hypervisors.xen', value: { context: 'hvm' }) |
30 | 31 | allow(Facter::Resolvers::Windows::Virtualization).to receive(:resolve).with(:virtual).and_return('xen') |
31 | 32 | allow(Facter::Resolvers::DMIComputerSystem).to receive(:resolve).with(:name).and_return('HVM domU') |
32 | allow(Facter::ResolvedFact).to receive(:new).with('hypervisors.xen', context: 'hvm').and_return(expected_fact) | |
33 | allow(Facter::ResolvedFact).to receive(:new) | |
34 | .with('hypervisors.xen', { context: 'hvm' }).and_return(expected_fact) | |
33 | 35 | |
34 | 36 | fact = Facts::Windows::Hypervisors::Xen.new |
35 | 37 | expect(fact.call_the_resolver).to eq(expected_fact) |
3 | 3 | describe '#call_the_resolver' do |
4 | 4 | subject(:fact) { Facts::Windows::Ruby::Version.new } |
5 | 5 | |
6 | let(:value) { '2.5.7' } | |
6 | let(:value) { '2.5.9' } | |
7 | 7 | |
8 | 8 | before do |
9 | 9 | allow(Facter::Resolvers::Ruby).to receive(:resolve).with(:version).and_return(value) |
6 | 6 | |
7 | 7 | before do |
8 | 8 | resolver.instance_variable_set(:@log, logger_spy) |
9 | allow(Facter::Core::Execution).to receive(:execute).with('lspv', logger: logger_spy) | |
10 | .and_return(result) | |
9 | allow(Facter::Core::Execution).to receive(:execute) | |
10 | .with('lspv', { logger: logger_spy }) | |
11 | .and_return(result) | |
11 | 12 | end |
12 | 13 | |
13 | 14 | after do |
30 | 31 | end |
31 | 32 | |
32 | 33 | before do |
33 | allow(Facter::Core::Execution).to receive(:execute).with('lspv hdisk0', logger: logger_spy) | |
34 | .and_return(load_fixture('lspv_disk_output').read) | |
34 | allow(Facter::Core::Execution).to receive(:execute) | |
35 | .with('lspv hdisk0', { logger: logger_spy }) | |
36 | .and_return(load_fixture('lspv_disk_output').read) | |
35 | 37 | end |
36 | 38 | |
37 | 39 | it 'returns disks informations' do |
40 | 42 | |
41 | 43 | context 'when second lspv call fails' do |
42 | 44 | before do |
43 | allow(Facter::Core::Execution).to receive(:execute).with('lspv hdisk0', logger: logger_spy) | |
44 | .and_return('') | |
45 | allow(Facter::Core::Execution).to receive(:execute) | |
46 | .with('lspv hdisk0', { logger: logger_spy }) | |
47 | .and_return('') | |
45 | 48 | end |
46 | 49 | |
47 | 50 | it 'returns disks informations' do |
6 | 6 | |
7 | 7 | before do |
8 | 8 | resolver.instance_variable_set(:@log, log_spy) |
9 | allow(Facter::Core::Execution).to receive(:execute).with('svmon', logger: log_spy) | |
10 | .and_return(svmon_content) | |
11 | allow(Facter::Core::Execution).to receive(:execute).with('pagesize', logger: log_spy) | |
12 | .and_return(pagesize_content) | |
9 | allow(Facter::Core::Execution).to receive(:execute) | |
10 | .with('svmon', { logger: log_spy }) | |
11 | .and_return(svmon_content) | |
12 | allow(Facter::Core::Execution).to receive(:execute) | |
13 | .with('pagesize', { logger: log_spy }) | |
14 | .and_return(pagesize_content) | |
13 | 15 | end |
14 | 16 | |
15 | 17 | after do |
19 | 19 | |
20 | 20 | before do |
21 | 21 | Facter::Resolvers::Aix::Mountpoints.instance_variable_set(:@log, log_spy) |
22 | allow(Facter::Core::Execution).to receive(:execute).with('mount', logger: log_spy) | |
23 | .and_return(load_fixture('mount').read) | |
24 | allow(Facter::Core::Execution).to receive(:execute).with('df -P', logger: log_spy) | |
25 | .and_return(load_fixture('df').read) | |
22 | allow(Facter::Core::Execution).to receive(:execute) | |
23 | .with('mount', { logger: log_spy }) | |
24 | .and_return(load_fixture('mount').read) | |
25 | allow(Facter::Core::Execution).to receive(:execute) | |
26 | .with('df -P', { logger: log_spy }) | |
27 | .and_return(load_fixture('df').read) | |
26 | 28 | end |
27 | 29 | |
28 | 30 | it "only skips lines containing the string 'node'" do |
14 | 14 | before do |
15 | 15 | networking_resolver.instance_variable_set(:@log, log_spy) |
16 | 16 | allow(Facter::Core::Execution).to receive(:execute) |
17 | .with('netstat -rn', logger: log_spy) | |
17 | .with('netstat -rn', { logger: log_spy }) | |
18 | 18 | .and_return(netstat_rn) |
19 | 19 | |
20 | 20 | allow(Facter::Core::Execution).to receive(:execute) |
21 | .with('netstat -in', logger: log_spy) | |
21 | .with('netstat -in', { logger: log_spy }) | |
22 | 22 | .and_return(netstat_in) |
23 | 23 | |
24 | 24 | allow(Facter::Resolvers::Aix::FfiHelper).to receive(:read_interfaces).and_return(ffi_interfaces) |
36 | 36 | end |
37 | 37 | |
38 | 38 | before do |
39 | allow(Facter::Core::Execution).to receive(:execute).with('lslv -L hd5', logger: logger_spy) | |
40 | .and_return(load_fixture('lslv_output').read) | |
41 | allow(Facter::Core::Execution).to receive(:execute).with('lslv -L hd6', logger: logger_spy) | |
42 | .and_return('') | |
39 | allow(Facter::Core::Execution).to receive(:execute) | |
40 | .with('lslv -L hd5', { logger: logger_spy }) | |
41 | .and_return(load_fixture('lslv_output').read) | |
42 | allow(Facter::Core::Execution).to receive(:execute) | |
43 | .with('lslv -L hd6', { logger: logger_spy }) | |
44 | .and_return('') | |
43 | 45 | end |
44 | 46 | |
45 | 47 | it 'returns partitions informations' do |
17 | 17 | context 'when augparse is installed' do |
18 | 18 | before do |
19 | 19 | allow(Facter::Core::Execution).to receive(:execute) |
20 | .with('augparse --version 2>&1', logger: log_spy) | |
20 | .with('augparse --version 2>&1', { logger: log_spy }) | |
21 | 21 | .and_return('augparse 1.12.0 <http://augeas.net/>') |
22 | 22 | end |
23 | 23 | |
31 | 31 | |
32 | 32 | before do |
33 | 33 | allow(Facter::Core::Execution).to receive(:execute) |
34 | .with('/opt/puppetlabs/puppet/bin/augparse --version 2>&1', logger: log_spy) | |
34 | .with('/opt/puppetlabs/puppet/bin/augparse --version 2>&1', { logger: log_spy }) | |
35 | 35 | .and_return('augparse 1.12.0 <http://augeas.net/>') |
36 | 36 | end |
37 | 37 | |
43 | 43 | context 'when augparse is not installed' do |
44 | 44 | before do |
45 | 45 | allow(Facter::Core::Execution).to receive(:execute) |
46 | .with('augparse --version 2>&1', logger: log_spy) | |
46 | .with('augparse --version 2>&1', { logger: log_spy }) | |
47 | 47 | .and_return('sh: augparse: command not found') |
48 | 48 | end |
49 | 49 |
75 | 75 | .with("/sys/block/#{disk}#{value}", nil).and_return(values[:vendor]) |
76 | 76 | when 'false' |
77 | 77 | allow(Facter::Core::Execution).to receive(:execute) |
78 | .with("lsblk -dn -o #{fact} /dev/#{disk}", on_fail: '', timeout: 1) | |
78 | .with("lsblk -dn -o #{fact} /dev/#{disk}", { on_fail: '', timeout: 1 }) | |
79 | 79 | .and_return(values[fact]) |
80 | 80 | end |
81 | 81 | end |
144 | 144 | next unless value == 'false' |
145 | 145 | |
146 | 146 | allow(Facter::Core::Execution).to receive(:execute) |
147 | .with("lsblk -dn -o #{fact} /dev/#{disk}", on_fail: '', timeout: 1) | |
147 | .with("lsblk -dn -o #{fact} /dev/#{disk}", { on_fail: '', timeout: 1 }) | |
148 | 148 | .and_return('') |
149 | 149 | end |
150 | 150 | end |
5 | 5 | |
6 | 6 | before do |
7 | 7 | allow(Facter::Core::Execution).to receive(:execute) |
8 | .with('dmidecode', logger: instance_of(Facter::Log)).and_return(command_output) | |
8 | .with('dmidecode', { logger: instance_of(Facter::Log) }).and_return(command_output) | |
9 | 9 | end |
10 | 10 | |
11 | 11 | after { dmidecode.invalidate_cache } |
4 | 4 | |
5 | 5 | before do |
6 | 6 | allow(Facter::Core::Execution).to receive(:execute) |
7 | .with('/bin/freebsd-version -k', logger: freebsd_version.log) | |
7 | .with('/bin/freebsd-version -k', { logger: freebsd_version.log }) | |
8 | 8 | .and_return("13.0-CURRENT\n") |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('/bin/freebsd-version -ru', logger: freebsd_version.log) | |
10 | .with('/bin/freebsd-version -ru', { logger: freebsd_version.log }) | |
11 | 11 | .and_return("12.1-RELEASE-p3\n12.0-STABLE\n") |
12 | 12 | end |
13 | 13 |
12 | 12 | before do |
13 | 13 | swap_memory.instance_variable_set(:@log, log_spy) |
14 | 14 | allow(Facter::Core::Execution).to receive(:execute) |
15 | .with('swapinfo -k', logger: log_spy) | |
15 | .with('swapinfo -k', { logger: log_spy }) | |
16 | 16 | .and_return(load_fixture('freebsd_swapinfo').read) |
17 | 17 | end |
18 | 18 |
15 | 15 | .and_return(17_043_554_304) |
16 | 16 | |
17 | 17 | allow(Facter::Core::Execution).to receive(:execute) |
18 | .with('vmstat -H --libxo json', logger: log_spy) | |
18 | .with('vmstat -H --libxo json', { logger: log_spy }) | |
19 | 19 | .and_return(load_fixture('freebsd_vmstat').read) |
20 | 20 | end |
21 | 21 |
14 | 14 | before do |
15 | 15 | allow(Facter::Core::Execution) |
16 | 16 | .to receive(:execute) |
17 | .with('ps -o etime= -p "1"', logger: log_spy) | |
17 | .with('ps -o etime= -p "1"', { logger: log_spy }) | |
18 | 18 | .and_return('20') |
19 | 19 | |
20 | 20 | allow(Facter::Util::Resolvers::UptimeHelper) |
44 | 44 | before do |
45 | 45 | allow(Facter::Core::Execution) |
46 | 46 | .to receive(:execute) |
47 | .with('ps -o etime= -p "1"', logger: log_spy) | |
47 | .with('ps -o etime= -p "1"', { logger: log_spy }) | |
48 | 48 | .and_return('10:20') |
49 | 49 | |
50 | 50 | allow(Facter::Util::Resolvers::UptimeHelper) |
74 | 74 | before do |
75 | 75 | allow(Facter::Core::Execution) |
76 | 76 | .to receive(:execute) |
77 | .with('ps -o etime= -p "1"', logger: log_spy) | |
77 | .with('ps -o etime= -p "1"', { logger: log_spy }) | |
78 | 78 | .and_return('3:10:20') |
79 | 79 | |
80 | 80 | allow(Facter::Util::Resolvers::UptimeHelper) |
104 | 104 | before do |
105 | 105 | allow(Facter::Core::Execution) |
106 | 106 | .to receive(:execute) |
107 | .with('ps -o etime= -p "1"', logger: log_spy) | |
107 | .with('ps -o etime= -p "1"', { logger: log_spy }) | |
108 | 108 | .and_return('1-3:10:20') |
109 | 109 | |
110 | 110 | allow(Facter::Util::Resolvers::UptimeHelper) |
134 | 134 | before do |
135 | 135 | allow(Facter::Core::Execution) |
136 | 136 | .to receive(:execute) |
137 | .with('ps -o etime= -p "1"', logger: log_spy) | |
137 | .with('ps -o etime= -p "1"', { logger: log_spy }) | |
138 | 138 | .and_return('2-3:10:20') |
139 | 139 | |
140 | 140 | allow(Facter::Util::Resolvers::UptimeHelper) |
4 | 4 | Facter::Resolvers::Linux::Lscpu.instance_variable_set(:@log, log_spy) |
5 | 5 | allow(Facter::Core::Execution) |
6 | 6 | .to receive(:execute) |
7 | .with("lscpu | grep -e 'Thread(s)' -e 'Core(s)'", logger: log_spy) | |
7 | .with("lscpu | grep -e 'Thread(s)' -e 'Core(s)'", { logger: log_spy }) | |
8 | 8 | .and_return(lscpu_output) |
9 | 9 | end |
10 | 10 |
8 | 8 | before do |
9 | 9 | networking_linux.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(Facter::Core::Execution).to receive(:execute) |
11 | .with('ip link show', logger: log_spy).and_return(load_fixture('ip_link_show').read) | |
11 | .with('ip link show', { logger: log_spy }).and_return(load_fixture('ip_link_show').read) | |
12 | 12 | allow(Facter::Util::Linux::SocketParser).to receive(:retrieve_interfaces) |
13 | 13 | .with(log_spy).and_return(socket_interfaces) |
14 | 14 | allow(Facter::Util::Linux::Dhcp).to receive(:dhcp).with('lo', '1', log_spy).and_return('10.32.22.9') |
7 | 7 | before do |
8 | 8 | lpar_resolver.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('/usr/bin/lparstat -i', logger: log_spy) | |
10 | .with('/usr/bin/lparstat -i', { logger: log_spy }) | |
11 | 11 | .and_return(load_fixture('lparstat_i').read) |
12 | 12 | lpar_resolver.invalidate_cache |
13 | 13 | end |
6 | 6 | |
7 | 7 | before do |
8 | 8 | lspci_resolver.instance_variable_set(:@log, log_spy) |
9 | allow(Facter::Core::Execution).to receive(:execute).with('lspci', logger: log_spy).and_return(output) | |
9 | allow(Facter::Core::Execution).to receive(:execute) | |
10 | .with('lspci', { logger: log_spy }).and_return(output) | |
10 | 11 | end |
11 | 12 | |
12 | 13 | after do |
8 | 8 | before do |
9 | 9 | dmi_resolver.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(Facter::Core::Execution).to receive(:execute) |
11 | .with('sysctl -n hw.model', logger: log_spy) | |
11 | .with('sysctl -n hw.model', { logger: log_spy }) | |
12 | 12 | .and_return(macosx_model) |
13 | 13 | end |
14 | 14 |
6 | 6 | |
7 | 7 | before do |
8 | 8 | filesystems_resolver.instance_variable_set(:@log, log_spy) |
9 | allow(Facter::Core::Execution).to receive(:execute).with('mount', logger: log_spy) | |
10 | .and_return(load_fixture('macosx_filesystems').read) | |
9 | allow(Facter::Core::Execution).to receive(:execute) | |
10 | .with('mount', { logger: log_spy }) | |
11 | .and_return(load_fixture('macosx_filesystems').read) | |
11 | 12 | end |
12 | 13 | |
13 | 14 | describe '#call_the_resolver' do |
8 | 8 | before do |
9 | 9 | load_averages.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(Facter::Core::Execution).to receive(:execute) |
11 | .with('sysctl -n vm.loadavg', logger: log_spy) | |
11 | .with('sysctl -n vm.loadavg', { logger: log_spy }) | |
12 | 12 | .and_return('{ 0.00 0.03 0.03 }') |
13 | 13 | end |
14 | 14 |
18 | 18 | |
19 | 19 | allow(Facter::Core::Execution) |
20 | 20 | .to receive(:execute) |
21 | .with(query_string, logger: log_spy) | |
21 | .with(query_string, { logger: log_spy }) | |
22 | 22 | .and_return(output) |
23 | 23 | end |
24 | 24 |
12 | 12 | before do |
13 | 13 | swap_memory.instance_variable_set(:@log, log_spy) |
14 | 14 | allow(Facter::Core::Execution).to receive(:execute) |
15 | .with('sysctl -n vm.swapusage', logger: log_spy) | |
15 | .with('sysctl -n vm.swapusage', { logger: log_spy }) | |
16 | 16 | .and_return('total = 3072.00M used = 1422.75M free = 1649.25M (encrypted)') |
17 | 17 | end |
18 | 18 |
11 | 11 | before do |
12 | 12 | system_memory.instance_variable_set(:@log, log_spy) |
13 | 13 | allow(Facter::Core::Execution).to receive(:execute) |
14 | .with('sysctl -n hw.memsize', logger: log_spy) | |
14 | .with('sysctl -n hw.memsize', { logger: log_spy }) | |
15 | 15 | .and_return('34359738368') |
16 | 16 | |
17 | 17 | allow(Facter::Core::Execution).to receive(:execute) |
18 | .with('vm_stat', logger: log_spy) | |
18 | .with('vm_stat', { logger: log_spy }) | |
19 | 19 | .and_return(load_fixture('vm_stat').read) |
20 | 20 | end |
21 | 21 |
139 | 139 | .with('/proc/cmdline') |
140 | 140 | .and_return(load_fixture('cmdline_root_device_partuuid').read) |
141 | 141 | allow(Facter::Core::Execution).to receive(:execute) |
142 | .with('blkid', logger: log) | |
142 | .with('blkid', { logger: log }) | |
143 | 143 | .and_return(load_fixture('blkid_output_root_has_partuuid').read) |
144 | 144 | Facter::Resolvers::Mountpoints.instance_variable_set(:@log, log) |
145 | 145 | end |
153 | 153 | context 'when blkid command is not available' do |
154 | 154 | before do |
155 | 155 | allow(Facter::Core::Execution).to receive(:execute) |
156 | .with('blkid', logger: log) | |
156 | .with('blkid', { logger: log }) | |
157 | 157 | .and_return('blkid: command not found') |
158 | 158 | Facter::Resolvers::Mountpoints.instance_variable_set(:@log, log) |
159 | 159 | end |
10 | 10 | allow(Facter::Util::Resolvers::Networking::PrimaryInterface) |
11 | 11 | .to receive(:read_from_route) |
12 | 12 | .and_return(primary) |
13 | allow(Facter::Core::Execution).to receive(:execute).with('ifconfig -a', logger: log_spy).and_return(interfaces) | |
14 | 13 | allow(Facter::Core::Execution) |
15 | .to receive(:execute).with('ipconfig getoption en0 server_identifier', logger: log_spy).and_return(dhcp) | |
14 | .to receive(:execute).with('ifconfig -a', { logger: log_spy }).and_return(interfaces) | |
16 | 15 | allow(Facter::Core::Execution) |
17 | .to receive(:execute).with('ipconfig getoption en0.1 server_identifier', logger: log_spy).and_return(dhcp) | |
16 | .to receive(:execute).with('ipconfig getoption en0 server_identifier', { logger: log_spy }).and_return(dhcp) | |
18 | 17 | allow(Facter::Core::Execution) |
19 | .to receive(:execute).with('ipconfig getoption llw0 server_identifier', logger: log_spy).and_return('') | |
18 | .to receive(:execute).with('ipconfig getoption en0.1 server_identifier', { logger: log_spy }).and_return(dhcp) | |
20 | 19 | allow(Facter::Core::Execution) |
21 | .to receive(:execute).with('ipconfig getoption awdl0 server_identifier', logger: log_spy).and_return(dhcp) | |
20 | .to receive(:execute).with('ipconfig getoption llw0 server_identifier', { logger: log_spy }).and_return('') | |
21 | allow(Facter::Core::Execution) | |
22 | .to receive(:execute).with('ipconfig getoption awdl0 server_identifier', { logger: log_spy }).and_return(dhcp) | |
22 | 23 | end |
23 | 24 | |
24 | 25 | after do |
39 | 39 | allow(Facter::Core::Execution).to receive(:which) |
40 | 40 | .with('blkid').and_return('/usr/bin/blkid') |
41 | 41 | allow(Facter::Core::Execution).to receive(:execute) |
42 | .with('blkid', logger: logger).and_return(load_fixture('blkid_output').read) | |
42 | .with('blkid', { logger: logger }).and_return(load_fixture('blkid_output').read) | |
43 | 43 | allow(Facter::Core::Execution).to receive(:which) |
44 | 44 | .with('lsblk').and_return('/usr/bin/lsblk') |
45 | 45 | allow(Facter::Core::Execution).to receive(:execute) |
46 | .with('lsblk -fp', logger: logger).and_return(load_fixture('lsblk_output').read) | |
46 | .with('lsblk -fp', { logger: logger }).and_return(load_fixture('lsblk_output').read) | |
47 | 47 | end |
48 | 48 | |
49 | 49 | context 'when block has a device subdir' do |
11 | 11 | before do |
12 | 12 | selinux_resolver.instance_variable_set(:@log, log_spy) |
13 | 13 | allow(Facter::Core::Execution).to receive(:execute) |
14 | .with('cat /proc/self/mounts', logger: log_spy) | |
14 | .with('cat /proc/self/mounts', { logger: log_spy }) | |
15 | 15 | .and_return(load_fixture(file).read) |
16 | 16 | end |
17 | 17 |
6 | 6 | allow(File).to receive(:executable?).with('/usr/bin/kstat').and_return(status) |
7 | 7 | allow(Facter::Core::Execution) |
8 | 8 | .to receive(:execute) |
9 | .with('/usr/bin/kstat sderr', logger: resolver.log) | |
9 | .with('/usr/bin/kstat sderr', { logger: resolver.log }) | |
10 | 10 | .and_return(output) |
11 | 11 | end |
12 | 12 |
9 | 9 | resolver.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(File).to receive(:executable?).with('/usr/sbin/prtdiag').and_return(true) |
11 | 11 | allow(Facter::Core::Execution).to receive(:execute) |
12 | .with('/usr/sbin/prtdiag', logger: log_spy) | |
12 | .with('/usr/sbin/prtdiag', { logger: log_spy }) | |
13 | 13 | .and_return(load_fixture('prtdiag').read) |
14 | 14 | allow(File).to receive(:executable?).with('/usr/sbin/sneep').and_return(true) |
15 | 15 | allow(Facter::Core::Execution).to receive(:execute) |
16 | .with('/usr/sbin/sneep', logger: log_spy).and_return('random_string') | |
16 | .with('/usr/sbin/sneep', { logger: log_spy }).and_return('random_string') | |
17 | 17 | end |
18 | 18 | |
19 | 19 | after do |
9 | 9 | resolver.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(File).to receive(:executable?).with('/usr/sbin/smbios').and_return(true) |
11 | 11 | allow(Facter::Core::Execution).to receive(:execute) |
12 | .with('/usr/sbin/smbios -t SMB_TYPE_BIOS', logger: log_spy) | |
12 | .with('/usr/sbin/smbios -t SMB_TYPE_BIOS', { logger: log_spy }) | |
13 | 13 | .and_return(load_fixture('smbios_bios').read) |
14 | 14 | allow(Facter::Core::Execution).to receive(:execute) |
15 | .with('/usr/sbin/smbios -t SMB_TYPE_SYSTEM', logger: log_spy) | |
15 | .with('/usr/sbin/smbios -t SMB_TYPE_SYSTEM', { logger: log_spy }) | |
16 | 16 | .and_return(load_fixture('smbios_system').read) |
17 | 17 | allow(Facter::Core::Execution).to receive(:execute) |
18 | .with('/usr/sbin/smbios -t SMB_TYPE_CHASSIS', logger: log_spy) | |
18 | .with('/usr/sbin/smbios -t SMB_TYPE_CHASSIS', { logger: log_spy }) | |
19 | 19 | .and_return(load_fixture('smbios_chassis').read) |
20 | 20 | end |
21 | 21 |
9 | 9 | filesystems_resolver.instance_variable_set(:@log, log_spy) |
10 | 10 | allow(File).to receive(:executable?).with('/usr/sbin/sysdef').and_return(true) |
11 | 11 | allow(Facter::Core::Execution).to receive(:execute) |
12 | .with('/usr/sbin/sysdef', logger: log_spy) | |
12 | .with('/usr/sbin/sysdef', { logger: log_spy }) | |
13 | 13 | .and_return(load_fixture('solaris_filesystems').read) |
14 | 14 | end |
15 | 15 |
11 | 11 | |
12 | 12 | before do |
13 | 13 | ipaddress.instance_variable_set(:@log, log) |
14 | allow(Facter::Core::Execution).to receive(:execute).with('route -n get default | grep interface', | |
15 | logger: log).and_return(route) | |
14 | allow(Facter::Core::Execution).to receive(:execute) | |
15 | .with('route -n get default | grep interface', { logger: log }) | |
16 | .and_return(route) | |
16 | 17 | end |
17 | 18 | |
18 | 19 | context 'when returns ip' do |
20 | 21 | let(:ifconfig) { load_fixture('solaris_ifconfig').read } |
21 | 22 | |
22 | 23 | before do |
23 | allow(Facter::Core::Execution).to receive(:execute).with('ifconfig net0', logger: log).and_return(ifconfig) | |
24 | allow(Facter::Core::Execution).to receive(:execute) | |
25 | .with('ifconfig net0', { logger: log }) | |
26 | .and_return(ifconfig) | |
24 | 27 | end |
25 | 28 | |
26 | 29 | it 'detects ipadress' do |
8 | 8 | resolver.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution) |
10 | 10 | .to receive(:execute) |
11 | .with('/usr/sbin/virtinfo -a -p', logger: log_spy) | |
11 | .with('/usr/sbin/virtinfo -a -p', { logger: log_spy }) | |
12 | 12 | .and_return(output) |
13 | 13 | end |
14 | 14 |
8 | 8 | resolver.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution) |
10 | 10 | .to receive(:execute) |
11 | .with('/usr/bin/kstat -m unix -n system_pages', logger: log_spy) | |
11 | .with('/usr/bin/kstat -m unix -n system_pages', { logger: log_spy }) | |
12 | 12 | .and_return(kstat_output) |
13 | 13 | allow(Facter::Core::Execution) |
14 | 14 | .to receive(:execute) |
15 | .with('pagesize', logger: log_spy) | |
15 | .with('pagesize', { logger: log_spy }) | |
16 | 16 | .and_return(pagesize) |
17 | 17 | allow(Facter::Core::Execution) |
18 | 18 | .to receive(:execute) |
19 | .with('/usr/sbin/swap -l', logger: log_spy) | |
19 | .with('/usr/sbin/swap -l', { logger: log_spy }) | |
20 | 20 | .and_return(swap_output) |
21 | 21 | end |
22 | 22 |
6 | 6 | allow(File).to receive(:executable?).with('/usr/bin/kstat').and_return(status) |
7 | 7 | allow(Facter::Core::Execution) |
8 | 8 | .to receive(:execute) |
9 | .with('/usr/bin/kstat -m cpu_info', logger: resolver.log) | |
9 | .with('/usr/bin/kstat -m cpu_info', { logger: resolver.log }) | |
10 | 10 | .and_return(output) |
11 | 11 | end |
12 | 12 |
11 | 11 | .with('/bin/zonename') |
12 | 12 | .and_return(true) |
13 | 13 | allow(Facter::Core::Execution).to receive(:execute) |
14 | .with('/bin/zonename', logger: log_spy) | |
14 | .with('/bin/zonename', { logger: log_spy }) | |
15 | 15 | .and_return(zone_name_output) |
16 | 16 | end |
17 | 17 |
7 | 7 | before do |
8 | 8 | solaris_zone.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('/usr/sbin/zoneadm list -cp', logger: log_spy) | |
10 | .with('/usr/sbin/zoneadm list -cp', { logger: log_spy }) | |
11 | 11 | .and_return(output) |
12 | 12 | end |
13 | 13 |
7 | 7 | before do |
8 | 8 | sw_vers.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('sw_vers', logger: log_spy) | |
10 | .with('sw_vers', { logger: log_spy }) | |
11 | 11 | .and_return("ProductName:\tMac OS X\nProductVersion:\t10.14.1\nBuildVersion:\t18B75\n") |
12 | 12 | end |
13 | 13 |
12 | 12 | uname -p && |
13 | 13 | uname -r && |
14 | 14 | uname -s && |
15 | uname -v', logger: log_spy) | |
15 | uname -v', { logger: log_spy }) | |
16 | 16 | .and_return('x86_64 |
17 | 17 | wifi.tsr.corp.puppet.net |
18 | 18 | i386 |
10 | 10 | |
11 | 11 | before do |
12 | 12 | virt_what_resolver.instance_variable_set(:@log, log_spy) |
13 | allow(Facter::Core::Execution).to receive(:execute).with('virt-what', logger: log_spy).and_return(content) | |
13 | allow(Facter::Core::Execution).to receive(:execute).with('virt-what', { logger: log_spy }).and_return(content) | |
14 | 14 | end |
15 | 15 | |
16 | 16 | context 'when virt-what fails' do |
6 | 6 | |
7 | 7 | before do |
8 | 8 | vmware_resolver.instance_variable_set(:@log, log_spy) |
9 | allow(Facter::Core::Execution).to receive(:execute).with('vmware -v', logger: log_spy).and_return(output) | |
9 | allow(Facter::Core::Execution).to receive(:execute).with('vmware -v', { logger: log_spy }).and_return(output) | |
10 | 10 | end |
11 | 11 | |
12 | 12 | after do |
5 | 5 | before do |
6 | 6 | Facter::Resolvers::Wpar.instance_variable_set(:@log, log_spy) |
7 | 7 | allow(Facter::Core::Execution).to receive(:execute) |
8 | .with('/usr/bin/lparstat -W', logger: log_spy) | |
8 | .with('/usr/bin/lparstat -W', { logger: log_spy }) | |
9 | 9 | .and_return(open3_result) |
10 | 10 | end |
11 | 11 |
15 | 15 | allow(File).to receive(:exist?).with('/usr/lib/xen-common/bin/xen-toolstack').and_return(false) |
16 | 16 | allow(File).to receive(:exist?).with('/usr/sbin/xl').and_return(false) |
17 | 17 | allow(File).to receive(:exist?).with('/usr/sbin/xm').and_return(true) |
18 | allow(Facter::Core::Execution).to receive(:execute).with('/usr/sbin/xm list', logger: log_spy).and_return(domains) | |
18 | allow(Facter::Core::Execution).to receive(:execute) | |
19 | .with('/usr/sbin/xm list', { logger: log_spy }).and_return(domains) | |
19 | 20 | |
20 | 21 | xen_resolver.invalidate_cache |
21 | 22 | end |
7 | 7 | before do |
8 | 8 | zfs_resolver.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('zfs upgrade -v', logger: log_spy) | |
10 | .with('zfs upgrade -v', { logger: log_spy }) | |
11 | 11 | .and_return(output) |
12 | 12 | end |
13 | 13 |
7 | 7 | before do |
8 | 8 | zpool_resolver.instance_variable_set(:@log, log_spy) |
9 | 9 | allow(Facter::Core::Execution).to receive(:execute) |
10 | .with('zpool upgrade -v', logger: log_spy) | |
10 | .with('zpool upgrade -v', { logger: log_spy }) | |
11 | 11 | .and_return(output) |
12 | 12 | end |
13 | 13 |
11 | 11 | it 'creates a query' do |
12 | 12 | odm_query.equals('name', '12345') |
13 | 13 | |
14 | expect(Facter::Core::Execution).to receive(:execute).with("odmget -q \"name='12345'\" CuAt", logger: log_spy) | |
14 | expect(Facter::Core::Execution).to receive(:execute).with("odmget -q \"name='12345'\" CuAt", { logger: log_spy }) | |
15 | 15 | odm_query.execute |
16 | 16 | end |
17 | 17 | |
19 | 19 | odm_query.equals('field1', 'value').like('field2', 'value*') |
20 | 20 | |
21 | 21 | expect(Facter::Core::Execution).to receive(:execute) |
22 | .with("odmget -q \"field1='value' AND field2 like 'value*'\" CuAt", logger: log_spy) | |
22 | .with("odmget -q \"field1='value' AND field2 like 'value*'\" CuAt", { logger: log_spy }) | |
23 | 23 | odm_query.execute |
24 | 24 | end |
25 | 25 | end |
16 | 16 | it 'returns the correct result' do |
17 | 17 | allow(Facter::Core::Execution) |
18 | 18 | .to receive(:execute) |
19 | .with(uptime_proc_file_cmd, logger: log_spy) | |
19 | .with(uptime_proc_file_cmd, { logger: log_spy }) | |
20 | 20 | .and_return(proc_uptime_value) |
21 | 21 | |
22 | 22 | expect(Facter::Util::Facts::UptimeParser.uptime_seconds_unix).to eq(2672) |
35 | 35 | |
36 | 36 | allow(Facter::Core::Execution) |
37 | 37 | .to receive(:execute) |
38 | .with(uptime_proc_file_cmd, logger: log_spy) | |
38 | .with(uptime_proc_file_cmd, { logger: log_spy }) | |
39 | 39 | .and_return('') |
40 | 40 | |
41 | 41 | allow(Facter::Core::Execution) |
42 | 42 | .to receive(:execute) |
43 | .with(kern_boottime_cmd, logger: log_spy) | |
43 | .with(kern_boottime_cmd, { logger: log_spy }) | |
44 | 44 | .and_return(kern_boottime_value) |
45 | 45 | |
46 | 46 | expect(Facter::Util::Facts::UptimeParser.uptime_seconds_unix).to eq(60) |
51 | 51 | before do |
52 | 52 | allow(Facter::Core::Execution) |
53 | 53 | .to receive(:execute) |
54 | .with(uptime_proc_file_cmd, logger: log_spy) | |
54 | .with(uptime_proc_file_cmd, { logger: log_spy }) | |
55 | 55 | .and_return('') |
56 | 56 | |
57 | 57 | allow(Facter::Core::Execution) |
58 | 58 | .to receive(:execute) |
59 | .with(kern_boottime_cmd, logger: log_spy) | |
59 | .with(kern_boottime_cmd, { logger: log_spy }) | |
60 | 60 | .and_return('') |
61 | 61 | end |
62 | 62 | |
64 | 64 | it 'returns the correct result' do |
65 | 65 | allow(Facter::Core::Execution) |
66 | 66 | .to receive(:execute) |
67 | .with(uptime_cmd, logger: log_spy) | |
67 | .with(uptime_cmd, { logger: log_spy }) | |
68 | 68 | .and_return(cmd_output) |
69 | 69 | |
70 | 70 | expect(Facter::Util::Facts::UptimeParser.uptime_seconds_unix).to eq(result) |
97 | 97 | end |
98 | 98 | |
99 | 99 | describe '#dir_children' do |
100 | context 'with ruby < 2.5' do | |
101 | before do | |
102 | allow(Dir).to receive(:entries).with(File.dirname(path)).and_return(entries + ['.', '..']) | |
103 | stub_const('RUBY_VERSION', '2.4.5') | |
104 | end | |
105 | ||
106 | it 'delegates to Dir.entries' do | |
107 | file_helper.dir_children(File.dirname(path)) | |
108 | expect(Dir).to have_received(:entries) | |
109 | end | |
110 | ||
111 | it 'correctly resolves entries' do | |
112 | expect(file_helper.dir_children(File.dirname(path))).to eq(entries) | |
113 | end | |
100 | before do | |
101 | allow(Dir).to receive(:children).with(File.dirname(path)).and_return(entries) | |
102 | stub_const('RUBY_VERSION', '2.5.9') | |
114 | 103 | end |
115 | 104 | |
116 | context 'with ruby >= 2.5', if: RUBY_VERSION.to_f >= 2.5 do | |
117 | before do | |
118 | allow(Dir).to receive(:children).with(File.dirname(path)).and_return(entries) | |
119 | stub_const('RUBY_VERSION', '2.5.1') | |
120 | end | |
105 | it 'delegates to Dir.children' do | |
106 | file_helper.dir_children(File.dirname(path)) | |
107 | expect(Dir).to have_received(:children) | |
108 | end | |
121 | 109 | |
122 | it 'delegates to Dir.children' do | |
123 | file_helper.dir_children(File.dirname(path)) | |
124 | expect(Dir).to have_received(:children) | |
125 | end | |
126 | ||
127 | it 'correctly resolves entries' do | |
128 | expect(file_helper.dir_children(File.dirname(path))).to eq(entries) | |
129 | end | |
110 | it 'correctly resolves entries' do | |
111 | expect(file_helper.dir_children(File.dirname(path))).to eq(entries) | |
130 | 112 | end |
131 | 113 | end |
132 | 114 |
70 | 70 | allow(Facter::Core::Execution).to receive(:which) |
71 | 71 | .with('dhcpcd').and_return('/usr/bin/dhcpcd') |
72 | 72 | allow(Facter::Core::Execution).to receive(:execute) |
73 | .with('/usr/bin/dhcpcd -U ens160', logger: log_spy).and_return(load_fixture('dhcpcd').read) | |
73 | .with('/usr/bin/dhcpcd -U ens160', { logger: log_spy }).and_return(load_fixture('dhcpcd').read) | |
74 | 74 | |
75 | 75 | dhcp_search.instance_eval { @dhcpcd_command = nil } |
76 | 76 | end |
8 | 8 | context 'when ip route show finds an IP, Socket lib did not retrieve' do |
9 | 9 | before do |
10 | 10 | allow(Facter::Core::Execution).to receive(:execute) |
11 | .with('ip route show', logger: log_spy).and_return(load_fixture('ip_route_show').read) | |
11 | .with('ip route show', { logger: log_spy }).and_return(load_fixture('ip_route_show').read) | |
12 | 12 | allow(Facter::Core::Execution).to receive(:execute) |
13 | .with('ip -6 route show', logger: log_spy).and_return(load_fixture('ip_-6_route_show').read) | |
13 | .with('ip -6 route show', { logger: log_spy }).and_return(load_fixture('ip_-6_route_show').read) | |
14 | 14 | end |
15 | 15 | |
16 | 16 | it 'returns the ipv4 info' do |
26 | 26 | allow(Socket).to receive(:getifaddrs).and_return(ifaddrs) |
27 | 27 | allow(Socket).to receive(:const_defined?).with(:PF_LINK).and_return(true) |
28 | 28 | allow(Facter::Core::Execution).to receive(:execute) |
29 | .with('ip -o link show', logger: log_spy).and_return(load_fixture('ip_link_show_all').read) | |
29 | .with('ip -o link show', { logger: log_spy }).and_return(load_fixture('ip_link_show_all').read) | |
30 | 30 | end |
31 | 31 | |
32 | 32 | let(:result) do |