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.
- checksums.yaml +4 -4
- data/.github/release.yml +41 -0
- data/.github/workflows/release.yml +80 -16
- data/.github/workflows/test.yml +16 -16
- data/.rubocop_todo.yml +5 -46
- data/CHANGELOG.md +57 -1
- data/Gemfile +11 -4
- data/README.md +1 -1
- data/Rakefile +13 -3
- data/ext/puppet_agent_facter_versions.json +133 -0
- data/lib/rspec-puppet-facts/version.rb +3 -1
- data/lib/rspec-puppet-facts.rb +27 -17
- data/rspec-puppet-facts.gemspec +4 -5
- data/spec/rspec_puppet_facts_spec.rb +15 -17
- data/spec/spec_helper.rb +1 -23
- metadata +7 -29
- data/ext/puppet_agent_components.json +0 -1
data/lib/rspec-puppet-facts.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
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?(
|
|
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', '
|
|
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
|
-
|
|
401
|
-
|
|
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
|
-
|
|
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
|
data/rspec-puppet-facts.gemspec
CHANGED
|
@@ -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', '~>
|
|
26
|
+
s.add_development_dependency 'voxpupuli-rubocop', '~> 3.1.0'
|
|
27
27
|
|
|
28
|
-
s.
|
|
29
|
-
s.
|
|
30
|
-
s.
|
|
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', '
|
|
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
|
-
|
|
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
|
-
|
|
92
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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:
|
|
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:
|
|
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:
|
|
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/
|
|
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.
|
|
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: []
|