facterdb 2.0.1 → 2.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: faf53b6a468fc99aede788c2ede930af2176bdef6054e5bac446916ed8be5ca6
4
- data.tar.gz: 00b5c7adbb10c83eeeeb9ba085cc1230a3edbf67dff6b1e7582ac2cc2f928ded
3
+ metadata.gz: 75843f09832f669272fcb7ea1f32d09f931c0ec55e4603e34593ad24ebc80d25
4
+ data.tar.gz: ad00ec7cf7ca4a579c2ec918312e18d2b16634e5720aed4a94bb8cdbce0bbf65
5
5
  SHA512:
6
- metadata.gz: 8111bd85279714edf6ea83a2e0ad2b8570577baece7c460ad0851eddee90593b06ae20868389c1fa1335c27de30cf934e217071fb82d51c0f03883e360be9bbe
7
- data.tar.gz: f2fbe4e878c723bcb00f6e9cc56f1a20ab3762f2f56095a693451a427fcf0ce39841e256f54c885d37807470a6fc3072b10b1a586d1c65c81d6144ab2c9c4cd6
6
+ metadata.gz: 2d8145338782bcb755d72bc58ace5285d5ac340ff6252598f04ad4cf95d1648d373afa5b602bf94c942e972c5d43ba1ff1f4e167f41c22c023d0795fe631062d
7
+ data.tar.gz: fe5f1c7347394dad0505a9c2429dce5f0ece8beb6ab1679b82b8e269ecac8dc309cf7c42f158c1628b1f721c59acdb39097cdb934e2b96bcc41fdbbe42d55bff
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-12-12 12:48:14 UTC using RuboCop version 1.57.2.
3
+ # on 2024-06-08 21:54:16 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
@@ -20,11 +20,12 @@ Lint/SuppressedException:
20
20
 
21
21
  # Offense count: 3
22
22
  # This cop supports unsafe autocorrection (--autocorrect-all).
23
+ # Configuration parameters: AutoCorrect.
23
24
  Lint/UselessAssignment:
24
25
  Exclude:
25
26
  - 'spec/facts_spec.rb'
26
27
 
27
- # Offense count: 2
28
+ # Offense count: 3
28
29
  # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
29
30
  # AllowedNames: as, at, by, cc, db, id, if, in, io, ip, of, on, os, pp, to
30
31
  Naming/MethodParameterName:
@@ -38,7 +39,7 @@ Performance/MapCompact:
38
39
  Exclude:
39
40
  - 'lib/facterdb.rb'
40
41
 
41
- # Offense count: 7
42
+ # Offense count: 8
42
43
  # This cop supports unsafe autocorrection (--autocorrect-all).
43
44
  Performance/StringInclude:
44
45
  Exclude:
@@ -64,7 +65,7 @@ RSpec/DescribeClass:
64
65
 
65
66
  # Offense count: 12
66
67
  # This cop supports unsafe autocorrection (--autocorrect-all).
67
- # Configuration parameters: SkipBlocks, EnforcedStyle.
68
+ # Configuration parameters: SkipBlocks, EnforcedStyle, OnlyStaticConstants.
68
69
  # SupportedStyles: described_class, explicit
69
70
  RSpec/DescribedClass:
70
71
  Exclude:
@@ -79,7 +80,7 @@ RSpec/ExampleLength:
79
80
  RSpec/MultipleExpectations:
80
81
  Max: 7
81
82
 
82
- # Offense count: 11
83
+ # Offense count: 19
83
84
  # Configuration parameters: AllowSubject.
84
85
  RSpec/MultipleMemoizedHelpers:
85
86
  Max: 6
@@ -114,7 +115,7 @@ Style/Documentation:
114
115
  - 'lib/facterdb.rb'
115
116
  - 'lib/facterdb/bin.rb'
116
117
 
117
- # Offense count: 13
118
+ # Offense count: 12
118
119
  # This cop supports unsafe autocorrection (--autocorrect-all).
119
120
  # Configuration parameters: EnforcedStyle.
120
121
  # SupportedStyles: always, always_true, never
@@ -141,24 +142,6 @@ Style/HashEachMethods:
141
142
  Exclude:
142
143
  - 'spec/facts_spec.rb'
143
144
 
144
- # Offense count: 1
145
- # This cop supports unsafe autocorrection (--autocorrect-all).
146
- Style/HashTransformKeys:
147
- Exclude:
148
- - 'lib/facterdb.rb'
149
-
150
- # Offense count: 1
151
- # This cop supports safe autocorrection (--autocorrect).
152
- Style/IfUnlessModifier:
153
- Exclude:
154
- - 'lib/facterdb.rb'
155
-
156
- # Offense count: 1
157
- # This cop supports unsafe autocorrection (--autocorrect-all).
158
- Style/MapToHash:
159
- Exclude:
160
- - 'lib/facterdb.rb'
161
-
162
145
  # Offense count: 1
163
146
  Style/MixinUsage:
164
147
  Exclude:
@@ -189,12 +172,6 @@ Style/OptionalBooleanParameter:
189
172
  Exclude:
190
173
  - 'lib/facterdb.rb'
191
174
 
192
- # Offense count: 1
193
- # This cop supports unsafe autocorrection (--autocorrect-all).
194
- Style/SlicingWithRange:
195
- Exclude:
196
- - 'Rakefile'
197
-
198
175
  # Offense count: 1
199
176
  # This cop supports unsafe autocorrection (--autocorrect-all).
200
177
  # Configuration parameters: Mode.
@@ -215,4 +192,4 @@ Style/SymbolProc:
215
192
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
216
193
  # URISchemes: http, https
217
194
  Layout/LineLength:
218
- Max: 179
195
+ Max: 154
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.1.0](https://rubygems.org/gems/facterdb/versions/2.1.0) (2024-06-08)
4
+
5
+ [Full Changelog](https://github.com/voxpupuli/facterdb/compare/2.0.1...2.1.0)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Make symbolize keys optional [\#364](https://github.com/voxpupuli/facterdb/pull/364) ([bastelfreak](https://github.com/bastelfreak))
10
+
11
+ **Fixed bugs:**
12
+
13
+ - Fix Arch Linux factsets [\#366](https://github.com/voxpupuli/facterdb/pull/366) ([bastelfreak](https://github.com/bastelfreak))
14
+
15
+ **Merged pull requests:**
16
+
17
+ - Add tests for OS core facts [\#367](https://github.com/voxpupuli/facterdb/pull/367) ([bastelfreak](https://github.com/bastelfreak))
18
+
3
19
  ## [2.0.1](https://rubygems.org/gems/facterdb/versions/2.0.1) (2024-05-28)
4
20
 
5
21
  [Full Changelog](https://github.com/voxpupuli/facterdb/compare/2.0.0...2.0.1)
@@ -427,12 +427,23 @@
427
427
  "operatingsystem": "Archlinux",
428
428
  "os": {
429
429
  "architecture": "x86_64",
430
+ "distro": {
431
+ "codename": "n/a",
432
+ "description": "Arch Linux",
433
+ "id": "Arch",
434
+ "release": {
435
+ "full": "rolling",
436
+ "major": "rolling"
437
+ },
438
+ "specification": "n/a"
439
+ },
430
440
  "family": "Archlinux",
431
441
  "hardware": "x86_64",
432
442
  "name": "Archlinux",
433
443
  "release": {
434
- "full": null,
435
- "major": null
444
+ "full": "6.8.7-hardened1-2-hardened",
445
+ "major": "6",
446
+ "minor": "8"
436
447
  },
437
448
  "selinux": {
438
449
  "enabled": false
@@ -427,12 +427,23 @@
427
427
  "operatingsystem": "Archlinux",
428
428
  "os": {
429
429
  "architecture": "x86_64",
430
+ "distro": {
431
+ "codename": "n/a",
432
+ "description": "Arch Linux",
433
+ "id": "Arch",
434
+ "release": {
435
+ "full": "rolling",
436
+ "major": "rolling"
437
+ },
438
+ "specification": "n/a"
439
+ },
430
440
  "family": "Archlinux",
431
441
  "hardware": "x86_64",
432
442
  "name": "Archlinux",
433
443
  "release": {
434
- "full": null,
435
- "major": null
444
+ "full": "6.8.7-hardened1-2-hardened",
445
+ "major": "6",
446
+ "minor": "8"
436
447
  },
437
448
  "selinux": {
438
449
  "enabled": false
@@ -427,12 +427,23 @@
427
427
  "operatingsystem": "Archlinux",
428
428
  "os": {
429
429
  "architecture": "x86_64",
430
+ "distro": {
431
+ "codename": "n/a",
432
+ "description": "Arch Linux",
433
+ "id": "Arch",
434
+ "release": {
435
+ "full": "rolling",
436
+ "major": "rolling"
437
+ },
438
+ "specification": "n/a"
439
+ },
430
440
  "family": "Archlinux",
431
441
  "hardware": "x86_64",
432
442
  "name": "Archlinux",
433
443
  "release": {
434
- "full": null,
435
- "major": null
444
+ "full": "6.8.7-hardened1-2-hardened",
445
+ "major": "6",
446
+ "minor": "8"
436
447
  },
437
448
  "selinux": {
438
449
  "enabled": false
@@ -433,12 +433,23 @@
433
433
  "operatingsystem": "Archlinux",
434
434
  "os": {
435
435
  "architecture": "x86_64",
436
+ "distro": {
437
+ "codename": "n/a",
438
+ "description": "Arch Linux",
439
+ "id": "Arch",
440
+ "release": {
441
+ "full": "rolling",
442
+ "major": "rolling"
443
+ },
444
+ "specification": "n/a"
445
+ },
436
446
  "family": "Archlinux",
437
447
  "hardware": "x86_64",
438
448
  "name": "Archlinux",
439
449
  "release": {
440
- "full": null,
441
- "major": null
450
+ "full": "6.8.7-hardened1-2-hardened",
451
+ "major": "6",
452
+ "minor": "8"
442
453
  },
443
454
  "selinux": {
444
455
  "enabled": false
@@ -434,12 +434,23 @@
434
434
  "operatingsystem": "Archlinux",
435
435
  "os": {
436
436
  "architecture": "x86_64",
437
+ "distro": {
438
+ "codename": "n/a",
439
+ "description": "Arch Linux",
440
+ "id": "Arch",
441
+ "release": {
442
+ "full": "rolling",
443
+ "major": "rolling"
444
+ },
445
+ "specification": "n/a"
446
+ },
437
447
  "family": "Archlinux",
438
448
  "hardware": "x86_64",
439
449
  "name": "Archlinux",
440
450
  "release": {
441
- "full": null,
442
- "major": null
451
+ "full": "6.8.7-hardened1-2-hardened",
452
+ "major": "6",
453
+ "minor": "8"
443
454
  },
444
455
  "selinux": {
445
456
  "enabled": false
@@ -434,12 +434,23 @@
434
434
  "operatingsystem": "Archlinux",
435
435
  "os": {
436
436
  "architecture": "x86_64",
437
+ "distro": {
438
+ "codename": "n/a",
439
+ "description": "Arch Linux",
440
+ "id": "Arch",
441
+ "release": {
442
+ "full": "rolling",
443
+ "major": "rolling"
444
+ },
445
+ "specification": "n/a"
446
+ },
437
447
  "family": "Archlinux",
438
448
  "hardware": "x86_64",
439
449
  "name": "Archlinux",
440
450
  "release": {
441
- "full": null,
442
- "major": null
451
+ "full": "6.8.7-hardened1-2-hardened",
452
+ "major": "6",
453
+ "minor": "8"
443
454
  },
444
455
  "selinux": {
445
456
  "enabled": false
@@ -1,5 +1,5 @@
1
1
  module FacterDB
2
2
  module Version
3
- STRING = '2.0.1'
3
+ STRING = '2.1.0'
4
4
  end
5
5
  end
data/lib/facterdb.rb CHANGED
@@ -137,13 +137,17 @@ module FacterDB
137
137
 
138
138
  # @return [Array[Hash[Symbol, Any]]] array of hashes of facts
139
139
  # @param filter [Object] The filter to convert to jgrep string
140
- def self.get_facts(filter = nil, cache = true)
140
+ # @param symbolize_keys [Boolean]
141
+ # Whether to symbolize the keys. Note this is only on the top level and not
142
+ # on nested values.
143
+ def self.get_facts(filter = nil, cache = true, symbolize_keys: true)
141
144
  if cache && filter && filter == Thread.current[:facterdb_last_filter_seen]
142
145
  return Thread.current[:facterdb_last_facts_seen]
143
146
  end
144
147
 
145
148
  filter_str = generate_filter_str(filter)
146
- result = JGrep.jgrep(database, filter_str).map { |hash| hash.map { |k, v| [k.to_sym, v] }.to_h }
149
+ result = JGrep.jgrep(database, filter_str)
150
+ result = result.map { |hash| hash.transform_keys(&:to_sym) } if symbolize_keys
147
151
  if cache
148
152
  Thread.current[:facterdb_last_filter_seen] = filter
149
153
  Thread.current[:facterdb_last_facts_seen] = result
@@ -319,14 +319,35 @@ describe FacterDB do
319
319
  end
320
320
 
321
321
  describe '.get_facts' do
322
- subject(:result) { FacterDB.get_facts(filter) }
322
+ subject(:result) { FacterDB.get_facts(filter, symbolize_keys: symbolize_keys) }
323
323
 
324
324
  let(:filter) { nil }
325
+ let(:symbolize_keys) { nil }
325
326
 
326
327
  context 'without parameters' do
327
328
  include_examples 'returns a result'
328
329
  end
329
330
 
331
+ context 'with stringified output' do
332
+ let(:symbolize_keys) { false }
333
+
334
+ it 'returns strings as keys in factsets' do
335
+ result.each do |factset|
336
+ expect(factset.keys).to all(be_an_instance_of(String))
337
+ end
338
+ end
339
+ end
340
+
341
+ context 'with symbolized output' do
342
+ let(:symbolize_keys) { true }
343
+
344
+ it 'returns strings as keys in factsets' do
345
+ result.each do |factset|
346
+ expect(factset.keys).to all(be_an_instance_of(Symbol))
347
+ end
348
+ end
349
+ end
350
+
330
351
  context 'with an Array filter' do
331
352
  let(:filter) { [osfamily: 'Debian'] }
332
353
 
data/spec/facts_spec.rb CHANGED
@@ -117,6 +117,14 @@ describe 'Default Facts' do
117
117
  expect(content['systemd_version']).to be_nil
118
118
  expect(content['systemd_internal_services']).to be_nil
119
119
  end
120
+
121
+ # those are used in newer rspec-puppet-facts versions
122
+ # by ensuring those facts exists, we can drop a huge amount of logic in rspec-puppet-facts
123
+ it 'contains the mandatory OS facts' do
124
+ expect(content['os']['release']['major']).to not_be_nil.and not_be_empty
125
+ expect(content['os']['name']).to not_be_nil.and not_be_empty
126
+ expect(content['os']['hardware']).to not_be_nil.and not_be_empty
127
+ end
120
128
  end
121
129
  end
122
130
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facterdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-28 00:00:00.000000000 Z
11
+ date: 2024-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: coveralls