rspec-puppet-facts 5.0.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
- require 'puppet'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'facter'
3
4
  require 'facterdb'
4
5
  require 'json'
@@ -57,7 +58,7 @@ module RspecPuppetFacts
57
58
  #
58
59
  # @api private
59
60
  def on_supported_os_implementation(opts = {})
60
- unless /\A\d+\.\d+(?:\.\d+)*\z/.match?((facterversion = opts[:facterversion]))
61
+ unless /\A\d+\.\d+(?:\.\d+)*\z/.match?(facterversion = opts[:facterversion])
61
62
  raise ArgumentError, ":facterversion must be in the format 'n.n' or 'n.n.n' (n is numeric), not '#{facterversion}'"
62
63
  end
63
64
 
@@ -252,12 +253,23 @@ module RspecPuppetFacts
252
253
  def self.common_facts
253
254
  return @common_facts if @common_facts
254
255
 
256
+ # from Facter itself
255
257
  @common_facts = {
256
- puppetversion: Puppet.version,
257
258
  rubysitedir: RbConfig::CONFIG['sitelibdir'],
258
259
  rubyversion: RUBY_VERSION,
259
260
  }
260
261
 
262
+ begin
263
+ require 'puppet'
264
+ rescue LoadError
265
+ warning 'Could not load Puppet'
266
+ else
267
+ # from Puppet.initialize_facts
268
+ @common_facts[:puppetversion] = Puppet.version.to_s
269
+ # from Puppet::Node::Facts#add_local_facts
270
+ @common_facts[:implementation] = Puppet.implementation if Puppet.respond_to?(:implementation)
271
+ end
272
+
261
273
  @common_facts[:mco_version] = MCollective::VERSION if mcollective?
262
274
 
263
275
  if augeas?
@@ -391,22 +403,15 @@ module RspecPuppetFacts
391
403
  def self.facter_version_for_puppet_version(puppet_version)
392
404
  return Facter.version if puppet_version.nil?
393
405
 
394
- json_path = File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_components.json'))
406
+ json_path = File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_facter_versions.json'))
395
407
  unless File.file?(json_path) && File.readable?(json_path)
396
408
  warning "#{json_path} does not exist or is not readable, defaulting to Facter #{Facter.version}"
397
409
  return Facter.version
398
410
  end
399
411
 
400
- fd = File.open(json_path, 'rb:UTF-8')
401
- data = JSON.parse(fd.read)
402
-
403
- version_map = data.map do |_, versions|
404
- if versions['puppet'].nil? || versions['facter'].nil?
405
- nil
406
- else
407
- [Gem::Version.new(versions['puppet']), versions['facter']]
408
- end
409
- end.compact
412
+ version_map = JSON.parse(File.read(json_path)).map do |puppet, facter|
413
+ [Gem::Version.new(puppet), facter]
414
+ end
410
415
 
411
416
  puppet_gem_version = Gem::Version.new(puppet_version)
412
417
  applicable_versions = version_map.select { |p, _| puppet_gem_version >= p }
@@ -419,12 +424,17 @@ module RspecPuppetFacts
419
424
  rescue JSON::ParserError
420
425
  warning "#{json_path} contains invalid JSON, defaulting to Facter #{Facter.version}"
421
426
  Facter.version
422
- ensure
423
- fd.close if fd
424
427
  end
425
428
  end
426
429
 
427
430
  RSpec.configure do |c|
428
- c.add_setting :default_facter_version, default: RspecPuppetFacts.facter_version_for_puppet_version(Puppet.version)
431
+ begin
432
+ require 'puppet'
433
+ rescue LoadError
434
+ puppet_version = nil
435
+ else
436
+ puppet_version = Puppet.version
437
+ end
438
+ c.add_setting :default_facter_version, default: RspecPuppetFacts.facter_version_for_puppet_version(puppet_version)
429
439
  c.add_setting :facterdb_string_keys, default: false
430
440
  end
@@ -23,10 +23,9 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency 'rspec', '~> 3.12'
24
24
  s.add_development_dependency 'yard', '~> 0.9.34'
25
25
 
26
- s.add_development_dependency 'voxpupuli-rubocop', '~> 2.8.0'
26
+ s.add_development_dependency 'voxpupuli-rubocop', '~> 3.1.0'
27
27
 
28
- s.add_runtime_dependency 'deep_merge', '~> 1.2'
29
- s.add_runtime_dependency 'facter', '< 5'
30
- s.add_runtime_dependency 'facterdb', '~> 3.1'
31
- s.add_runtime_dependency 'puppet', '>= 7', '< 9'
28
+ s.add_dependency 'deep_merge', '~> 1.2'
29
+ s.add_dependency 'facter', '< 5'
30
+ s.add_dependency 'facterdb', '~> 3.1'
32
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
  require 'json'
3
5
  require 'stringio'
@@ -19,7 +21,7 @@ describe RspecPuppetFacts do
19
21
  end
20
22
 
21
23
  let(:component_json_path) do
22
- File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_components.json'))
24
+ File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_facter_versions.json'))
23
25
  end
24
26
 
25
27
  let(:puppet_version) { Puppet.version }
@@ -60,8 +62,7 @@ describe RspecPuppetFacts do
60
62
 
61
63
  context 'when the component JSON file is unparseable' do
62
64
  before do
63
- io = StringIO.new('this is not JSON!')
64
- allow(File).to receive(:open).with(component_json_path, anything).and_return(io)
65
+ allow(File).to receive(:read).with(component_json_path).and_return('not json')
65
66
  allow(described_class).to receive(:warning)
66
67
  end
67
68
 
@@ -88,14 +89,11 @@ describe RspecPuppetFacts do
88
89
  let(:puppet_version) { '999.0.0' }
89
90
 
90
91
  it 'returns the Facter version for the highest known Puppet version' do
91
- known_facter_versions = JSON.parse(File.read(component_json_path)).map do |_, r|
92
- r['facter']
93
- end
94
- sorted_facter_versions = known_facter_versions.compact.sort do |a, b|
95
- Gem::Version.new(b) <=> Gem::Version.new(a)
92
+ expected = JSON.parse(File.read(component_json_path)).values.max_by do |version|
93
+ Gem::Version.new(version)
96
94
  end
97
95
 
98
- expect(facter_version).to eq(sorted_facter_versions.first)
96
+ expect(facter_version).to eq(expected)
99
97
  end
100
98
  end
101
99
 
@@ -208,7 +206,7 @@ describe RspecPuppetFacts do
208
206
  end
209
207
 
210
208
  it 'returns a hash' do
211
- is_expected.to be_a Hash
209
+ expect(subject).to be_a Hash
212
210
  end
213
211
 
214
212
  it 'returns supported OS' do
@@ -280,7 +278,7 @@ describe RspecPuppetFacts do
280
278
  end
281
279
 
282
280
  it 'returns a hash' do
283
- is_expected.to be_a Hash
281
+ expect(subject).to be_a Hash
284
282
  end
285
283
 
286
284
  it 'returns supported OS' do
@@ -643,7 +641,7 @@ describe RspecPuppetFacts do
643
641
  end
644
642
 
645
643
  it 'returns facts from the specified default Facter version' do
646
- is_expected.to match(
644
+ expect(subject).to match(
647
645
  'centos-9-x86_64' => include(
648
646
  facterversion: /\A4\.6\./,
649
647
  ),
@@ -666,7 +664,7 @@ describe RspecPuppetFacts do
666
664
  end
667
665
 
668
666
  it 'returns facts from a facter version matching version and below' do
669
- is_expected.to match(
667
+ expect(subject).to match(
670
668
  'centos-9-x86_64' => include(
671
669
  facterversion: /\A4\.[0-7]\./,
672
670
  ),
@@ -695,7 +693,7 @@ describe RspecPuppetFacts do
695
693
  end
696
694
 
697
695
  it 'returns facts from a facter version matching 4.6' do
698
- is_expected.to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
696
+ expect(subject).to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
699
697
  end
700
698
  end
701
699
 
@@ -710,7 +708,7 @@ describe RspecPuppetFacts do
710
708
  end
711
709
 
712
710
  it 'returns facts from a facter version matching 4.6.1' do
713
- is_expected.to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
711
+ expect(subject).to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
714
712
  end
715
713
  end
716
714
 
@@ -751,11 +749,11 @@ describe RspecPuppetFacts do
751
749
  end
752
750
 
753
751
  it 'returns CentOS facts from a facter version matching 4.5' do
754
- is_expected.to include('centos-9-x86_64' => include(facterversion: '4.5.2'))
752
+ expect(subject).to include('centos-9-x86_64' => include(facterversion: '4.5.2'))
755
753
  end
756
754
 
757
755
  it 'returns Debian facts from a facter version matching 4.6.1' do
758
- is_expected.to include('debian-12-x86_64' => include(facterversion: '4.6.1'))
756
+ expect(subject).to include('debian-12-x86_64' => include(facterversion: '4.6.1'))
759
757
  end
760
758
  end
761
759
  end
data/spec/spec_helper.rb CHANGED
@@ -1,26 +1,4 @@
1
- begin
2
- require 'simplecov'
3
- require 'simplecov-console'
4
- require 'codecov'
5
- rescue LoadError
6
- else
7
- SimpleCov.start do
8
- track_files 'lib/**/*.rb'
9
-
10
- add_filter '/spec'
11
-
12
- enable_coverage :branch
13
-
14
- # do not track vendored files
15
- add_filter '/vendor'
16
- add_filter '/.vendor'
17
- end
18
-
19
- SimpleCov.formatters = [
20
- SimpleCov::Formatter::Console,
21
- SimpleCov::Formatter::Codecov,
22
- ]
23
- end
1
+ # frozen_string_literal: true
24
2
 
25
3
  require 'rspec'
26
4
  require 'rspec-puppet-facts'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-puppet-facts
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-07-08 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: mime-types
@@ -78,14 +77,14 @@ dependencies:
78
77
  requirements:
79
78
  - - "~>"
80
79
  - !ruby/object:Gem::Version
81
- version: 2.8.0
80
+ version: 3.1.0
82
81
  type: :development
83
82
  prerelease: false
84
83
  version_requirements: !ruby/object:Gem::Requirement
85
84
  requirements:
86
85
  - - "~>"
87
86
  - !ruby/object:Gem::Version
88
- version: 2.8.0
87
+ version: 3.1.0
89
88
  - !ruby/object:Gem::Dependency
90
89
  name: deep_merge
91
90
  requirement: !ruby/object:Gem::Requirement
@@ -128,26 +127,6 @@ dependencies:
128
127
  - - "~>"
129
128
  - !ruby/object:Gem::Version
130
129
  version: '3.1'
131
- - !ruby/object:Gem::Dependency
132
- name: puppet
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- version: '7'
138
- - - "<"
139
- - !ruby/object:Gem::Version
140
- version: '9'
141
- type: :runtime
142
- prerelease: false
143
- version_requirements: !ruby/object:Gem::Requirement
144
- requirements:
145
- - - ">="
146
- - !ruby/object:Gem::Version
147
- version: '7'
148
- - - "<"
149
- - !ruby/object:Gem::Version
150
- version: '9'
151
130
  description: Contains facts from many Facter version on many Operating Systems
152
131
  email:
153
132
  - voxpupuli@groups.io
@@ -156,6 +135,7 @@ extensions: []
156
135
  extra_rdoc_files: []
157
136
  files:
158
137
  - ".github/dependabot.yml"
138
+ - ".github/release.yml"
159
139
  - ".github/workflows/release.yml"
160
140
  - ".github/workflows/test.yml"
161
141
  - ".gitignore"
@@ -168,7 +148,7 @@ files:
168
148
  - LICENSE
169
149
  - README.md
170
150
  - Rakefile
171
- - ext/puppet_agent_components.json
151
+ - ext/puppet_agent_facter_versions.json
172
152
  - lib/rspec-puppet-facts.rb
173
153
  - lib/rspec-puppet-facts/version.rb
174
154
  - rspec-puppet-facts.gemspec
@@ -180,7 +160,6 @@ homepage: http://github.com/voxpupuli/rspec-puppet-facts
180
160
  licenses:
181
161
  - Apache-2.0
182
162
  metadata: {}
183
- post_install_message:
184
163
  rdoc_options: []
185
164
  require_paths:
186
165
  - lib
@@ -195,8 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
174
  - !ruby/object:Gem::Version
196
175
  version: '0'
197
176
  requirements: []
198
- rubygems_version: 3.5.11
199
- signing_key:
177
+ rubygems_version: 3.6.7
200
178
  specification_version: 4
201
179
  summary: Standard facts fixtures for Puppet
202
180
  test_files: []