rspec-puppet-facts 3.0.0 → 4.0.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/.rubocop.yml +2 -2
- data/.rubocop_todo.yml +62 -5
- data/CHANGELOG.md +21 -0
- data/Gemfile +4 -4
- data/README.md +1 -1
- data/Rakefile +7 -7
- data/lib/rspec-puppet-facts/version.rb +1 -1
- data/lib/rspec-puppet-facts.rb +41 -58
- data/rspec-puppet-facts.gemspec +2 -2
- data/spec/fixtures/metadata.json +5 -5
- data/spec/rspec_puppet_facts_spec.rb +211 -322
- metadata +9 -15
@@ -8,7 +8,9 @@ describe RspecPuppetFacts do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
describe '.stringify_keys' do
|
11
|
-
it {
|
11
|
+
it {
|
12
|
+
expect(described_class.stringify_keys({ os: { family: 'RedHat' } })).to eq({ 'os' => { 'family' => 'RedHat' } })
|
13
|
+
}
|
12
14
|
end
|
13
15
|
|
14
16
|
describe '.facter_version_for_puppet_version' do
|
@@ -137,10 +139,10 @@ describe RspecPuppetFacts do
|
|
137
139
|
subject(:result) do
|
138
140
|
on_supported_os(
|
139
141
|
{
|
140
|
-
:
|
142
|
+
supported_os: [
|
141
143
|
{
|
142
|
-
|
143
|
-
|
144
|
+
'operatingsystem' => 'Debian',
|
145
|
+
'operatingsystemrelease' => ['12'],
|
144
146
|
},
|
145
147
|
],
|
146
148
|
},
|
@@ -148,7 +150,7 @@ describe RspecPuppetFacts do
|
|
148
150
|
end
|
149
151
|
|
150
152
|
let(:get_keys) do
|
151
|
-
proc { |r| r.keys + r.select { |_,v| v.is_a?(Hash) }.map { |_,v| get_keys.call(v) }.flatten }
|
153
|
+
proc { |r| r.keys + r.select { |_, v| v.is_a?(Hash) }.map { |_, v| get_keys.call(v) }.flatten }
|
152
154
|
end
|
153
155
|
|
154
156
|
context 'set to true' do
|
@@ -161,7 +163,7 @@ describe RspecPuppetFacts do
|
|
161
163
|
end
|
162
164
|
|
163
165
|
it 'returns a fact set with all the keys as Strings' do
|
164
|
-
expect(get_keys.call(result['debian-
|
166
|
+
expect(get_keys.call(result['debian-12-x86_64'])).to all(be_a(String))
|
165
167
|
end
|
166
168
|
end
|
167
169
|
|
@@ -171,7 +173,7 @@ describe RspecPuppetFacts do
|
|
171
173
|
end
|
172
174
|
|
173
175
|
it 'returns a fact set with all the keys as Symbols or Strings' do
|
174
|
-
expect(get_keys.call(result['debian-
|
176
|
+
expect(get_keys.call(result['debian-12-x86_64'])).to all(be_a(Symbol).or(be_a(String)))
|
175
177
|
end
|
176
178
|
end
|
177
179
|
end
|
@@ -209,26 +211,22 @@ describe RspecPuppetFacts do
|
|
209
211
|
is_expected.to be_a Hash
|
210
212
|
end
|
211
213
|
|
212
|
-
it 'has 5 elements' do
|
213
|
-
expect(subject.size).to eq 5
|
214
|
-
end
|
215
|
-
|
216
214
|
it 'returns supported OS' do
|
217
|
-
expect(subject.keys
|
218
|
-
debian-
|
219
|
-
debian-
|
220
|
-
redhat-
|
221
|
-
redhat-
|
222
|
-
redhat-
|
215
|
+
expect(subject.keys).to contain_exactly(
|
216
|
+
'debian-11-x86_64',
|
217
|
+
'debian-12-x86_64',
|
218
|
+
'redhat-7-x86_64',
|
219
|
+
'redhat-8-x86_64',
|
220
|
+
'redhat-9-x86_64',
|
223
221
|
)
|
224
222
|
end
|
225
223
|
|
226
224
|
it 'is able to filter the received OS facts' do
|
227
225
|
allow(described_class).to receive(:spec_facts_os_filter).and_return('redhat')
|
228
|
-
expect(subject.keys
|
229
|
-
redhat-
|
230
|
-
redhat-
|
231
|
-
redhat-
|
226
|
+
expect(subject.keys).to contain_exactly(
|
227
|
+
'redhat-7-x86_64',
|
228
|
+
'redhat-8-x86_64',
|
229
|
+
'redhat-9-x86_64',
|
232
230
|
)
|
233
231
|
end
|
234
232
|
end
|
@@ -249,63 +247,58 @@ describe RspecPuppetFacts do
|
|
249
247
|
context 'With a wrong operatingsystem_support section' do
|
250
248
|
let(:metadata) do
|
251
249
|
{
|
252
|
-
|
250
|
+
'operatingsystem_support' => 'Ubuntu',
|
253
251
|
}
|
254
252
|
end
|
255
253
|
|
256
254
|
it { expect { subject }.to raise_error(StandardError, /Unknown operatingsystem support/) }
|
257
255
|
end
|
258
256
|
end
|
259
|
-
|
260
257
|
end
|
261
258
|
end
|
262
259
|
|
263
260
|
context 'When specifying supported_os' do
|
264
|
-
subject
|
261
|
+
subject do
|
265
262
|
on_supported_os(
|
266
263
|
{
|
267
|
-
:
|
264
|
+
supported_os: [
|
268
265
|
{
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
266
|
+
'operatingsystem' => 'Debian',
|
267
|
+
'operatingsystemrelease' => %w[
|
268
|
+
11
|
269
|
+
12
|
273
270
|
],
|
274
271
|
},
|
275
272
|
{
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
273
|
+
'operatingsystem' => 'RedHat',
|
274
|
+
'operatingsystemrelease' => %w[
|
275
|
+
8
|
276
|
+
9
|
280
277
|
],
|
281
278
|
},
|
282
279
|
],
|
283
280
|
},
|
284
281
|
)
|
285
|
-
|
282
|
+
end
|
286
283
|
|
287
284
|
it 'returns a hash' do
|
288
285
|
is_expected.to be_a Hash
|
289
286
|
end
|
290
287
|
|
291
|
-
it 'has 4 elements' do
|
292
|
-
expect(subject.size).to eq 4
|
293
|
-
end
|
294
|
-
|
295
288
|
it 'returns supported OS' do
|
296
|
-
expect(subject.keys
|
297
|
-
debian-
|
298
|
-
debian-
|
299
|
-
redhat-
|
300
|
-
redhat-
|
289
|
+
expect(subject.keys).to contain_exactly(
|
290
|
+
'debian-11-x86_64',
|
291
|
+
'debian-12-x86_64',
|
292
|
+
'redhat-8-x86_64',
|
293
|
+
'redhat-9-x86_64',
|
301
294
|
)
|
302
295
|
end
|
303
296
|
|
304
297
|
it 'is able to filter the received OS facts' do
|
305
298
|
allow(described_class).to receive(:spec_facts_os_filter).and_return('redhat')
|
306
|
-
expect(subject.keys
|
307
|
-
redhat-
|
308
|
-
redhat-
|
299
|
+
expect(subject.keys).to contain_exactly(
|
300
|
+
'redhat-8-x86_64',
|
301
|
+
'redhat-9-x86_64',
|
309
302
|
)
|
310
303
|
end
|
311
304
|
end
|
@@ -314,8 +307,8 @@ describe RspecPuppetFacts do
|
|
314
307
|
subject(:factsets) do
|
315
308
|
on_supported_os(
|
316
309
|
{
|
317
|
-
:
|
318
|
-
{ 'operatingsystem' => 'RedHat', 'operatingsystemrelease' => '
|
310
|
+
supported_os: [
|
311
|
+
{ 'operatingsystem' => 'RedHat', 'operatingsystemrelease' => '9' },
|
319
312
|
],
|
320
313
|
},
|
321
314
|
)
|
@@ -325,287 +318,245 @@ describe RspecPuppetFacts do
|
|
325
318
|
expect(factsets).to be_a(Hash)
|
326
319
|
end
|
327
320
|
|
328
|
-
it 'returns a single fact set' do
|
329
|
-
expect(factsets.size).to eq(1)
|
330
|
-
end
|
331
|
-
|
332
321
|
it 'returns a fact set for the specified release' do
|
333
|
-
expect(factsets).to
|
322
|
+
expect(factsets).to match('redhat-9-x86_64' => include(operatingsystemmajrelease: '9'))
|
334
323
|
end
|
335
324
|
end
|
336
325
|
|
337
326
|
context 'When testing Ubuntu' do
|
338
|
-
subject
|
327
|
+
subject do
|
339
328
|
on_supported_os(
|
340
329
|
{
|
341
|
-
:
|
330
|
+
supported_os: [
|
342
331
|
{
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
332
|
+
'operatingsystem' => 'Ubuntu',
|
333
|
+
'operatingsystemrelease' => [
|
334
|
+
'18.04',
|
335
|
+
'20.04',
|
336
|
+
'22.04',
|
348
337
|
],
|
349
338
|
},
|
350
339
|
],
|
351
340
|
},
|
352
341
|
)
|
353
|
-
}
|
354
|
-
|
355
|
-
let(:expected_fact_sets) do
|
356
|
-
['ubuntu-12.04-x86_64', 'ubuntu-14.04-x86_64', 'ubuntu-16.04-x86_64']
|
357
342
|
end
|
358
343
|
|
359
344
|
it 'returns a hash' do
|
360
|
-
expect(subject
|
361
|
-
end
|
362
|
-
|
363
|
-
it 'has 3 elements' do
|
364
|
-
expect(subject.size).to eq(expected_fact_sets.size)
|
345
|
+
expect(subject).to be_a Hash
|
365
346
|
end
|
366
347
|
|
367
348
|
it 'returns supported OS' do
|
368
|
-
expect(subject.keys
|
349
|
+
expect(subject.keys).to contain_exactly(
|
350
|
+
'ubuntu-18.04-x86_64',
|
351
|
+
'ubuntu-20.04-x86_64',
|
352
|
+
'ubuntu-22.04-x86_64',
|
353
|
+
)
|
369
354
|
end
|
370
355
|
end
|
371
356
|
|
372
357
|
context 'When testing FreeBSD 10' do
|
373
|
-
subject
|
358
|
+
subject do
|
374
359
|
on_supported_os(
|
375
360
|
{
|
376
|
-
:
|
361
|
+
supported_os: [
|
377
362
|
{
|
378
|
-
|
379
|
-
|
380
|
-
|
363
|
+
'operatingsystem' => 'FreeBSD',
|
364
|
+
'operatingsystemrelease' => [
|
365
|
+
'13',
|
381
366
|
],
|
382
367
|
},
|
383
368
|
],
|
384
|
-
:
|
369
|
+
facterversion: '4.5',
|
385
370
|
},
|
386
371
|
)
|
387
|
-
}
|
388
|
-
|
389
|
-
it 'returns a hash' do
|
390
|
-
expect(subject.class).to eq Hash
|
391
372
|
end
|
392
373
|
|
393
|
-
it '
|
394
|
-
expect(subject
|
374
|
+
it 'returns a hash' do
|
375
|
+
expect(subject).to be_a Hash
|
395
376
|
end
|
396
377
|
|
397
378
|
it 'returns supported OS' do
|
398
|
-
expect(subject.keys
|
399
|
-
'freebsd-
|
400
|
-
|
379
|
+
expect(subject.keys).to contain_exactly(
|
380
|
+
'freebsd-13-amd64',
|
381
|
+
)
|
401
382
|
end
|
402
383
|
end
|
403
384
|
|
404
385
|
context 'When testing OpenBSD' do
|
405
|
-
subject
|
386
|
+
subject do
|
406
387
|
on_supported_os(
|
407
388
|
{
|
408
|
-
:
|
389
|
+
supported_os: [
|
409
390
|
{
|
410
|
-
|
411
|
-
|
412
|
-
|
391
|
+
'operatingsystem' => 'OpenBSD',
|
392
|
+
'operatingsystemrelease' => [
|
393
|
+
'7.5',
|
413
394
|
],
|
414
395
|
},
|
415
396
|
],
|
416
|
-
:
|
397
|
+
facterversion: '4.7',
|
417
398
|
},
|
418
399
|
)
|
419
|
-
}
|
420
|
-
|
421
|
-
it 'returns a hash' do
|
422
|
-
expect(subject.class).to eq Hash
|
423
400
|
end
|
424
401
|
|
425
|
-
it '
|
426
|
-
expect(subject
|
402
|
+
it 'returns a hash' do
|
403
|
+
expect(subject).to be_a Hash
|
427
404
|
end
|
428
405
|
|
429
406
|
it 'returns supported OS' do
|
430
|
-
expect(subject.keys
|
431
|
-
'openbsd-
|
432
|
-
|
407
|
+
expect(subject.keys).to contain_exactly(
|
408
|
+
'openbsd-7-amd64',
|
409
|
+
)
|
433
410
|
end
|
434
411
|
end
|
435
412
|
|
436
|
-
context 'When testing Solaris 11'
|
437
|
-
subject
|
413
|
+
context 'When testing Solaris 11' do
|
414
|
+
subject do
|
438
415
|
on_supported_os(
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
],
|
446
|
-
},
|
416
|
+
{
|
417
|
+
supported_os: [
|
418
|
+
{
|
419
|
+
'operatingsystem' => 'Solaris',
|
420
|
+
'operatingsystemrelease' => [
|
421
|
+
'11',
|
447
422
|
],
|
448
|
-
|
423
|
+
},
|
424
|
+
],
|
425
|
+
facterversion: '4.0',
|
426
|
+
},
|
449
427
|
)
|
450
|
-
}
|
451
|
-
|
452
|
-
it 'returns a hash' do
|
453
|
-
expect(subject.class).to eq Hash
|
454
428
|
end
|
455
429
|
|
456
|
-
it '
|
457
|
-
expect(subject
|
430
|
+
it 'returns a hash' do
|
431
|
+
expect(subject).to be_a Hash
|
458
432
|
end
|
459
433
|
|
460
434
|
it 'returns supported OS' do
|
461
|
-
|
462
|
-
|
435
|
+
pending('2024-06-07: we dont have a suitable solaris 11 factset in facterdb')
|
436
|
+
expect(subject.keys).to contain_exactly(
|
437
|
+
'solaris-11-i86pc',
|
463
438
|
)
|
464
439
|
end
|
465
440
|
end
|
466
441
|
|
467
442
|
context 'When testing AIX 7.1' do
|
468
|
-
subject
|
443
|
+
subject do
|
469
444
|
on_supported_os(
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
],
|
477
|
-
},
|
445
|
+
{
|
446
|
+
supported_os: [
|
447
|
+
{
|
448
|
+
'operatingsystem' => 'AIX',
|
449
|
+
'operatingsystemrelease' => [
|
450
|
+
'7.1', '7100',
|
478
451
|
],
|
479
|
-
|
480
|
-
|
452
|
+
},
|
453
|
+
],
|
454
|
+
facterversion: '3.9',
|
455
|
+
},
|
481
456
|
)
|
482
|
-
}
|
483
|
-
|
484
|
-
it 'returns a hash' do
|
485
|
-
expect(subject.class).to eq Hash
|
486
457
|
end
|
487
458
|
|
488
|
-
it '
|
489
|
-
expect(subject
|
459
|
+
it 'returns a hash' do
|
460
|
+
expect(subject).to be_a Hash
|
490
461
|
end
|
491
462
|
|
492
463
|
it 'returns supported OS' do
|
493
464
|
# NOTE: See FACT-1827 for details on the IBM,8284-22A part
|
494
465
|
# That has to match whatever hardware generated the facts file.
|
495
|
-
|
496
|
-
|
466
|
+
pending('2024-06-07: we dont have a suitable solaris 11 factset in facterdb')
|
467
|
+
expect(subject.keys).to contain_exactly(
|
468
|
+
'aix-7100-IBM,8284-22A',
|
497
469
|
)
|
498
470
|
end
|
499
471
|
end
|
500
472
|
|
501
|
-
context 'When testing Windows'
|
473
|
+
context 'When testing Windows' do
|
502
474
|
subject do
|
503
475
|
on_supported_os(
|
504
476
|
{
|
505
|
-
:
|
477
|
+
supported_os: [
|
506
478
|
{
|
507
|
-
'operatingsystem'
|
479
|
+
'operatingsystem' => 'Windows',
|
508
480
|
'operatingsystemrelease' => release,
|
509
481
|
},
|
510
482
|
],
|
511
|
-
:
|
483
|
+
facterversion: facterversion,
|
512
484
|
},
|
513
485
|
)
|
514
486
|
end
|
515
487
|
|
516
|
-
let(:facterversion) { '
|
488
|
+
let(:facterversion) { '4.2' }
|
517
489
|
|
518
490
|
context 'with a standard release' do
|
519
|
-
let(:release) { ['
|
491
|
+
let(:release) { ['10'] }
|
520
492
|
|
521
493
|
it { is_expected.to be_a(Hash) }
|
522
|
-
it { is_expected.to
|
523
|
-
it { is_expected.to include('windows-7-x86_64' => an_instance_of(Hash)) }
|
494
|
+
it { is_expected.to match('windows-10-x86_64' => an_instance_of(Hash)) }
|
524
495
|
end
|
525
496
|
|
526
497
|
context 'with a revision release' do
|
527
498
|
let(:release) { ['2012 R2'] }
|
528
499
|
|
529
500
|
it { is_expected.to be_a(Hash) }
|
530
|
-
it { is_expected.to
|
531
|
-
it { is_expected.to include('windows-2012 R2-x86_64' => an_instance_of(Hash)) }
|
501
|
+
it { is_expected.to match('windows-2012 R2-x86_64' => an_instance_of(Hash)) }
|
532
502
|
end
|
533
503
|
|
534
504
|
context 'with a Server prefixed release' do
|
535
505
|
let(:release) { ['Server 2012'] }
|
536
506
|
|
537
507
|
it { is_expected.to be_a(Hash) }
|
538
|
-
it { is_expected.to
|
539
|
-
it { is_expected.to include('windows-2012-x86_64' => an_instance_of(Hash)) }
|
508
|
+
it { is_expected.to match('windows-2012-x86_64' => an_instance_of(Hash)) }
|
540
509
|
end
|
541
510
|
|
542
511
|
context 'with a 2016 release' do
|
543
512
|
let(:release) { ['2016'] }
|
544
513
|
|
545
514
|
it { is_expected.to be_a(Hash) }
|
546
|
-
it { is_expected.to
|
547
|
-
it { is_expected.to include('windows-2016-x86_64' => an_instance_of(Hash)) }
|
548
|
-
end
|
549
|
-
|
550
|
-
context 'with a 2016 release and Facter < 3.4' do
|
551
|
-
let(:release) { ['2016'] }
|
552
|
-
let(:facterversion) { '3.3.0' }
|
553
|
-
|
554
|
-
it { is_expected.to be_a(Hash) }
|
555
|
-
it { is_expected.to have_attributes(:size => 1) }
|
556
|
-
|
557
|
-
it 'munges the operatingsystemmajrelease to 2016' do
|
558
|
-
is_expected.to include('windows-2016-x86_64' => an_instance_of(Hash))
|
559
|
-
end
|
515
|
+
it { is_expected.to match('windows-2016-x86_64' => an_instance_of(Hash)) }
|
560
516
|
end
|
561
517
|
end
|
562
518
|
|
563
519
|
context 'When operatingsystemrelease has space' do
|
564
|
-
subject
|
520
|
+
subject do
|
565
521
|
on_supported_os(
|
566
522
|
{
|
567
|
-
:
|
523
|
+
supported_os: [
|
568
524
|
{
|
569
|
-
|
570
|
-
|
571
|
-
|
525
|
+
'operatingsystem' => 'SLES',
|
526
|
+
'operatingsystemrelease' => [
|
527
|
+
'11 SP1',
|
572
528
|
],
|
573
529
|
},
|
574
530
|
],
|
575
531
|
},
|
576
532
|
)
|
577
|
-
}
|
578
|
-
|
579
|
-
it 'returns a hash' do
|
580
|
-
expect(subject.class).to eq Hash
|
581
533
|
end
|
582
534
|
|
583
|
-
it '
|
584
|
-
expect(subject
|
535
|
+
it 'returns a hash' do
|
536
|
+
expect(subject).to be_a Hash
|
585
537
|
end
|
586
538
|
|
587
539
|
it 'returns supported OS' do
|
588
|
-
|
589
|
-
|
590
|
-
]
|
540
|
+
pending('2024-06-7: facterdb has no factset with space in the system release')
|
541
|
+
expect(subject.keys).to contain_exactly('sles-11-x86_64')
|
591
542
|
end
|
592
543
|
end
|
593
544
|
|
594
545
|
context 'When specifying wrong supported_os' do
|
595
|
-
subject
|
546
|
+
subject do
|
596
547
|
on_supported_os(
|
597
548
|
{
|
598
|
-
:
|
549
|
+
supported_os: [
|
599
550
|
{
|
600
|
-
|
601
|
-
|
602
|
-
|
551
|
+
'operatingsystem' => 'Debian',
|
552
|
+
'operatingsystemrelease' => [
|
553
|
+
'4',
|
603
554
|
],
|
604
555
|
},
|
605
556
|
],
|
606
557
|
},
|
607
558
|
)
|
608
|
-
|
559
|
+
end
|
609
560
|
|
610
561
|
it 'outputs warning message' do
|
611
562
|
expect(described_class).to receive(:warning).with(/No facts were found in the FacterDB/)
|
@@ -614,35 +565,31 @@ describe RspecPuppetFacts do
|
|
614
565
|
end
|
615
566
|
|
616
567
|
context 'When specifying rolling release operating system' do
|
617
|
-
subject
|
568
|
+
subject do
|
618
569
|
on_supported_os(
|
619
570
|
{
|
620
|
-
:
|
571
|
+
supported_os: [
|
621
572
|
{
|
622
|
-
|
623
|
-
|
624
|
-
|
573
|
+
'operatingsystem' => 'Debian',
|
574
|
+
'operatingsystemrelease' => [
|
575
|
+
'12',
|
625
576
|
],
|
626
577
|
},
|
627
578
|
{
|
628
|
-
|
579
|
+
'operatingsystem' => 'Gentoo',
|
629
580
|
},
|
630
581
|
],
|
631
|
-
:
|
582
|
+
facterversion: '4.6',
|
632
583
|
},
|
633
584
|
)
|
634
|
-
}
|
635
|
-
|
636
|
-
it 'returns a hash' do
|
637
|
-
expect(subject.class).to eq Hash
|
638
585
|
end
|
639
586
|
|
640
|
-
it '
|
641
|
-
expect(subject
|
587
|
+
it 'returns a hash' do
|
588
|
+
expect(subject).to be_a Hash
|
642
589
|
end
|
643
590
|
|
644
591
|
it 'returns supported OS' do
|
645
|
-
expect(subject.keys
|
592
|
+
expect(subject.keys).to contain_exactly(a_string_matching(/gentoo-\d+-x86_64/), 'debian-12-x86_64')
|
646
593
|
end
|
647
594
|
end
|
648
595
|
|
@@ -650,9 +597,9 @@ describe RspecPuppetFacts do
|
|
650
597
|
subject do
|
651
598
|
on_supported_os(
|
652
599
|
{
|
653
|
-
:
|
600
|
+
supported_os: [
|
654
601
|
{
|
655
|
-
'operatingsystem'
|
602
|
+
'operatingsystem' => 'IOS',
|
656
603
|
'operatingsystemrelease' => ['12.2(25)EWA9'],
|
657
604
|
},
|
658
605
|
],
|
@@ -666,12 +613,12 @@ describe RspecPuppetFacts do
|
|
666
613
|
|
667
614
|
it 'escapes the parens in the filter' do
|
668
615
|
filter = {
|
669
|
-
|
670
|
-
|
671
|
-
|
616
|
+
'os.name' => 'IOS',
|
617
|
+
'os.release.full' => '/^12\\.2\\(25\\)EWA9/',
|
618
|
+
'os.hardware' => 'x86_64',
|
672
619
|
}
|
673
620
|
|
674
|
-
expect(FacterDB).to receive(:get_facts).with(filter).once
|
621
|
+
expect(FacterDB).to receive(:get_facts).with(filter, symbolize_keys: true).once
|
675
622
|
subject
|
676
623
|
end
|
677
624
|
|
@@ -684,24 +631,23 @@ describe RspecPuppetFacts do
|
|
684
631
|
subject do
|
685
632
|
on_supported_os(
|
686
633
|
supported_os: [
|
687
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[
|
634
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[9] },
|
688
635
|
],
|
689
636
|
)
|
690
637
|
end
|
691
638
|
|
692
639
|
before do
|
693
|
-
RSpec.configuration.default_facter_version = '
|
640
|
+
RSpec.configuration.default_facter_version = '4.6.1'
|
694
641
|
end
|
695
642
|
|
696
643
|
after do
|
697
644
|
RSpec.configuration.default_facter_version = Facter.version
|
698
645
|
end
|
699
646
|
|
700
|
-
|
701
647
|
it 'returns facts from the specified default Facter version' do
|
702
648
|
is_expected.to match(
|
703
|
-
'centos-
|
704
|
-
:
|
649
|
+
'centos-9-x86_64' => include(
|
650
|
+
facterversion: /\A4\.6\./,
|
705
651
|
),
|
706
652
|
)
|
707
653
|
end
|
@@ -711,21 +657,20 @@ describe RspecPuppetFacts do
|
|
711
657
|
subject do
|
712
658
|
on_supported_os(
|
713
659
|
supported_os: [
|
714
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[
|
660
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[9] },
|
715
661
|
],
|
716
|
-
facterversion:
|
662
|
+
facterversion: '4.7.99',
|
717
663
|
)
|
718
664
|
end
|
719
665
|
|
720
666
|
before do
|
721
|
-
allow(Facter).to receive(:version).and_return('
|
667
|
+
allow(Facter).to receive(:version).and_return('4.6')
|
722
668
|
end
|
723
669
|
|
724
|
-
|
725
670
|
it 'returns facts from a facter version matching version and below' do
|
726
671
|
is_expected.to match(
|
727
|
-
'centos-
|
728
|
-
:
|
672
|
+
'centos-9-x86_64' => include(
|
673
|
+
facterversion: /\A4\.[0-7]\./,
|
729
674
|
),
|
730
675
|
)
|
731
676
|
end
|
@@ -741,88 +686,33 @@ describe RspecPuppetFacts do
|
|
741
686
|
end
|
742
687
|
end
|
743
688
|
|
744
|
-
context 'With a custom facterversion (
|
745
|
-
subject do
|
746
|
-
on_supported_os(
|
747
|
-
supported_os: [
|
748
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[7] },
|
749
|
-
],
|
750
|
-
facterversion: '3.1',
|
751
|
-
)
|
752
|
-
end
|
753
|
-
|
754
|
-
it 'returns facts from a facter version matching 3.1' do
|
755
|
-
is_expected.to match(
|
756
|
-
'centos-7-x86_64' => include(:facterversion => '3.1.6'),
|
757
|
-
)
|
758
|
-
end
|
759
|
-
end
|
760
|
-
|
761
|
-
context 'With a custom facterversion (3.1.2) in the options hash' do
|
762
|
-
subject do
|
763
|
-
on_supported_os(
|
764
|
-
supported_os: [
|
765
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[7] },
|
766
|
-
],
|
767
|
-
facterversion: '3.1.2',
|
768
|
-
)
|
769
|
-
end
|
770
|
-
|
771
|
-
it 'returns facts from a facter version matching 3.1' do
|
772
|
-
is_expected.to match(
|
773
|
-
'centos-7-x86_64' => include(:facterversion => '3.1.6'),
|
774
|
-
)
|
775
|
-
end
|
776
|
-
end
|
777
|
-
|
778
|
-
context 'With a custom facterversion (3.3) in the options hash' do
|
689
|
+
context 'With a custom facterversion (4.6) in the options hash' do
|
779
690
|
subject do
|
780
691
|
on_supported_os(
|
781
692
|
supported_os: [
|
782
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[
|
693
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[9] },
|
783
694
|
],
|
784
|
-
facterversion: '
|
695
|
+
facterversion: '4.6',
|
785
696
|
)
|
786
697
|
end
|
787
698
|
|
788
|
-
it 'returns facts from a facter version matching
|
789
|
-
is_expected.to match(
|
790
|
-
'centos-7-x86_64' => include(:facterversion => '3.3.0'),
|
791
|
-
)
|
699
|
+
it 'returns facts from a facter version matching 4.6' do
|
700
|
+
is_expected.to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
|
792
701
|
end
|
793
702
|
end
|
794
703
|
|
795
|
-
context 'With a custom facterversion (
|
704
|
+
context 'With a custom facterversion (4.6.1) in the options hash' do
|
796
705
|
subject do
|
797
706
|
on_supported_os(
|
798
707
|
supported_os: [
|
799
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[
|
708
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[9] },
|
800
709
|
],
|
801
|
-
facterversion: '
|
710
|
+
facterversion: '4.6.1',
|
802
711
|
)
|
803
712
|
end
|
804
713
|
|
805
|
-
it 'returns facts from a facter version matching
|
806
|
-
is_expected.to match(
|
807
|
-
'centos-7-x86_64' => include(:facterversion => '3.3.0'),
|
808
|
-
)
|
809
|
-
end
|
810
|
-
end
|
811
|
-
|
812
|
-
context 'When querying a fact set that does not have an operatingsystemmajrelease fact' do
|
813
|
-
subject do
|
814
|
-
on_supported_os(
|
815
|
-
supported_os: [
|
816
|
-
{ 'operatingsystem' => 'SLES', 'operatingsystemrelease' => ['11'] },
|
817
|
-
],
|
818
|
-
facterversion: '2.1.0',
|
819
|
-
)
|
820
|
-
end
|
821
|
-
|
822
|
-
it 'splits the operatingsystemrelease fact value to get the major release' do
|
823
|
-
is_expected.to match(
|
824
|
-
'sles-11-x86_64' => include(:operatingsystemrelease => '11.3'),
|
825
|
-
)
|
714
|
+
it 'returns facts from a facter version matching 4.6.1' do
|
715
|
+
is_expected.to match('centos-9-x86_64' => include(facterversion: '4.6.1'))
|
826
716
|
end
|
827
717
|
end
|
828
718
|
|
@@ -846,52 +736,48 @@ describe RspecPuppetFacts do
|
|
846
736
|
subject do
|
847
737
|
on_supported_os(
|
848
738
|
supported_os: [
|
849
|
-
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[
|
850
|
-
{ 'operatingsystem' => '
|
739
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[9] },
|
740
|
+
{ 'operatingsystem' => 'Debian', 'operatingsystemrelease' => %w[12] },
|
851
741
|
],
|
852
|
-
facterversion: '
|
742
|
+
facterversion: '4.6.1',
|
853
743
|
)
|
854
744
|
end
|
855
745
|
|
856
746
|
before do
|
857
747
|
allow(FacterDB).to receive(:get_facts).and_call_original
|
858
748
|
allow(FacterDB).to receive(:get_facts).with(
|
859
|
-
{
|
749
|
+
{ 'os.name' => 'CentOS', 'os.release.full' => '/^9/', 'os.hardware' => 'x86_64' }, symbolize_keys: true
|
860
750
|
).and_wrap_original do |m, *args|
|
861
|
-
m.call(*args).reject { |facts| facts[:facterversion].start_with?('
|
751
|
+
m.call(*args).reject { |facts| facts[:facterversion].start_with?('4.6.') }
|
862
752
|
end
|
863
753
|
end
|
864
754
|
|
865
|
-
it 'returns CentOS facts from a facter version matching
|
866
|
-
is_expected.to include(
|
867
|
-
'centos-7-x86_64' => include(:facterversion => '3.8.0'),
|
868
|
-
)
|
755
|
+
it 'returns CentOS facts from a facter version matching 4.5' do
|
756
|
+
is_expected.to include('centos-9-x86_64' => include(facterversion: '4.5.2'))
|
869
757
|
end
|
870
758
|
|
871
|
-
it 'returns
|
872
|
-
is_expected.to include(
|
873
|
-
'opensuse-42-x86_64' => include(:facterversion => '3.9.2'),
|
874
|
-
)
|
759
|
+
it 'returns Debian facts from a facter version matching 4.6.1' do
|
760
|
+
is_expected.to include('debian-12-x86_64' => include(facterversion: '4.6.1'))
|
875
761
|
end
|
876
762
|
end
|
877
763
|
end
|
878
764
|
|
879
765
|
describe '#add_custom_fact' do
|
880
|
-
subject
|
766
|
+
subject do
|
881
767
|
on_supported_os(
|
882
768
|
{
|
883
|
-
:
|
769
|
+
supported_os: [
|
884
770
|
{
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
771
|
+
'operatingsystem' => 'RedHat',
|
772
|
+
'operatingsystemrelease' => %w[
|
773
|
+
8
|
774
|
+
9
|
889
775
|
],
|
890
776
|
},
|
891
777
|
],
|
892
778
|
},
|
893
779
|
)
|
894
|
-
|
780
|
+
end
|
895
781
|
|
896
782
|
before do
|
897
783
|
described_class.reset
|
@@ -899,49 +785,51 @@ describe RspecPuppetFacts do
|
|
899
785
|
|
900
786
|
it 'adds a simple fact and value' do
|
901
787
|
add_custom_fact 'root_home', '/root'
|
902
|
-
expect(subject['redhat-
|
788
|
+
expect(subject['redhat-9-x86_64'][:root_home]).to eq '/root'
|
903
789
|
end
|
904
790
|
|
905
791
|
it 'merges a fact value into fact when merge_facts passed' do
|
906
792
|
add_custom_fact :identity, { 'user' => 'test_user' }, merge_facts: true
|
907
|
-
expect(subject['redhat-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
793
|
+
expect(subject['redhat-9-x86_64'][:identity]).to eq(
|
794
|
+
{
|
795
|
+
'gid' => 0,
|
796
|
+
'group' => 'root',
|
797
|
+
'privileged' => true,
|
798
|
+
'uid' => 0,
|
799
|
+
'user' => 'test_user',
|
800
|
+
},
|
801
|
+
)
|
915
802
|
end
|
916
803
|
|
917
804
|
it 'overwrites fact' do
|
918
805
|
add_custom_fact :identity, { 'user' => 'other_user' }
|
919
|
-
expect(subject['redhat-
|
920
|
-
|
921
|
-
|
922
|
-
|
806
|
+
expect(subject['redhat-9-x86_64'][:identity]).to eq(
|
807
|
+
{
|
808
|
+
'user' => 'other_user',
|
809
|
+
},
|
810
|
+
)
|
923
811
|
end
|
924
812
|
|
925
813
|
it 'confines a fact to a particular operating system' do
|
926
|
-
add_custom_fact 'root_home', '/root', :
|
927
|
-
expect(subject['redhat-
|
928
|
-
expect(subject['redhat-
|
814
|
+
add_custom_fact 'root_home', '/root', confine: 'redhat-9-x86_64'
|
815
|
+
expect(subject['redhat-9-x86_64'][:root_home]).to eq '/root'
|
816
|
+
expect(subject['redhat-8-x86_64'][:root_home]).to be_nil
|
929
817
|
end
|
930
818
|
|
931
819
|
it 'excludes a fact from a particular operating system' do
|
932
|
-
add_custom_fact 'root_home', '/root', :
|
933
|
-
expect(subject['redhat-
|
934
|
-
expect(subject['redhat-
|
820
|
+
add_custom_fact 'root_home', '/root', exclude: 'redhat-9-x86_64'
|
821
|
+
expect(subject['redhat-9-x86_64'][:root_home]).to be_nil
|
822
|
+
expect(subject['redhat-8-x86_64'][:root_home]).to eq '/root'
|
935
823
|
end
|
936
824
|
|
937
825
|
it 'takes a proc as a value' do
|
938
826
|
add_custom_fact 'root_home', ->(_os, _facts) { '/root' }
|
939
|
-
expect(subject['redhat-
|
827
|
+
expect(subject['redhat-9-x86_64'][:root_home]).to eq '/root'
|
940
828
|
end
|
941
829
|
|
942
830
|
it 'accepts sym fact key and stores fact key as sym' do
|
943
831
|
add_custom_fact :root_home, ->(_os, _facts) { '/root' }
|
944
|
-
expect(subject['redhat-
|
832
|
+
expect(subject['redhat-9-x86_64'][:root_home]).to eq '/root'
|
945
833
|
end
|
946
834
|
end
|
947
835
|
|
@@ -964,6 +852,7 @@ describe RspecPuppetFacts do
|
|
964
852
|
def self.open(*_args)
|
965
853
|
self
|
966
854
|
end
|
855
|
+
|
967
856
|
def self.get(*_args)
|
968
857
|
'my_version'
|
969
858
|
end
|
@@ -987,7 +876,7 @@ describe RspecPuppetFacts do
|
|
987
876
|
end
|
988
877
|
|
989
878
|
it 'includes an "mco_version" fact' do
|
990
|
-
expect(subject.common_facts).to include(:
|
879
|
+
expect(subject.common_facts).to include(mco_version: 'my_version')
|
991
880
|
end
|
992
881
|
end
|
993
882
|
|