rspec-puppet-facts 3.0.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d829fff0e8b5d1ca49d62e80553aeb95658f8b12fd774c92c9f92322a52bbe1
4
- data.tar.gz: a00418119004c0fbad99a43362ff35f3e76ee118b2f460c922c3b4d6d51fce49
3
+ metadata.gz: 26b5f9acb794f67889cc8d24cb1bc35b73e0c20d1e855f88ac8d65cf1ca8cbbf
4
+ data.tar.gz: 920bd51e0f0def41e2f7ea8a38aa26b7247d8e311b3cda87b08eaa592fdecda1
5
5
  SHA512:
6
- metadata.gz: 2467fd5253ad8096ac306a162580b4bff64cee7ff0193a67b769ef2d272346781e12b9c07ed69dd33ace30b00dd51f6668bb99c2493d5976be4fbc896f86b9cd
7
- data.tar.gz: '092e3f2d3b573d26caf21c953fc8dbc92e5a77599a34b61da190669514f6875a01df1289e6daeec43760c7a591f2491fef5c6decf708bccee4f6ad67a881793d'
6
+ metadata.gz: 7290dffe6d55a28fa8fc721c03c394b2715a6fa282a8af544ab5ab7fa6428976592b8cd0e853f88bce10f70bfcd403fb49b77b0ba74ddb37823bdd5b19bdcc03
7
+ data.tar.gz: 5d23c2f0ae77ecc1a562e0e3aa079ff0c097f48c495d4c39cc17e486f4bbb3d6974a6a3f458d5b05df294c461e209df718ea342b270b9cae6a4d298a9db9e6f4
data/.rubocop.yml CHANGED
@@ -4,10 +4,10 @@ inherit_from: .rubocop_todo.yml
4
4
  inherit_gem:
5
5
  voxpupuli-rubocop: rubocop.yml
6
6
 
7
- Style:
7
+ Layout/LineLength:
8
8
  Enabled: false
9
9
 
10
- Layout:
10
+ Style/IfUnlessModifier:
11
11
  Enabled: false
12
12
 
13
13
  # To match the gem name
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2023-07-06 14:12:32 UTC using RuboCop version 1.50.2.
3
+ # on 2024-06-09 17:48:43 UTC using RuboCop version 1.63.5.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -12,7 +12,7 @@ Performance/MapCompact:
12
12
  Exclude:
13
13
  - 'lib/rspec-puppet-facts.rb'
14
14
 
15
- # Offense count: 32
15
+ # Offense count: 29
16
16
  # Configuration parameters: Prefixes, AllowedPatterns.
17
17
  # Prefixes: when, with, without
18
18
  RSpec/ContextWording:
@@ -29,7 +29,7 @@ RSpec/ExpectInHook:
29
29
  Exclude:
30
30
  - 'spec/rspec_puppet_facts_spec.rb'
31
31
 
32
- # Offense count: 20
32
+ # Offense count: 8
33
33
  # This cop supports safe autocorrection (--autocorrect).
34
34
  # Configuration parameters: EnforcedStyle.
35
35
  # SupportedStyles: single_line_only, single_statement_only, disallow, require_implicit
@@ -52,14 +52,14 @@ RSpec/MessageSpies:
52
52
  RSpec/MultipleExpectations:
53
53
  Max: 2
54
54
 
55
- # Offense count: 46
55
+ # Offense count: 40
56
56
  # Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
57
57
  # SupportedStyles: always, named_only
58
58
  RSpec/NamedSubject:
59
59
  Exclude:
60
60
  - 'spec/rspec_puppet_facts_spec.rb'
61
61
 
62
- # Offense count: 14
62
+ # Offense count: 13
63
63
  # Configuration parameters: AllowedGroups.
64
64
  RSpec/NestedGroups:
65
65
  Max: 6
@@ -74,3 +74,60 @@ RSpec/StubbedMock:
74
74
  Rake/Desc:
75
75
  Exclude:
76
76
  - 'Rakefile'
77
+
78
+ # Offense count: 6
79
+ # This cop supports unsafe autocorrection (--autocorrect-all).
80
+ # Configuration parameters: EnforcedStyle.
81
+ # SupportedStyles: always, always_true, never
82
+ Style/FrozenStringLiteralComment:
83
+ Exclude:
84
+ - 'Gemfile'
85
+ - 'Rakefile'
86
+ - 'lib/rspec-puppet-facts.rb'
87
+ - 'lib/rspec-puppet-facts/version.rb'
88
+ - 'spec/rspec_puppet_facts_spec.rb'
89
+ - 'spec/spec_helper.rb'
90
+
91
+ # Offense count: 1
92
+ Style/MixinUsage:
93
+ Exclude:
94
+ - 'spec/spec_helper.rb'
95
+
96
+ # Offense count: 3
97
+ # This cop supports unsafe autocorrection (--autocorrect-all).
98
+ # Configuration parameters: EnforcedStyle.
99
+ # SupportedStyles: literals, strict
100
+ Style/MutableConstant:
101
+ Exclude:
102
+ - 'lib/rspec-puppet-facts.rb'
103
+ - 'lib/rspec-puppet-facts/version.rb'
104
+ - 'spec/rspec_puppet_facts_spec.rb'
105
+
106
+ # Offense count: 1
107
+ # This cop supports unsafe autocorrection (--autocorrect-all).
108
+ # Configuration parameters: Methods.
109
+ Style/RedundantArgument:
110
+ Exclude:
111
+ - 'lib/rspec-puppet-facts.rb'
112
+
113
+ # Offense count: 1
114
+ # This cop supports unsafe autocorrection (--autocorrect-all).
115
+ Style/RedundantSort:
116
+ Exclude:
117
+ - 'lib/rspec-puppet-facts.rb'
118
+
119
+ # Offense count: 2
120
+ # This cop supports unsafe autocorrection (--autocorrect-all).
121
+ # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
122
+ # AllowedMethods: present?, blank?, presence, try, try!
123
+ Style/SafeNavigation:
124
+ Exclude:
125
+ - 'lib/rspec-puppet-facts.rb'
126
+
127
+ # Offense count: 2
128
+ # This cop supports unsafe autocorrection (--autocorrect-all).
129
+ # Configuration parameters: RequireEnglish, EnforcedStyle.
130
+ # SupportedStyles: use_perl_names, use_english_names, use_builtin_english_names
131
+ Style/SpecialGlobalVars:
132
+ Exclude:
133
+ - 'lib/rspec-puppet-facts.rb'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.0](https://github.com/voxpupuli/rspec-puppet-facts/tree/4.0.0) (2024-06-10)
4
+
5
+ [Full Changelog](https://github.com/voxpupuli/rspec-puppet-facts/compare/3.0.0...4.0.0)
6
+
7
+ **Breaking changes:**
8
+
9
+ - Rely on modern facts [\#178](https://github.com/voxpupuli/rspec-puppet-facts/pull/178) ([ekohl](https://github.com/ekohl))
10
+ - Require FacterDB 2.x [\#176](https://github.com/voxpupuli/rspec-puppet-facts/pull/176) ([bastelfreak](https://github.com/bastelfreak))
11
+
12
+ **Implemented enhancements:**
13
+
14
+ - work with symbolized strings [\#175](https://github.com/voxpupuli/rspec-puppet-facts/pull/175) ([bastelfreak](https://github.com/bastelfreak))
15
+
16
+ **Merged pull requests:**
17
+
18
+ - rubocop: Fix Layout cops [\#182](https://github.com/voxpupuli/rspec-puppet-facts/pull/182) ([bastelfreak](https://github.com/bastelfreak))
19
+ - Use max\_by to determine the maximum value [\#181](https://github.com/voxpupuli/rspec-puppet-facts/pull/181) ([ekohl](https://github.com/ekohl))
20
+ - rubocop: Fix Style cops [\#180](https://github.com/voxpupuli/rspec-puppet-facts/pull/180) ([bastelfreak](https://github.com/bastelfreak))
21
+ - Use more native rspec matchers in tests [\#179](https://github.com/voxpupuli/rspec-puppet-facts/pull/179) ([ekohl](https://github.com/ekohl))
22
+ - Update voxpupuli-rubocop requirement from ~\> 2.6.0 to ~\> 2.7.0 [\#171](https://github.com/voxpupuli/rspec-puppet-facts/pull/171) ([dependabot[bot]](https://github.com/apps/dependabot))
23
+
3
24
  ## [3.0.0](https://github.com/voxpupuli/rspec-puppet-facts/tree/3.0.0) (2024-03-23)
4
25
 
5
26
  [Full Changelog](https://github.com/voxpupuli/rspec-puppet-facts/compare/2.0.5...3.0.0)
data/Gemfile CHANGED
@@ -2,14 +2,14 @@ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'facter', ENV['FACTER_GEM_VERSION'], :require => false
5
+ gem 'facter', ENV.fetch('FACTER_GEM_VERSION', nil), require: false
6
6
 
7
7
  group :release do
8
8
  gem 'faraday-retry', '~> 2.1', require: false
9
9
  gem 'github_changelog_generator', '~> 1.16.4', require: false
10
10
  end
11
11
 
12
- group :coverage, optional: ENV['COVERAGE']!='yes' do
13
- gem 'codecov', :require => false
14
- gem 'simplecov-console', :require => false
12
+ group :coverage, optional: ENV['COVERAGE'] != 'yes' do
13
+ gem 'codecov', require: false
14
+ gem 'simplecov-console', require: false
15
15
  end
data/README.md CHANGED
@@ -98,7 +98,7 @@ end
98
98
 
99
99
  ## Specifying a default Facter version
100
100
 
101
- By default, `os_supported_os` will return the facts for the version of Facter
101
+ By default, `on_supported_os` will return the facts for the version of Facter
102
102
  that it has loaded (usually this is Facter 2.5.1). This behaviour can be
103
103
  overridden by setting the `default_facter_version` RSpec setting in your
104
104
  `spec/spec_helper.rb` file.
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
1
  PUPPET_VERSIONS_PATH = File.join(__dir__, 'ext', 'puppet_agent_components.json')
2
2
 
3
3
  begin
4
- require 'rspec/core/rake_task'
5
- require 'yard'
6
- RSpec::Core::RakeTask.new(:spec)
7
- YARD::Rake::YardocTask.new
4
+ require 'rspec/core/rake_task'
5
+ require 'yard'
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ YARD::Rake::YardocTask.new
8
8
  rescue LoadError
9
9
  # yard is optional
10
10
  end
@@ -40,8 +40,8 @@ namespace :puppet_versions do
40
40
 
41
41
  output = `git status --porcelain #{PUPPET_VERSIONS_PATH}`
42
42
  unless output.strip.empty?
43
- $stderr.puts "#{PUPPET_VERSIONS_PATH} is out of date."
44
- $stderr.puts 'Run the puppet_versions:update task to update it and commit the changes.'
43
+ warn "#{PUPPET_VERSIONS_PATH} is out of date."
44
+ warn 'Run the puppet_versions:update task to update it and commit the changes.'
45
45
  raise
46
46
  end
47
47
  end
@@ -54,7 +54,7 @@ rescue LoadError
54
54
  else
55
55
  require 'rubygems'
56
56
  GitHubChangelogGenerator::RakeTask.new :changelog do |config|
57
- config.exclude_labels = %w{duplicate question invalid wontfix wont-fix skip-changelog github_actions}
57
+ config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog github_actions]
58
58
  config.user = 'voxpupuli'
59
59
  config.project = 'rspec-puppet-facts'
60
60
  gem_version = Gem::Specification.load("#{config.project}.gemspec").version
@@ -2,6 +2,6 @@ module RspecPuppetFacts
2
2
  # This module contains the current version constant
3
3
  module Version
4
4
  # The current version of this gem
5
- STRING = '3.0.0'
5
+ STRING = '4.0.0'
6
6
  end
7
7
  end
@@ -58,8 +58,7 @@ module RspecPuppetFacts
58
58
  # @api private
59
59
  def on_supported_os_implementation(opts = {})
60
60
  unless /\A\d+\.\d+(?:\.\d+)*\z/.match?((facterversion = opts[:facterversion]))
61
- raise ArgumentError, ":facterversion must be in the format 'n.n' or " \
62
- "'n.n.n' (n is numeric), not '#{facterversion}'"
61
+ raise ArgumentError, ":facterversion must be in the format 'n.n' or 'n.n.n' (n is numeric), not '#{facterversion}'"
63
62
  end
64
63
 
65
64
  filter = []
@@ -67,7 +66,6 @@ module RspecPuppetFacts
67
66
  if os_sup['operatingsystemrelease']
68
67
  Array(os_sup['operatingsystemrelease']).map do |operatingsystemmajrelease|
69
68
  opts[:hardwaremodels].each do |hardwaremodel|
70
-
71
69
  os_release_filter = "/^#{Regexp.escape(operatingsystemmajrelease.split(' ')[0])}/"
72
70
  case os_sup['operatingsystem']
73
71
  when /BSD/i
@@ -82,48 +80,46 @@ module RspecPuppetFacts
82
80
  "/^#{operatingsystemmajrelease}-/"
83
81
  end
84
82
  when /Windows/i
85
- hardwaremodel = /^[12]\./.match?(facterversion) ? 'x64' : 'x86_64'
83
+ hardwaremodel = 'x86_64'
86
84
  os_sup['operatingsystem'] = os_sup['operatingsystem'].downcase
87
85
  operatingsystemmajrelease = operatingsystemmajrelease[/\A(?:Server )?(.+)/i, 1]
88
86
 
89
87
  # force quoting because windows releases can contain spaces
90
88
  os_release_filter = "\"#{operatingsystemmajrelease}\""
91
-
92
- if operatingsystemmajrelease == '2016' && Puppet::Util::Package.versioncmp(facterversion, '3.4') < 0
93
- os_release_filter = '/^10\\.0\\./'
94
- end
95
89
  when /Amazon/i
96
90
  # Tighten the regex for Amazon Linux 2 so that we don't pick up Amazon Linux 2016 or 2017 facts
97
- os_release_filter = "/^2$/" if operatingsystemmajrelease == '2'
91
+ os_release_filter = '/^2$/' if operatingsystemmajrelease == '2'
98
92
  end
99
93
 
100
94
  filter << {
101
- :operatingsystem => os_sup['operatingsystem'],
102
- :operatingsystemrelease => os_release_filter,
103
- :hardwaremodel => hardwaremodel,
95
+ 'os.name' => os_sup['operatingsystem'],
96
+ 'os.release.full' => os_release_filter,
97
+ 'os.hardware' => hardwaremodel,
104
98
  }
105
99
  end
106
100
  end
107
101
  else
108
102
  opts[:hardwaremodels].each do |hardwaremodel|
109
103
  filter << {
110
- :operatingsystem => os_sup['operatingsystem'],
111
- :hardwaremodel => hardwaremodel,
104
+ 'os.name' => os_sup['operatingsystem'],
105
+ 'os.hardware' => hardwaremodel,
112
106
  }
113
107
  end
114
108
  end
115
109
  end
116
110
 
117
- strict_requirement = RspecPuppetFacts::facter_version_to_strict_requirement(facterversion)
111
+ strict_requirement = RspecPuppetFacts.facter_version_to_strict_requirement(facterversion)
118
112
 
119
- loose_requirement = RspecPuppetFacts::facter_version_to_loose_requirement(facterversion)
113
+ loose_requirement = RspecPuppetFacts.facter_version_to_loose_requirement(facterversion)
120
114
  received_facts = []
121
115
 
122
116
  # FacterDB may have newer versions of facter data for which it contains a subset of all possible
123
117
  # facter data (see FacterDB 0.5.2 for Facter releases 3.8 and 3.9). In this situation we need to
124
118
  # cycle through and downgrade Facter versions per platform type until we find matching Facter data.
125
119
  filter.each do |filter_spec|
126
- versions = FacterDB.get_facts(filter_spec).to_h { |facts| [Gem::Version.new(facts[:facterversion]), facts] }
120
+ versions = FacterDB.get_facts(filter_spec, symbolize_keys: !RSpec.configuration.facterdb_string_keys).to_h do |facts|
121
+ [Gem::Version.new(facts[:facterversion]), facts]
122
+ end
127
123
 
128
124
  version, facts = versions.select { |v, _f| strict_requirement =~ v }.max_by { |v, _f| v }
129
125
 
@@ -131,9 +127,7 @@ module RspecPuppetFacts
131
127
  version, facts = versions.select { |v, _f| loose_requirement =~ v }.max_by { |v, _f| v } if loose_requirement
132
128
  next unless version
133
129
 
134
- if RspecPuppetFacts.spec_facts_strict?
135
- raise ArgumentError, "No facts were found in the FacterDB for Facter v#{facterversion} on #{filter_spec}, aborting"
136
- end
130
+ raise ArgumentError, "No facts were found in the FacterDB for Facter v#{facterversion} on #{filter_spec}, aborting" if RspecPuppetFacts.spec_facts_strict?
137
131
 
138
132
  RspecPuppetFacts.warning "No facts were found in the FacterDB for Facter v#{facterversion} on #{filter_spec}, using v#{version} instead"
139
133
  end
@@ -148,33 +142,19 @@ module RspecPuppetFacts
148
142
 
149
143
  os_facts_hash = {}
150
144
  received_facts.map do |facts|
151
- # Fix facter bug
152
- # Todo: refactor the whole block to rely on structured facts and use legacy facts as fallback
153
- if facts[:operatingsystem] == 'Ubuntu'
154
- operatingsystemmajrelease = facts[:operatingsystemrelease].split('.')[0..1].join('.')
155
- elsif facts[:operatingsystem] == 'OpenBSD'
156
- operatingsystemmajrelease = facts[:operatingsystemrelease]
157
- elsif facts[:operatingsystem] == 'windows' && facts[:operatingsystemrelease].start_with?('10.0.')
158
- operatingsystemmajrelease = '2016'
159
- elsif facts.dig(:os, 'release', 'major')
160
- operatingsystemmajrelease = facts[:os]['release']['major']
161
- elsif facts.dig(:os, 'distro', 'release', 'major')
162
- operatingsystemmajrelease = facts[:os]['distro']['release']['major']
163
- else
164
- if facts[:operatingsystemmajrelease].nil?
165
- operatingsystemmajrelease = facts[:operatingsystemrelease].split('.')[0]
166
- else
167
- operatingsystemmajrelease = facts[:operatingsystemmajrelease]
168
- end
145
+ os_fact = RSpec.configuration.facterdb_string_keys ? facts['os'] : facts[:os]
146
+ unless os_fact
147
+ RspecPuppetFacts.warning "No os fact was found in FacterDB for: #{facts}"
148
+ next
169
149
  end
170
- os = "#{facts[:operatingsystem].downcase}-#{operatingsystemmajrelease}-#{facts[:hardwaremodel]}"
171
- next unless os.start_with? RspecPuppetFacts.spec_facts_os_filter if RspecPuppetFacts.spec_facts_os_filter
150
+
151
+ os = "#{os_fact['name'].downcase}-#{os_fact['release']['major']}-#{os_fact['hardware']}"
152
+ next if RspecPuppetFacts.spec_facts_os_filter && !os.start_with?(RspecPuppetFacts.spec_facts_os_filter)
153
+
172
154
  facts.merge! RspecPuppetFacts.common_facts
173
155
  os_facts_hash[os] = RspecPuppetFacts.with_custom_facts(os, facts)
174
156
  end
175
157
 
176
- return stringify_keys(os_facts_hash) if RSpec.configuration.facterdb_string_keys
177
-
178
158
  os_facts_hash
179
159
  end
180
160
 
@@ -212,7 +192,7 @@ module RspecPuppetFacts
212
192
  def self.register_custom_fact(name, value, options)
213
193
  @custom_facts ||= {}
214
194
  name = RSpec.configuration.facterdb_string_keys ? name.to_s : name.to_sym
215
- @custom_facts[name] = {:options => options, :value => value}
195
+ @custom_facts[name] = { options: options, value: value }
216
196
  end
217
197
 
218
198
  # Adds any custom facts according to the rules defined for the operating
@@ -231,7 +211,7 @@ module RspecPuppetFacts
231
211
  value = fact[:value].respond_to?(:call) ? fact[:value].call(os, facts) : fact[:value]
232
212
  # if merge_facts passed, merge supplied facts into facts hash
233
213
  if fact[:options][:merge_facts]
234
- facts.deep_merge!({name => value})
214
+ facts.deep_merge!({ name => value })
235
215
  else
236
216
  facts[name] = value
237
217
  end
@@ -254,7 +234,7 @@ module RspecPuppetFacts
254
234
  # @return [nil,String]
255
235
  # @api private
256
236
  def self.spec_facts_os_filter
257
- ENV['SPEC_FACTS_OS']
237
+ ENV.fetch('SPEC_FACTS_OS', nil)
258
238
  end
259
239
 
260
240
  # If SPEC_FACTS_STRICT is set to `yes`, RspecPuppetFacts will error on missing FacterDB entries, instead of warning & skipping the tests, or using an older facter version.
@@ -270,10 +250,11 @@ module RspecPuppetFacts
270
250
  # @return [Hash <Symbol => String>]
271
251
  def self.common_facts
272
252
  return @common_facts if @common_facts
253
+
273
254
  @common_facts = {
274
- :puppetversion => Puppet.version,
275
- :rubysitedir => RbConfig::CONFIG['sitelibdir'],
276
- :rubyversion => RUBY_VERSION,
255
+ puppetversion: Puppet.version,
256
+ rubysitedir: RbConfig::CONFIG['sitelibdir'],
257
+ rubyversion: RUBY_VERSION,
277
258
  }
278
259
 
279
260
  @common_facts[:mco_version] = MCollective::VERSION if mcollective?
@@ -281,6 +262,7 @@ module RspecPuppetFacts
281
262
  if augeas?
282
263
  @common_facts[:augeasversion] = Augeas.open(nil, nil, Augeas::NO_MODL_AUTOLOAD).get('/augeas/version')
283
264
  end
265
+ @common_facts = stringify_keys(@common_facts) if RSpec.configuration.facterdb_string_keys
284
266
 
285
267
  @common_facts
286
268
  end
@@ -317,8 +299,9 @@ module RspecPuppetFacts
317
299
  # @api private
318
300
  def self.meta_supported_os
319
301
  unless metadata['operatingsystem_support'].is_a? Array
320
- fail StandardError, 'Unknown operatingsystem support in the metadata file!'
302
+ raise StandardError, 'Unknown operatingsystem support in the metadata file!'
321
303
  end
304
+
322
305
  metadata['operatingsystem_support']
323
306
  end
324
307
 
@@ -330,8 +313,9 @@ module RspecPuppetFacts
330
313
  def self.metadata
331
314
  return @metadata if @metadata
332
315
  unless File.file? metadata_file
333
- fail StandardError, "Can't find metadata.json... dunno why"
316
+ raise StandardError, "Can't find metadata.json... dunno why"
334
317
  end
318
+
335
319
  content = File.read metadata_file
336
320
  @metadata = JSON.parse content
337
321
  end
@@ -347,7 +331,7 @@ module RspecPuppetFacts
347
331
  # @param message [String]
348
332
  # @api private
349
333
  def self.warning(message)
350
- STDERR.puts message
334
+ warn message
351
335
  end
352
336
 
353
337
  # Reset the memoization
@@ -397,7 +381,7 @@ module RspecPuppetFacts
397
381
  elsif /\A[0-9]+\Z/.match?(version)
398
382
  # Interpret 3 as < 4
399
383
  "< #{version.to_i + 1}"
400
- else
384
+ else # rubocop:disable Style/EmptyElse
401
385
  # This would be the same as the strict requirement
402
386
  nil
403
387
  end
@@ -415,13 +399,13 @@ module RspecPuppetFacts
415
399
  fd = File.open(json_path, 'rb:UTF-8')
416
400
  data = JSON.parse(fd.read)
417
401
 
418
- version_map = data.map { |_, versions|
402
+ version_map = data.map do |_, versions|
419
403
  if versions['puppet'].nil? || versions['facter'].nil?
420
404
  nil
421
405
  else
422
406
  [Gem::Version.new(versions['puppet']), versions['facter']]
423
407
  end
424
- }.compact
408
+ end.compact
425
409
 
426
410
  puppet_gem_version = Gem::Version.new(puppet_version)
427
411
  applicable_versions = version_map.select { |p, _| puppet_gem_version >= p }
@@ -430,7 +414,7 @@ module RspecPuppetFacts
430
414
  return Facter.version
431
415
  end
432
416
 
433
- applicable_versions.sort { |a, b| b.first <=> a.first }.first.last
417
+ applicable_versions.max_by { |p, _| p }.last
434
418
  rescue JSON::ParserError
435
419
  warning "#{json_path} contains invalid JSON, defaulting to Facter #{Facter.version}"
436
420
  Facter.version
@@ -440,7 +424,6 @@ module RspecPuppetFacts
440
424
  end
441
425
 
442
426
  RSpec.configure do |c|
443
- c.add_setting :default_facter_version,
444
- :default => RspecPuppetFacts.facter_version_for_puppet_version(Puppet.version)
445
- c.add_setting :facterdb_string_keys, :default => false
427
+ c.add_setting :default_facter_version, default: RspecPuppetFacts.facter_version_for_puppet_version(Puppet.version)
428
+ c.add_setting :facterdb_string_keys, default: false
446
429
  end
@@ -23,10 +23,10 @@ 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.6.0'
26
+ s.add_development_dependency 'voxpupuli-rubocop', '~> 2.7.0'
27
27
 
28
28
  s.add_runtime_dependency 'deep_merge', '~> 1.2'
29
29
  s.add_runtime_dependency 'facter', '< 5'
30
- s.add_runtime_dependency 'facterdb', '>= 0.5.0', '< 2'
30
+ s.add_runtime_dependency 'facterdb', '~> 2.1'
31
31
  s.add_runtime_dependency 'puppet', '>= 7', '< 9'
32
32
  end
@@ -15,16 +15,16 @@
15
15
  {
16
16
  "operatingsystem": "Debian",
17
17
  "operatingsystemrelease": [
18
- "7",
19
- "8"
18
+ "11",
19
+ "12"
20
20
  ]
21
21
  },
22
22
  {
23
23
  "operatingsystem": "RedHat",
24
24
  "operatingsystemrelease": [
25
- "5",
26
- "6",
27
- "7"
25
+ "7",
26
+ "8",
27
+ "9"
28
28
  ]
29
29
  }
30
30
  ],