facterdb 2.0.1 → 2.1.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: 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