rspec-puppet-facts 1.9.1 → 2.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/.travis.yml +19 -18
- data/CHANGELOG.md +48 -0
- data/Gemfile +0 -6
- data/README.md +100 -18
- data/Rakefile +35 -0
- data/ext/puppet_agent_components.json +1 -0
- data/lib/rspec-puppet-facts.rb +115 -45
- data/lib/rspec-puppet-facts/version.rb +1 -1
- data/rspec-puppet-facts.gemspec +15 -17
- data/spec/rspec_puppet_facts_spec.rb +334 -27
- data/spec/spec_helper.rb +4 -2
- metadata +5 -33
data/rspec-puppet-facts.gemspec
CHANGED
@@ -1,33 +1,31 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
4
|
+
require 'rspec-puppet-facts/version'
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
7
|
+
s.name = 'rspec-puppet-facts'
|
7
8
|
s.version = RspecPuppetFacts::Version::STRING
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
9
|
+
s.authors = ['Mickaël Canévet']
|
10
|
+
s.email = ['mickael.canevet@camptocamp.com']
|
11
|
+
s.homepage = 'http://github.com/mcanevet/rspec-puppet-facts'
|
12
|
+
s.summary = 'Standard facts fixtures for Puppet'
|
13
|
+
s.description = 'Contains facts from many Facter version on many Operating Systems'
|
13
14
|
s.licenses = 'Apache-2.0'
|
14
15
|
|
16
|
+
# see .travis.yml for the supported ruby versions
|
17
|
+
s.required_ruby_version = '>= 2.4.0'
|
18
|
+
|
15
19
|
s.files = `git ls-files`.split("\n")
|
16
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
18
22
|
|
19
|
-
|
20
|
-
s.add_development_dependency 'mime-types', '< 3.0'
|
21
|
-
else
|
22
|
-
s.add_development_dependency 'mime-types'
|
23
|
-
end
|
23
|
+
s.add_development_dependency 'mime-types'
|
24
24
|
s.add_development_dependency 'coveralls'
|
25
25
|
s.add_development_dependency 'rake'
|
26
26
|
s.add_development_dependency 'rspec'
|
27
27
|
s.add_development_dependency 'yard'
|
28
28
|
s.add_runtime_dependency 'puppet'
|
29
|
-
s.add_runtime_dependency 'json'
|
30
29
|
s.add_runtime_dependency 'facter'
|
31
30
|
s.add_runtime_dependency 'facterdb', '>= 0.5.0'
|
32
|
-
s.add_runtime_dependency 'mcollective-client'
|
33
31
|
end
|
@@ -1,12 +1,176 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'json'
|
3
|
+
require 'stringio'
|
3
4
|
|
4
5
|
describe RspecPuppetFacts do
|
5
6
|
let(:metadata_file) do
|
6
7
|
'spec/fixtures/metadata.json'
|
7
8
|
end
|
8
9
|
|
10
|
+
describe '.facter_version_for_puppet_version' do
|
11
|
+
subject(:facter_version) do
|
12
|
+
described_class.facter_version_for_puppet_version(puppet_version)
|
13
|
+
end
|
14
|
+
|
15
|
+
let(:component_json_path) do
|
16
|
+
File.expand_path(File.join(__dir__, '..', 'ext', 'puppet_agent_components.json'))
|
17
|
+
end
|
18
|
+
|
19
|
+
let(:puppet_version) { Puppet.version }
|
20
|
+
|
21
|
+
context 'when the component JSON file does not exist' do
|
22
|
+
before(:each) do
|
23
|
+
allow(File).to receive(:file?).with(component_json_path).and_return(false)
|
24
|
+
allow(described_class).to receive(:warning)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'defaults to the currently installed Facter version' do
|
28
|
+
expect(facter_version).to eq(Facter.version)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'warns the user' do
|
32
|
+
msg = /does not exist or is not readable, defaulting to/i
|
33
|
+
expect(described_class).to receive(:warning).with(a_string_matching(msg))
|
34
|
+
facter_version
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when the component JSON file is unreadable' do
|
39
|
+
before(:each) do
|
40
|
+
allow(File).to receive(:readable?).with(component_json_path).and_return(false)
|
41
|
+
allow(described_class).to receive(:warning)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'defaults to the currently installed Facter version' do
|
45
|
+
expect(facter_version).to eq(Facter.version)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'warns the user' do
|
49
|
+
msg = /does not exist or is not readable, defaulting to/i
|
50
|
+
expect(described_class).to receive(:warning).with(a_string_matching(msg))
|
51
|
+
facter_version
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when the component JSON file is unparseable' do
|
56
|
+
before(:each) do
|
57
|
+
io = StringIO.new('this is not JSON!')
|
58
|
+
allow(File).to receive(:open).with(component_json_path, anything).and_return(io)
|
59
|
+
allow(described_class).to receive(:warning)
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'defaults to the currently installed Facter version' do
|
63
|
+
expect(facter_version).to eq(Facter.version)
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'warns the user' do
|
67
|
+
msg = /contains invalid json, defaulting to/i
|
68
|
+
expect(described_class).to receive(:warning).with(a_string_matching(msg))
|
69
|
+
facter_version
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'when the passed puppet_version is nil' do
|
74
|
+
let(:puppet_version) { nil }
|
75
|
+
|
76
|
+
it 'defaults to the currently installed Facter version' do
|
77
|
+
expect(facter_version).to eq(Facter.version)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'when passed a Puppet version greater than any known version' do
|
82
|
+
let(:puppet_version) { '999.0.0' }
|
83
|
+
|
84
|
+
it 'returns the Facter version for the highest known Puppet version' do
|
85
|
+
known_facter_versions = JSON.parse(File.read(component_json_path)).map do |_, r|
|
86
|
+
r['facter']
|
87
|
+
end
|
88
|
+
sorted_facter_versions = known_facter_versions.compact.sort do |a, b|
|
89
|
+
Gem::Version.new(b) <=> Gem::Version.new(a)
|
90
|
+
end
|
91
|
+
|
92
|
+
expect(facter_version).to eq(sorted_facter_versions.first)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'when passed a known Puppet version' do
|
97
|
+
let(:puppet_version) { '5.2.0' }
|
98
|
+
|
99
|
+
it 'returns the Facter version for that Puppet version' do
|
100
|
+
expect(facter_version).to eq('3.9.0')
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'when passed a Puppet version between two known versions' do
|
105
|
+
let(:puppet_version) { '5.2.5' }
|
106
|
+
|
107
|
+
it 'returns the Facter version for the lower Puppet version' do
|
108
|
+
expect(facter_version).to eq('3.9.0')
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
context 'when passed a Puppet version lower than any known version' do
|
113
|
+
let(:puppet_version) { '1.0.0' }
|
114
|
+
|
115
|
+
before(:each) do
|
116
|
+
allow(described_class).to receive(:warning)
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'returns the currently installed Facter version' do
|
120
|
+
expect(facter_version).to eq(Facter.version)
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'warns the user' do
|
124
|
+
msg = /unable to find puppet #{Regexp.escape(puppet_version)}.+?, defaulting to/i
|
125
|
+
expect(described_class).to receive(:warning).with(a_string_matching(msg))
|
126
|
+
facter_version
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
9
131
|
describe '#on_supported_os' do
|
132
|
+
context 'With RSpec.configuration.facterdb_string_keys' do
|
133
|
+
subject(:result) do
|
134
|
+
on_supported_os(
|
135
|
+
{
|
136
|
+
:supported_os => [
|
137
|
+
{
|
138
|
+
"operatingsystem" => "Debian",
|
139
|
+
"operatingsystemrelease" => ['7'],
|
140
|
+
},
|
141
|
+
],
|
142
|
+
}
|
143
|
+
)
|
144
|
+
end
|
145
|
+
|
146
|
+
let(:get_keys) do
|
147
|
+
proc { |r| r.keys + r.select { |_,v| v.is_a?(Hash) }.map { |_,v| get_keys.call(v) }.flatten }
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'set to true' do
|
151
|
+
before(:each) do
|
152
|
+
RSpec.configuration.facterdb_string_keys = true
|
153
|
+
end
|
154
|
+
|
155
|
+
after(:each) do
|
156
|
+
RSpec.configuration.facterdb_string_keys = false
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'returns a fact set with all the keys as Strings' do
|
160
|
+
expect(get_keys.call(result['debian-7-x86_64'])).to all(be_a(String))
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context 'set to false' do
|
165
|
+
before(:each) do
|
166
|
+
RSpec.configuration.facterdb_string_keys = false
|
167
|
+
end
|
168
|
+
|
169
|
+
it 'returns a fact set with all the keys as Symbols or Strings' do
|
170
|
+
expect(get_keys.call(result['debian-7-x86_64'])).to all(be_a(Symbol).or(be_a(String)))
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
10
174
|
|
11
175
|
context 'Without specifying supported_os' do
|
12
176
|
subject { on_supported_os }
|
@@ -142,6 +306,30 @@ describe RspecPuppetFacts do
|
|
142
306
|
end
|
143
307
|
end
|
144
308
|
|
309
|
+
context 'When specifying a supported_os with a single release as a String' do
|
310
|
+
subject(:factsets) do
|
311
|
+
on_supported_os(
|
312
|
+
{
|
313
|
+
:supported_os => [
|
314
|
+
{ 'operatingsystem' => 'RedHat', 'operatingsystemrelease' => '7' },
|
315
|
+
]
|
316
|
+
}
|
317
|
+
)
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'returns a Hash' do
|
321
|
+
expect(factsets).to be_a(Hash)
|
322
|
+
end
|
323
|
+
|
324
|
+
it 'returns a single fact set' do
|
325
|
+
expect(factsets.size).to eq(1)
|
326
|
+
end
|
327
|
+
|
328
|
+
it 'returns a fact set for the specified release' do
|
329
|
+
expect(factsets).to include('redhat-7-x86_64' => include(:operatingsystemmajrelease => '7'))
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
145
333
|
context 'When testing Ubuntu' do
|
146
334
|
subject {
|
147
335
|
on_supported_os(
|
@@ -161,17 +349,13 @@ describe RspecPuppetFacts do
|
|
161
349
|
}
|
162
350
|
|
163
351
|
let(:expected_fact_sets) do
|
164
|
-
|
165
|
-
['ubuntu-12.04-x86_64', 'ubuntu-14.04-x86_64']
|
166
|
-
else
|
167
|
-
['ubuntu-12.04-x86_64', 'ubuntu-14.04-x86_64', 'ubuntu-16.04-x86_64']
|
168
|
-
end
|
352
|
+
['ubuntu-12.04-x86_64', 'ubuntu-14.04-x86_64', 'ubuntu-16.04-x86_64']
|
169
353
|
end
|
170
354
|
|
171
355
|
it 'should return a hash' do
|
172
356
|
expect(subject.class).to eq Hash
|
173
357
|
end
|
174
|
-
it 'should have
|
358
|
+
it 'should have 3 elements' do
|
175
359
|
expect(subject.size).to eq(expected_fact_sets.size)
|
176
360
|
end
|
177
361
|
it 'should return supported OS' do
|
@@ -306,16 +490,19 @@ describe RspecPuppetFacts do
|
|
306
490
|
'operatingsystemrelease' => release,
|
307
491
|
}
|
308
492
|
],
|
493
|
+
:facterversion => facterversion,
|
309
494
|
}
|
310
495
|
)
|
311
496
|
end
|
312
497
|
|
498
|
+
let(:facterversion) { '3.8.0' }
|
499
|
+
|
313
500
|
context 'with a standard release' do
|
314
501
|
let(:release) { ['7'] }
|
315
502
|
|
316
503
|
it { is_expected.to be_a(Hash) }
|
317
504
|
it { is_expected.to have_attributes(:size => 1) }
|
318
|
-
it { is_expected.to include('windows-7-
|
505
|
+
it { is_expected.to include('windows-7-x86_64' => an_instance_of(Hash)) }
|
319
506
|
end
|
320
507
|
|
321
508
|
context 'with a revision release' do
|
@@ -323,7 +510,7 @@ describe RspecPuppetFacts do
|
|
323
510
|
|
324
511
|
it { is_expected.to be_a(Hash) }
|
325
512
|
it { is_expected.to have_attributes(:size => 1) }
|
326
|
-
it { is_expected.to include('windows-2012 R2-
|
513
|
+
it { is_expected.to include('windows-2012 R2-x86_64' => an_instance_of(Hash)) }
|
327
514
|
end
|
328
515
|
|
329
516
|
context 'with a Server prefixed release' do
|
@@ -331,7 +518,7 @@ describe RspecPuppetFacts do
|
|
331
518
|
|
332
519
|
it { is_expected.to be_a(Hash) }
|
333
520
|
it { is_expected.to have_attributes(:size => 1) }
|
334
|
-
it { is_expected.to include('windows-2012-
|
521
|
+
it { is_expected.to include('windows-2012-x86_64' => an_instance_of(Hash)) }
|
335
522
|
end
|
336
523
|
|
337
524
|
context 'with a 2016 release' do
|
@@ -339,7 +526,18 @@ describe RspecPuppetFacts do
|
|
339
526
|
|
340
527
|
it { is_expected.to be_a(Hash) }
|
341
528
|
it { is_expected.to have_attributes(:size => 1) }
|
342
|
-
it { is_expected.to include('windows-2016-
|
529
|
+
it { is_expected.to include('windows-2016-x86_64' => an_instance_of(Hash)) }
|
530
|
+
end
|
531
|
+
|
532
|
+
context 'with a 2016 release and Facter < 3.4' do
|
533
|
+
let(:release) { ['2016'] }
|
534
|
+
let(:facterversion) { '3.3.0' }
|
535
|
+
|
536
|
+
it { is_expected.to be_a(Hash) }
|
537
|
+
it { is_expected.to have_attributes(:size => 1) }
|
538
|
+
it 'munges the operatingsystemmajrelease to 2016' do
|
539
|
+
is_expected.to include('windows-2016-x86_64' => an_instance_of(Hash))
|
540
|
+
end
|
343
541
|
end
|
344
542
|
end
|
345
543
|
|
@@ -420,17 +618,56 @@ describe RspecPuppetFacts do
|
|
420
618
|
expect(subject.size).to eq 2
|
421
619
|
end
|
422
620
|
it 'should return supported OS' do
|
423
|
-
expect(subject.keys.sort).to
|
424
|
-
|
425
|
-
|
621
|
+
expect(subject.keys.sort).to include(a_string_matching(/\Aarchlinux-\d+-x86_64/), 'debian-8-x86_64')
|
622
|
+
end
|
623
|
+
end
|
624
|
+
|
625
|
+
context 'When the operatingsystemrelease contains parens' do
|
626
|
+
subject do
|
627
|
+
on_supported_os(
|
628
|
+
{
|
629
|
+
:supported_os => [
|
630
|
+
{
|
631
|
+
'operatingsystem' => 'IOS',
|
632
|
+
'operatingsystemrelease' => ['12.2(25)EWA9'],
|
633
|
+
}
|
634
|
+
],
|
635
|
+
}
|
426
636
|
)
|
427
637
|
end
|
638
|
+
|
639
|
+
before(:each) do
|
640
|
+
allow(RspecPuppetFacts).to receive(:warning).with(a_string_matching(/no facts were found/i))
|
641
|
+
allow(FacterDB).to receive(:get_facts).and_call_original
|
642
|
+
end
|
643
|
+
|
644
|
+
it 'escapes the parens in the filter' do
|
645
|
+
filter = [
|
646
|
+
include(
|
647
|
+
:operatingsystem => "IOS",
|
648
|
+
:operatingsystemrelease => "/^12\\.2\\(25\\)EWA9/",
|
649
|
+
:hardwaremodel => "x86_64",
|
650
|
+
),
|
651
|
+
]
|
652
|
+
|
653
|
+
expect(FacterDB).to receive(:get_facts).with(filter)
|
654
|
+
subject
|
655
|
+
end
|
656
|
+
|
657
|
+
it 'does not raise an error' do
|
658
|
+
expect { subject }.not_to raise_error
|
659
|
+
end
|
428
660
|
end
|
429
661
|
|
430
|
-
context '
|
662
|
+
context 'With a default Facter version specified in the RSpec configuration' do
|
431
663
|
before(:each) do
|
432
|
-
|
664
|
+
RSpec.configuration.default_facter_version = '3.1.0'
|
665
|
+
end
|
666
|
+
|
667
|
+
after(:each) do
|
668
|
+
RSpec.configuration.default_facter_version = Facter.version
|
433
669
|
end
|
670
|
+
|
434
671
|
subject do
|
435
672
|
on_supported_os(
|
436
673
|
supported_os: [
|
@@ -439,10 +676,10 @@ describe RspecPuppetFacts do
|
|
439
676
|
)
|
440
677
|
end
|
441
678
|
|
442
|
-
it 'returns facts from the
|
679
|
+
it 'returns facts from the specified default Facter version' do
|
443
680
|
is_expected.to match(
|
444
681
|
'centos-7-x86_64' => include(
|
445
|
-
facterversion
|
682
|
+
:facterversion => /\A3\.1\./
|
446
683
|
)
|
447
684
|
)
|
448
685
|
end
|
@@ -466,7 +703,7 @@ describe RspecPuppetFacts do
|
|
466
703
|
major, minor = Facter.version.split('.')
|
467
704
|
is_expected.to match(
|
468
705
|
'centos-7-x86_64' => include(
|
469
|
-
facterversion
|
706
|
+
:facterversion => /\A#{major}\.[#{minor}#{minor.to_i + 1}]\./
|
470
707
|
)
|
471
708
|
)
|
472
709
|
end
|
@@ -493,7 +730,7 @@ describe RspecPuppetFacts do
|
|
493
730
|
|
494
731
|
it 'returns facts from a facter version matching 3.1' do
|
495
732
|
is_expected.to match(
|
496
|
-
'centos-7-x86_64' => include(facterversion
|
733
|
+
'centos-7-x86_64' => include(:facterversion => '3.1.6')
|
497
734
|
)
|
498
735
|
end
|
499
736
|
end
|
@@ -510,7 +747,7 @@ describe RspecPuppetFacts do
|
|
510
747
|
|
511
748
|
it 'returns facts from a facter version matching 3.1' do
|
512
749
|
is_expected.to match(
|
513
|
-
'centos-7-x86_64' => include(facterversion
|
750
|
+
'centos-7-x86_64' => include(:facterversion => '3.1.6')
|
514
751
|
)
|
515
752
|
end
|
516
753
|
end
|
@@ -527,7 +764,7 @@ describe RspecPuppetFacts do
|
|
527
764
|
|
528
765
|
it 'returns facts from a facter version matching 3.3' do
|
529
766
|
is_expected.to match(
|
530
|
-
'centos-7-x86_64' => include(facterversion
|
767
|
+
'centos-7-x86_64' => include(:facterversion => '3.3.0')
|
531
768
|
)
|
532
769
|
end
|
533
770
|
end
|
@@ -544,7 +781,24 @@ describe RspecPuppetFacts do
|
|
544
781
|
|
545
782
|
it 'returns facts from a facter version matching 3.3' do
|
546
783
|
is_expected.to match(
|
547
|
-
'centos-7-x86_64' => include(facterversion
|
784
|
+
'centos-7-x86_64' => include(:facterversion => '3.3.0')
|
785
|
+
)
|
786
|
+
end
|
787
|
+
end
|
788
|
+
|
789
|
+
context 'When querying a fact set that does not have an operatingsystemmajrelease fact' do
|
790
|
+
subject do
|
791
|
+
on_supported_os(
|
792
|
+
supported_os: [
|
793
|
+
{ 'operatingsystem' => 'SLES', 'operatingsystemrelease' => ['11'] }
|
794
|
+
],
|
795
|
+
facterversion: '2.1.0'
|
796
|
+
)
|
797
|
+
end
|
798
|
+
|
799
|
+
it 'splits the operatingsystemrelease fact value to get the major release' do
|
800
|
+
is_expected.to match(
|
801
|
+
'sles-11-x86_64' => include(:operatingsystemrelease => '11.3')
|
548
802
|
)
|
549
803
|
end
|
550
804
|
end
|
@@ -564,6 +818,36 @@ describe RspecPuppetFacts do
|
|
564
818
|
/:facterversion must be in the /)
|
565
819
|
end
|
566
820
|
end
|
821
|
+
|
822
|
+
context 'Downgrades to a facter version with facts per OS' do
|
823
|
+
subject do
|
824
|
+
on_supported_os(
|
825
|
+
supported_os: [
|
826
|
+
{ 'operatingsystem' => 'CentOS', 'operatingsystemrelease' => %w[7] },
|
827
|
+
{ 'operatingsystem' => 'OpenSuSE', 'operatingsystemrelease' => %w[42] }
|
828
|
+
],
|
829
|
+
facterversion: '3.9.5'
|
830
|
+
)
|
831
|
+
end
|
832
|
+
|
833
|
+
before(:each) do
|
834
|
+
allow(FacterDB).to receive(:get_facts).and_call_original
|
835
|
+
allow(FacterDB).to receive(:get_facts).with(
|
836
|
+
a_hash_including(facterversion: "/\\A3\\.9\\./", operatingsystem: 'CentOS')
|
837
|
+
).and_return([])
|
838
|
+
end
|
839
|
+
|
840
|
+
it 'returns CentOS facts from a facter version matching 3.8' do
|
841
|
+
is_expected.to include(
|
842
|
+
'centos-7-x86_64' => include(:facterversion => '3.8.0')
|
843
|
+
)
|
844
|
+
end
|
845
|
+
it 'returns OpenSuSE facts from a facter version matching 3.9' do
|
846
|
+
is_expected.to include(
|
847
|
+
'opensuse-42-x86_64' => include(:facterversion => '3.9.2')
|
848
|
+
)
|
849
|
+
end
|
850
|
+
end
|
567
851
|
end
|
568
852
|
|
569
853
|
context '#add_custom_fact' do
|
@@ -618,9 +902,9 @@ describe RspecPuppetFacts do
|
|
618
902
|
end
|
619
903
|
|
620
904
|
it 'should not add "augeasversion" if Augeas is supported' do
|
621
|
-
allow(
|
905
|
+
allow(described_class).to receive(:augeas?).and_return(false)
|
622
906
|
RspecPuppetFacts.reset
|
623
|
-
expect(subject.common_facts).not_to include
|
907
|
+
expect(subject.common_facts).not_to include(:augeasversion)
|
624
908
|
end
|
625
909
|
|
626
910
|
it 'should determine the Augeas version if Augeas is supported' do
|
@@ -634,14 +918,37 @@ describe RspecPuppetFacts do
|
|
634
918
|
end
|
635
919
|
end
|
636
920
|
|
637
|
-
allow(
|
921
|
+
allow(described_class).to receive(:augeas?).and_return(true)
|
638
922
|
stub_const('Augeas', Augeas_stub)
|
639
923
|
RspecPuppetFacts.reset
|
640
924
|
expect(subject.common_facts[:augeasversion]).to eq 'my_version'
|
641
925
|
end
|
642
926
|
|
643
|
-
|
644
|
-
|
927
|
+
context 'when mcollective is available' do
|
928
|
+
module MCollective_stub
|
929
|
+
VERSION = 'my_version'
|
930
|
+
end
|
931
|
+
|
932
|
+
before(:each) do
|
933
|
+
allow(described_class).to receive(:mcollective?).and_return(true)
|
934
|
+
stub_const('MCollective', MCollective_stub)
|
935
|
+
described_class.reset
|
936
|
+
end
|
937
|
+
|
938
|
+
it 'includes an "mco_version" fact' do
|
939
|
+
expect(subject.common_facts).to include(:mco_version => 'my_version')
|
940
|
+
end
|
941
|
+
end
|
942
|
+
|
943
|
+
context 'when mcollective is not available' do
|
944
|
+
before(:each) do
|
945
|
+
allow(described_class).to receive(:mcollective?).and_return(false)
|
946
|
+
described_class.reset
|
947
|
+
end
|
948
|
+
|
949
|
+
it 'does not include an "mco_version" fact' do
|
950
|
+
expect(subject.common_facts).not_to include(:mco_version)
|
951
|
+
end
|
645
952
|
end
|
646
953
|
end
|
647
954
|
|