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 +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
|
|