rspec-puppet-facts 1.5.0 → 1.6.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/.gitignore +2 -0
- data/CHANGELOG.md +6 -0
- data/README.md +12 -0
- data/Rakefile +3 -1
- data/lib/rspec-puppet-facts.rb +107 -28
- data/lib/rspec-puppet-facts/version.rb +3 -1
- data/rspec-puppet-facts.gemspec +1 -0
- data/spec/rspec_puppet_facts_spec.rb +177 -68
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67e267fa84f829a97dd7a211cd499b7916038eda
|
4
|
+
data.tar.gz: 1cae575348cca8a0483c935f68d58d1c315b7c84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 817f91d0427e96c4d57a4d3524adc8374308c23fd805384718f803a13853c71b29383f146797654f168aa93a83483ee13efa83f89cdbbc707597978f1b6d23bf
|
7
|
+
data.tar.gz: 65220d4078595dad750393f9e3ea2725b638da129d6cabd71e823d2b03c73700ffdabb1defa5e5c250551b5a6b3a69bd24f38bed35154e9ac9f0ab6f96bf418d
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -277,6 +277,18 @@ require 'rspec-puppet-facts'
|
|
277
277
|
include RspecPuppetFacts
|
278
278
|
```
|
279
279
|
|
280
|
+
Run the tests:
|
281
|
+
|
282
|
+
```bash
|
283
|
+
rake spec
|
284
|
+
```
|
285
|
+
|
286
|
+
Run the tests only on some of the facts sets:
|
287
|
+
|
288
|
+
```bash
|
289
|
+
SPEC_FACTS_OS='ubuntu-14' rake spec
|
290
|
+
```
|
291
|
+
|
280
292
|
Finaly, Add some `facter` version to test in your .travis.yml
|
281
293
|
|
282
294
|
```yaml
|
data/Rakefile
CHANGED
data/lib/rspec-puppet-facts.rb
CHANGED
@@ -4,10 +4,30 @@ require 'facterdb'
|
|
4
4
|
require 'json'
|
5
5
|
require 'mcollective'
|
6
6
|
|
7
|
+
# The purpose of this module is to simplify the Puppet
|
8
|
+
# module's RSpec tests by looping through all supported
|
9
|
+
# OS'es and their facts data which is received from the FacterDB.
|
7
10
|
module RspecPuppetFacts
|
8
|
-
|
9
|
-
|
11
|
+
# Use the provided options or the data from the metadata.json file
|
12
|
+
# to find a set of matching facts in the FacterDB.
|
13
|
+
# OS names and facts can be used in the Puppet RSpec tests
|
14
|
+
# to run the examples against all supported facts combinations.
|
15
|
+
#
|
16
|
+
# The list of received OS facts can also be filtered by the SPEC_FACTS_OS
|
17
|
+
# environment variable. For example, if the variable is set to "debian"
|
18
|
+
# only the OS names which start with "debian" will be returned. It allows a
|
19
|
+
# user to quickly run the tests only on a single facts set without any
|
20
|
+
# file modifications.
|
21
|
+
#
|
22
|
+
# @return [Hash <String => Hash>]
|
23
|
+
# @param [Hash] opts
|
24
|
+
# @option opts [String,Array<String>] :hardwaremodels The OS architecture names, i.e. x86_64
|
25
|
+
# @option opts [Array<Hash>] :supported_os If this options is provided the data
|
26
|
+
# will be used instead of the "operatingsystem_support" section if the metadata file
|
27
|
+
# even if the file is missing.
|
28
|
+
def on_supported_os(opts = {})
|
10
29
|
opts[:hardwaremodels] ||= ['x86_64']
|
30
|
+
opts[:hardwaremodels] = [opts[:hardwaremodels]] unless opts[:hardwaremodels].is_a? Array
|
11
31
|
opts[:supported_os] ||= RspecPuppetFacts.meta_supported_os
|
12
32
|
|
13
33
|
filter = []
|
@@ -25,57 +45,116 @@ module RspecPuppetFacts
|
|
25
45
|
end
|
26
46
|
|
27
47
|
filter << {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
48
|
+
:facterversion => "/^#{Facter.version[0..2]}/",
|
49
|
+
:operatingsystem => os_sup['operatingsystem'],
|
50
|
+
:operatingsystemrelease => "/^#{operatingsystemmajrelease.split(' ')[0]}/",
|
51
|
+
:hardwaremodel => hardwaremodel,
|
32
52
|
}
|
33
53
|
end
|
34
54
|
end
|
35
55
|
else
|
36
56
|
opts[:hardwaremodels].each do |hardwaremodel|
|
37
57
|
filter << {
|
38
|
-
|
39
|
-
|
40
|
-
|
58
|
+
:facterversion => "/^#{Facter.version[0..2]}/",
|
59
|
+
:operatingsystem => os_sup['operatingsystem'],
|
60
|
+
:hardwaremodel => hardwaremodel,
|
41
61
|
}
|
42
62
|
end
|
43
63
|
end
|
44
64
|
end
|
45
65
|
|
46
|
-
|
47
|
-
|
48
|
-
facts.
|
66
|
+
received_facts = FacterDB::get_facts(filter)
|
67
|
+
unless received_facts.any?
|
68
|
+
RspecPuppetFacts.warning "No facts were found in the FacterDB for: #{filter.inspect}"
|
69
|
+
return {}
|
70
|
+
end
|
71
|
+
|
72
|
+
os_facts_hash = {}
|
73
|
+
received_facts.map do |facts|
|
74
|
+
os = "#{facts[:operatingsystem].downcase}-#{facts[:operatingsystemrelease].split('.')[0]}-#{facts[:hardwaremodel]}"
|
75
|
+
next unless os.start_with? RspecPuppetFacts.spec_facts_os_filter if RspecPuppetFacts.spec_facts_os_filter
|
76
|
+
facts.merge! RspecPuppetFacts.common_facts
|
77
|
+
os_facts_hash[os] = facts
|
78
|
+
end
|
79
|
+
os_facts_hash
|
80
|
+
end
|
81
|
+
|
82
|
+
# If provided this filter can be used to limit the set
|
83
|
+
# of retrieved facts only to the matched OS names.
|
84
|
+
# The value is being taken from the SPEC_FACTS_OS environment
|
85
|
+
# variable and
|
86
|
+
# @return [nil,String]
|
87
|
+
# @api private
|
88
|
+
def self.spec_facts_os_filter
|
89
|
+
ENV['SPEC_FACTS_OS']
|
90
|
+
end
|
91
|
+
|
92
|
+
# These facts are common for all OS'es and will be
|
93
|
+
# added to the facts retrieved from the FacterDB
|
94
|
+
# @api private
|
95
|
+
# @return [Hash <Symbol => String>]
|
96
|
+
def self.common_facts
|
97
|
+
return @common_facts if @common_facts
|
98
|
+
@common_facts = {
|
49
99
|
:mco_version => MCollective::VERSION,
|
50
100
|
:puppetversion => Puppet.version,
|
51
|
-
:rubysitedir => RbConfig::CONFIG[
|
101
|
+
:rubysitedir => RbConfig::CONFIG['sitelibdir'],
|
52
102
|
:rubyversion => RUBY_VERSION,
|
53
|
-
|
54
|
-
|
55
|
-
|
103
|
+
}
|
104
|
+
if Puppet.features.augeas?
|
105
|
+
@common_facts[:augeasversion] = Augeas.open(nil, nil, Augeas::NO_MODL_AUTOLOAD).get('/augeas/version')
|
56
106
|
end
|
57
|
-
|
107
|
+
@common_facts
|
58
108
|
end
|
59
109
|
|
110
|
+
# Get the "operatingsystem_support" structure from
|
111
|
+
# the parsed metadata.json file
|
112
|
+
# @raise [StandardError] if there is no "operatingsystem_support"
|
113
|
+
# in the metadata
|
114
|
+
# @return [Array<Hash>]
|
60
115
|
# @api private
|
61
116
|
def self.meta_supported_os
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
# @api private
|
66
|
-
def self.get_meta_supported_os
|
67
|
-
metadata = get_metadata
|
68
|
-
if metadata['operatingsystem_support'].nil?
|
69
|
-
fail StandardError, "Unknown operatingsystem support"
|
117
|
+
unless metadata['operatingsystem_support'].is_a? Array
|
118
|
+
fail StandardError, 'Unknown operatingsystem support in the metadata file!'
|
70
119
|
end
|
71
120
|
metadata['operatingsystem_support']
|
72
121
|
end
|
73
122
|
|
123
|
+
# Read the metadata file and parse
|
124
|
+
# its JSON content.
|
125
|
+
# @raise [StandardError] if the metadata file is missing
|
126
|
+
# @return [Hash]
|
74
127
|
# @api private
|
75
|
-
def self.
|
76
|
-
if
|
128
|
+
def self.metadata
|
129
|
+
return @metadata if @metadata
|
130
|
+
unless File.file? metadata_file
|
77
131
|
fail StandardError, "Can't find metadata.json... dunno why"
|
78
132
|
end
|
79
|
-
|
133
|
+
content = File.read metadata_file
|
134
|
+
@metadata = JSON.parse content
|
135
|
+
end
|
136
|
+
|
137
|
+
# This file contains the Puppet module's metadata
|
138
|
+
# @return [String]
|
139
|
+
# @api private
|
140
|
+
def self.metadata_file
|
141
|
+
'metadata.json'
|
80
142
|
end
|
143
|
+
|
144
|
+
# Print a warning message to the console
|
145
|
+
# @param message [String]
|
146
|
+
# @api private
|
147
|
+
def self.warning(message)
|
148
|
+
STDERR.puts message
|
149
|
+
end
|
150
|
+
|
151
|
+
# Reset the memoization
|
152
|
+
# to make the saved structures
|
153
|
+
# be generated again
|
154
|
+
# @api private
|
155
|
+
def self.reset
|
156
|
+
@common_facts = nil
|
157
|
+
@metadata = nil
|
158
|
+
end
|
159
|
+
|
81
160
|
end
|
data/rspec-puppet-facts.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_development_dependency 'coveralls'
|
25
25
|
s.add_development_dependency 'rake'
|
26
26
|
s.add_development_dependency 'rspec'
|
27
|
+
s.add_development_dependency 'yard'
|
27
28
|
s.add_runtime_dependency 'puppet'
|
28
29
|
s.add_runtime_dependency 'json'
|
29
30
|
s.add_runtime_dependency 'facter'
|
@@ -1,58 +1,94 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'json'
|
2
3
|
|
3
|
-
describe
|
4
|
+
describe RspecPuppetFacts do
|
5
|
+
let(:metadata_file) do
|
6
|
+
'spec/fixtures/metadata.json'
|
7
|
+
end
|
4
8
|
|
5
9
|
describe '#on_supported_os' do
|
6
10
|
|
7
|
-
context 'Without
|
8
|
-
subject { on_supported_os
|
11
|
+
context 'Without specifying supported_os' do
|
12
|
+
subject { on_supported_os }
|
9
13
|
|
10
14
|
context 'Without metadata.json' do
|
15
|
+
before(:each) do
|
16
|
+
expect(File).to receive(:file?).with('metadata.json').and_return false
|
17
|
+
end
|
18
|
+
|
11
19
|
it { expect { subject }.to raise_error(StandardError, /Can't find metadata.json/) }
|
12
20
|
end
|
13
21
|
|
14
22
|
context 'With a metadata.json' do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
fixture = File.read('spec/fixtures/metadata.json_with_missing_operatingsystem_support')
|
21
|
-
expect(File).to receive(:file?).with('metadata.json').and_return true
|
22
|
-
expect(File).to receive(:read).with('metadata.json').and_return fixture
|
23
|
-
end
|
24
|
-
|
25
|
-
it { expect { subject }.to raise_error(StandardError, /Unknown operatingsystem support/) }
|
26
|
-
end
|
23
|
+
it 'can load the metadata file' do
|
24
|
+
allow(RspecPuppetFacts).to receive(:metadata_file).and_return(metadata_file)
|
25
|
+
RspecPuppetFacts.reset
|
26
|
+
expect(RspecPuppetFacts.metadata).to be_a Hash
|
27
|
+
expect(RspecPuppetFacts.metadata['name']).to eq 'mcanevet-mymodule'
|
27
28
|
end
|
28
29
|
|
29
30
|
context 'With a valid metadata.json' do
|
31
|
+
let(:metadata) do
|
32
|
+
fixture = File.read(metadata_file)
|
33
|
+
JSON.parse fixture
|
34
|
+
end
|
35
|
+
|
30
36
|
before :each do
|
31
|
-
|
32
|
-
expect(File).to receive(:file?).with('metadata.json').and_return true
|
33
|
-
expect(File).to receive(:read).and_call_original
|
34
|
-
expect(File).to receive(:read).with('metadata.json').and_return fixture
|
37
|
+
allow(RspecPuppetFacts).to receive(:metadata).and_return(metadata)
|
35
38
|
end
|
36
39
|
|
37
40
|
it 'should return a hash' do
|
38
|
-
|
39
|
-
expect( on_supported_os().class ).to eq Hash
|
41
|
+
is_expected.to be_a Hash
|
40
42
|
end
|
43
|
+
|
41
44
|
it 'should have 5 elements' do
|
42
|
-
pending 'FIXME'
|
43
45
|
expect(subject.size).to eq 5
|
44
46
|
end
|
47
|
+
|
45
48
|
it 'should return supported OS' do
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
expect(subject.keys.sort).to eq %w(
|
50
|
+
debian-6-x86_64
|
51
|
+
debian-7-x86_64
|
52
|
+
redhat-5-x86_64
|
53
|
+
redhat-6-x86_64
|
54
|
+
redhat-7-x86_64
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should be able to filter the received OS facts' do
|
59
|
+
allow(RspecPuppetFacts).to receive(:spec_facts_os_filter).and_return('redhat')
|
60
|
+
expect(subject.keys.sort).to eq %w(
|
61
|
+
redhat-5-x86_64
|
62
|
+
redhat-6-x86_64
|
63
|
+
redhat-7-x86_64
|
64
|
+
)
|
54
65
|
end
|
55
66
|
end
|
67
|
+
|
68
|
+
context 'With a broken metadata.json' do
|
69
|
+
before :each do
|
70
|
+
allow(RspecPuppetFacts).to receive(:metadata).and_return(metadata)
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'With a missing operatingsystem_support section' do
|
74
|
+
let(:metadata) do
|
75
|
+
{}
|
76
|
+
end
|
77
|
+
|
78
|
+
it { expect { subject }.to raise_error(StandardError, /Unknown operatingsystem support/) }
|
79
|
+
end
|
80
|
+
|
81
|
+
context 'With a wrong operatingsystem_support section' do
|
82
|
+
let(:metadata) do
|
83
|
+
{
|
84
|
+
'operatingsystem_support' => 'Ubuntu',
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
it { expect { subject }.to raise_error(StandardError, /Unknown operatingsystem support/) }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
56
92
|
end
|
57
93
|
end
|
58
94
|
|
@@ -79,19 +115,30 @@ describe 'RspecPuppetFacts' do
|
|
79
115
|
}
|
80
116
|
)
|
81
117
|
}
|
118
|
+
|
82
119
|
it 'should return a hash' do
|
83
|
-
|
120
|
+
is_expected.to be_a Hash
|
84
121
|
end
|
122
|
+
|
85
123
|
it 'should have 4 elements' do
|
86
124
|
expect(subject.size).to eq 4
|
87
125
|
end
|
126
|
+
|
88
127
|
it 'should return supported OS' do
|
89
|
-
expect(subject.keys.sort).to eq
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
128
|
+
expect(subject.keys.sort).to eq %w(
|
129
|
+
debian-6-x86_64
|
130
|
+
debian-7-x86_64
|
131
|
+
redhat-5-x86_64
|
132
|
+
redhat-6-x86_64
|
133
|
+
)
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'should be able to filter the received OS facts' do
|
137
|
+
allow(RspecPuppetFacts).to receive(:spec_facts_os_filter).and_return('redhat')
|
138
|
+
expect(subject.keys.sort).to eq %w(
|
139
|
+
redhat-5-x86_64
|
140
|
+
redhat-6-x86_64
|
141
|
+
)
|
95
142
|
end
|
96
143
|
end
|
97
144
|
|
@@ -151,33 +198,59 @@ describe 'RspecPuppetFacts' do
|
|
151
198
|
end
|
152
199
|
end
|
153
200
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
on_supported_os(
|
201
|
+
context 'When testing Solaris 11', :if => Facter.version.to_f >= 2.0 do
|
202
|
+
subject {
|
203
|
+
on_supported_os(
|
158
204
|
{
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
205
|
+
:supported_os => [
|
206
|
+
{
|
207
|
+
"operatingsystem" => "Solaris",
|
208
|
+
"operatingsystemrelease" => [
|
209
|
+
"11",
|
210
|
+
],
|
211
|
+
},
|
212
|
+
],
|
167
213
|
}
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
214
|
+
)
|
215
|
+
}
|
216
|
+
it 'should return a hash' do
|
217
|
+
expect(subject.class).to eq Hash
|
218
|
+
end
|
219
|
+
it 'should have 1 elements' do
|
220
|
+
expect(subject.size).to eq 1
|
221
|
+
end
|
222
|
+
it 'should return supported OS' do
|
223
|
+
expect(subject.keys.sort).to eq %w(
|
224
|
+
solaris-11-i86pc
|
225
|
+
)
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
context 'When testing Windows 7', :if => Facter.version.to_f >= 2.4 do
|
230
|
+
subject {
|
231
|
+
on_supported_os(
|
232
|
+
{
|
233
|
+
:supported_os => [
|
234
|
+
{
|
235
|
+
"operatingsystem" => "windows",
|
236
|
+
"operatingsystemrelease" => [
|
237
|
+
"7",
|
238
|
+
],
|
239
|
+
},
|
240
|
+
],
|
241
|
+
}
|
242
|
+
)
|
243
|
+
}
|
244
|
+
it 'should return a hash' do
|
245
|
+
expect(subject.class).to eq Hash
|
246
|
+
end
|
247
|
+
it 'should have 1 elements' do
|
248
|
+
expect(subject.size).to eq 1
|
249
|
+
end
|
250
|
+
it 'should return supported OS' do
|
251
|
+
expect(subject.keys.sort).to eq [
|
252
|
+
'windows-7-x64',
|
253
|
+
]
|
181
254
|
end
|
182
255
|
end
|
183
256
|
|
@@ -226,8 +299,8 @@ describe 'RspecPuppetFacts' do
|
|
226
299
|
}
|
227
300
|
|
228
301
|
it 'should output warning message' do
|
229
|
-
|
230
|
-
|
302
|
+
expect(RspecPuppetFacts).to receive(:warning).with(/No facts were found in the FacterDB/)
|
303
|
+
subject
|
231
304
|
end
|
232
305
|
end
|
233
306
|
|
@@ -257,11 +330,47 @@ describe 'RspecPuppetFacts' do
|
|
257
330
|
expect(subject.size).to eq 2
|
258
331
|
end
|
259
332
|
it 'should return supported OS' do
|
260
|
-
expect(subject.keys.sort).to eq
|
261
|
-
|
262
|
-
|
263
|
-
|
333
|
+
expect(subject.keys.sort).to eq %w(
|
334
|
+
archlinux-3-x86_64
|
335
|
+
debian-8-x86_64
|
336
|
+
)
|
264
337
|
end
|
265
338
|
end
|
266
339
|
end
|
340
|
+
|
341
|
+
context '#misc' do
|
342
|
+
it 'should have a common facts structure' do
|
343
|
+
RspecPuppetFacts.reset
|
344
|
+
expect(subject.common_facts).to be_a Hash
|
345
|
+
expect(subject.common_facts).not_to be_empty
|
346
|
+
end
|
347
|
+
|
348
|
+
it 'should not add "augeasversion" if Augeas is supported' do
|
349
|
+
allow(Puppet.features).to receive(:augeas?).and_return(false)
|
350
|
+
RspecPuppetFacts.reset
|
351
|
+
expect(subject.common_facts).not_to include :augeasversion
|
352
|
+
end
|
353
|
+
|
354
|
+
it 'should determine the Augeas version if Augeas is supported' do
|
355
|
+
module Augeas_stub
|
356
|
+
NO_MODL_AUTOLOAD = true
|
357
|
+
def self.open(*_args)
|
358
|
+
self
|
359
|
+
end
|
360
|
+
def self.get(*_args)
|
361
|
+
'my_version'
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
allow(Puppet.features).to receive(:augeas?).and_return(true)
|
366
|
+
stub_const('Augeas', Augeas_stub)
|
367
|
+
RspecPuppetFacts.reset
|
368
|
+
expect(subject.common_facts[:augeasversion]).to eq 'my_version'
|
369
|
+
end
|
370
|
+
|
371
|
+
it 'can output a warning message' do
|
372
|
+
expect { RspecPuppetFacts.warning('test') }.to output(/test/).to_stderr_from_any_process
|
373
|
+
end
|
374
|
+
end
|
375
|
+
|
267
376
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-puppet-facts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mickaël Canévet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: puppet
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|