rspec-puppet 2.12.0 → 3.0.0.rc.1

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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +139 -483
  3. data/README.md +18 -5
  4. data/bin/rspec-puppet-init +4 -3
  5. data/lib/rspec-puppet/adapters.rb +67 -61
  6. data/lib/rspec-puppet/cache.rb +3 -2
  7. data/lib/rspec-puppet/consts.rb +16 -14
  8. data/lib/rspec-puppet/coverage.rb +37 -42
  9. data/lib/rspec-puppet/errors.rb +6 -6
  10. data/lib/rspec-puppet/example/application_example_group.rb +3 -1
  11. data/lib/rspec-puppet/example/class_example_group.rb +3 -1
  12. data/lib/rspec-puppet/example/define_example_group.rb +3 -1
  13. data/lib/rspec-puppet/example/function_example_group.rb +28 -23
  14. data/lib/rspec-puppet/example/host_example_group.rb +3 -1
  15. data/lib/rspec-puppet/example/provider_example_group.rb +2 -0
  16. data/lib/rspec-puppet/example/type_alias_example_group.rb +4 -2
  17. data/lib/rspec-puppet/example/type_example_group.rb +3 -1
  18. data/lib/rspec-puppet/example.rb +6 -7
  19. data/lib/rspec-puppet/facter_impl.rb +11 -10
  20. data/lib/rspec-puppet/matchers/allow_value.rb +10 -10
  21. data/lib/rspec-puppet/matchers/compile.rb +54 -61
  22. data/lib/rspec-puppet/matchers/count_generic.rb +18 -18
  23. data/lib/rspec-puppet/matchers/create_generic.rb +66 -78
  24. data/lib/rspec-puppet/matchers/dynamic_matchers.rb +13 -2
  25. data/lib/rspec-puppet/matchers/include_class.rb +5 -4
  26. data/lib/rspec-puppet/matchers/parameter_matcher.rb +11 -12
  27. data/lib/rspec-puppet/matchers/raise_error.rb +5 -1
  28. data/lib/rspec-puppet/matchers/run.rb +41 -44
  29. data/lib/rspec-puppet/matchers/type_matchers.rb +37 -48
  30. data/lib/rspec-puppet/matchers.rb +2 -0
  31. data/lib/rspec-puppet/monkey_patches/win32/registry.rb +7 -5
  32. data/lib/rspec-puppet/monkey_patches/win32/taskscheduler.rb +3 -1
  33. data/lib/rspec-puppet/monkey_patches/windows/taskschedulerconstants.rb +208 -205
  34. data/lib/rspec-puppet/monkey_patches.rb +56 -56
  35. data/lib/rspec-puppet/rake_task.rb +6 -4
  36. data/lib/rspec-puppet/raw_string.rb +2 -0
  37. data/lib/rspec-puppet/sensitive.rb +9 -7
  38. data/lib/rspec-puppet/setup.rb +43 -48
  39. data/lib/rspec-puppet/spec_helper.rb +2 -0
  40. data/lib/rspec-puppet/support.rb +133 -134
  41. data/lib/rspec-puppet/tasks/release_test.rb +8 -5
  42. data/lib/rspec-puppet/version.rb +5 -0
  43. data/lib/rspec-puppet.rb +43 -51
  44. metadata +11 -9
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec-puppet/cache'
2
4
  require 'rspec-puppet/adapters'
3
5
  require 'rspec-puppet/raw_string'
@@ -11,7 +13,7 @@ module RSpec::Puppet
11
13
  @@fixture_hiera_configs = Hash.new { |h, k| h[k] = nil }
12
14
 
13
15
  def subject
14
- lambda { catalogue }
16
+ -> { catalogue }
15
17
  end
16
18
 
17
19
  def environment
@@ -19,7 +21,7 @@ module RSpec::Puppet
19
21
  end
20
22
 
21
23
  def build_code(type, manifest_opts)
22
- if Puppet.version.to_f >= 4.0 or Puppet[:parser] == 'future'
24
+ if (Puppet.version.to_f >= 4.0) || (Puppet[:parser] == 'future')
23
25
  [site_pp_str, pre_cond, test_manifest(type, manifest_opts), post_cond].compact.join("\n")
24
26
  else
25
27
  [import_str, pre_cond, test_manifest(type, manifest_opts), post_cond].compact.join("\n")
@@ -28,21 +30,21 @@ module RSpec::Puppet
28
30
 
29
31
  def guess_type_from_path(path)
30
32
  case path
31
- when /spec\/defines/
33
+ when %r{spec/defines}
32
34
  :define
33
- when /spec\/classes/
35
+ when %r{spec/classes}
34
36
  :class
35
- when /spec\/functions/
37
+ when %r{spec/functions}
36
38
  :function
37
- when /spec\/hosts/
39
+ when %r{spec/hosts}
38
40
  :host
39
- when /spec\/types/
41
+ when %r{spec/types}
40
42
  :type
41
- when /spec\/type_aliases/
43
+ when %r{spec/type_aliases}
42
44
  :type_alias
43
- when /spec\/provider/
45
+ when %r{spec/provider}
44
46
  :provider
45
- when /spec\/applications/
47
+ when %r{spec/applications}
46
48
  :application
47
49
  else
48
50
  :unknown
@@ -50,11 +52,11 @@ module RSpec::Puppet
50
52
  end
51
53
 
52
54
  def stub_file_consts(example)
53
- if example.respond_to?(:metadata)
54
- type = example.metadata[:type]
55
- else
56
- type = guess_type_from_path(example.example.metadata[:file_path])
57
- end
55
+ type = if example.respond_to?(:metadata)
56
+ example.metadata[:type]
57
+ else
58
+ guess_type_from_path(example.example.metadata[:file_path])
59
+ end
58
60
 
59
61
  munged_facts = facts_hash(nodename(type))
60
62
 
@@ -64,15 +66,15 @@ module RSpec::Puppet
64
66
 
65
67
  def find_pretend_platform(test_facts)
66
68
  from_value = lambda { |value|
67
- value.to_s.downcase == 'windows' ? :windows : :posix
69
+ value.to_s.casecmp('windows').zero? ? :windows : :posix
68
70
  }
69
71
 
70
- ['operatingsystem', 'osfamily'].each do |os_fact|
72
+ %w[operatingsystem osfamily].each do |os_fact|
71
73
  return from_value.call(test_facts[os_fact]) if test_facts.key?(os_fact)
72
74
  end
73
75
 
74
76
  if test_facts.key?('os') && test_facts['os'].is_a?(Hash)
75
- ['name', 'family'].each do |os_hash_key|
77
+ %w[name family].each do |os_hash_key|
76
78
  return from_value.call(test_facts['os'][os_hash_key]) if test_facts['os'].key?(os_hash_key)
77
79
  end
78
80
  end
@@ -80,20 +82,19 @@ module RSpec::Puppet
80
82
  nil
81
83
  end
82
84
 
83
-
84
85
  def load_catalogue(type, exported = false, manifest_opts = {})
85
86
  with_vardir do
86
87
  node_name = nodename(type)
87
88
 
88
- hiera_config_value = self.respond_to?(:hiera_config) ? hiera_config : nil
89
- hiera_data_value = self.respond_to?(:hiera_data) ? hiera_data : nil
89
+ hiera_config_value = respond_to?(:hiera_config) ? hiera_config : nil
90
+ hiera_data_value = respond_to?(:hiera_data) ? hiera_data : nil
90
91
 
91
- rspec_config_values = [
92
- :trusted_server_facts,
93
- :disable_module_hiera,
94
- :use_fixture_spec_hiera,
95
- :fixture_hiera_configs,
96
- :fallback_to_default_hiera,
92
+ rspec_config_values = %i[
93
+ trusted_server_facts
94
+ disable_module_hiera
95
+ use_fixture_spec_hiera
96
+ fixture_hiera_configs
97
+ fallback_to_default_hiera
97
98
  ].map { |setting| RSpec.configuration.send(setting) }
98
99
 
99
100
  build_facts = facts_hash(node_name)
@@ -108,7 +109,7 @@ module RSpec::Puppet
108
109
  trusted_external_data: trusted_external_data_hash,
109
110
  ignored_cache_params: {
110
111
  hiera_data_value: hiera_data_value,
111
- rspec_config_values: rspec_config_values,
112
+ rspec_config_values: rspec_config_values
112
113
  }
113
114
  )
114
115
 
@@ -128,25 +129,25 @@ module RSpec::Puppet
128
129
  end
129
130
 
130
131
  def import_str
131
- import_str = ""
132
- adapter.modulepath.each { |d|
133
- if File.exists?(File.join(d, 'manifests', 'init.pp'))
132
+ import_str = ''
133
+ adapter.modulepath.each do |d|
134
+ if File.exist?(File.join(d, 'manifests', 'init.pp'))
134
135
  path_to_manifest = File.join([
135
136
  d,
136
137
  'manifests',
137
- class_name.split('::')[1..-1]
138
+ class_name.split('::')[1..]
138
139
  ].flatten)
139
140
  import_str = [
140
141
  "import '#{d}/manifests/init.pp'",
141
142
  "import '#{path_to_manifest}.pp'",
142
- '',
143
+ ''
143
144
  ].join("\n")
144
145
  break
145
- elsif File.exists?(d)
146
+ elsif File.exist?(d)
146
147
  import_str = "import '#{adapter.manifest}'\n"
147
148
  break
148
149
  end
149
- }
150
+ end
150
151
 
151
152
  import_str
152
153
  end
@@ -167,34 +168,34 @@ module RSpec::Puppet
167
168
  end
168
169
 
169
170
  def test_manifest(type, opts = {})
170
- opts[:params] = params if self.respond_to?(:params)
171
+ opts[:params] = params if respond_to?(:params)
171
172
 
172
- if type == :class
173
+ case type
174
+ when :class
173
175
  if opts[:params].nil? || opts[:params] == {}
174
176
  "include #{class_name}"
175
177
  else
176
178
  "class { '#{class_name}': #{param_str(opts[:params])} }"
177
179
  end
178
- elsif type == :application
179
- if opts.has_key?(:params)
180
- "site { #{class_name} { #{sanitise_resource_title(title)}: #{param_str(opts[:params])} } }"
181
- else
182
- raise ArgumentError, "You need to provide params for an application"
183
- end
184
- elsif type == :define
180
+ when :application
181
+ raise ArgumentError, 'You need to provide params for an application' unless opts.key?(:params)
182
+
183
+ "site { #{class_name} { #{sanitise_resource_title(title)}: #{param_str(opts[:params])} } }"
184
+
185
+ when :define
185
186
  title_str = if title.is_a?(Array)
186
187
  '[' + title.map { |r| sanitise_resource_title(r) }.join(', ') + ']'
187
188
  else
188
189
  sanitise_resource_title(title)
189
190
  end
190
- if opts.has_key?(:params)
191
+ if opts.key?(:params)
191
192
  "#{class_name} { #{title_str}: #{param_str(opts[:params])} }"
192
193
  else
193
194
  "#{class_name} { #{title_str}: }"
194
195
  end
195
- elsif type == :host
196
+ when :host
196
197
  nil
197
- elsif type == :type_alias
198
+ when :type_alias
198
199
  "$test = #{str_from_value(opts[:test_value])}\nassert_type(#{self.class.top_level_description}, $test)"
199
200
  end
200
201
  end
@@ -204,8 +205,9 @@ module RSpec::Puppet
204
205
  end
205
206
 
206
207
  def nodename(type)
207
- return node if self.respond_to?(:node)
208
- if [:class, :define, :function, :application].include? type
208
+ return node if respond_to?(:node)
209
+
210
+ if %i[class define function application].include? type
209
211
  Puppet[:certname]
210
212
  else
211
213
  class_name
@@ -217,47 +219,43 @@ module RSpec::Puppet
217
219
  end
218
220
 
219
221
  def pre_cond
220
- if self.respond_to?(:pre_condition) && !pre_condition.nil?
221
- if pre_condition.is_a? Array
222
- pre_condition.compact.join("\n")
223
- else
224
- pre_condition
225
- end
222
+ return unless respond_to?(:pre_condition) && !pre_condition.nil?
223
+
224
+ if pre_condition.is_a? Array
225
+ pre_condition.compact.join("\n")
226
226
  else
227
- nil
227
+ pre_condition
228
228
  end
229
229
  end
230
230
 
231
231
  def post_cond
232
- if self.respond_to?(:post_condition) && !post_condition.nil?
233
- if post_condition.is_a? Array
234
- post_condition.compact.join("\n")
235
- else
236
- post_condition
237
- end
232
+ return unless respond_to?(:post_condition) && !post_condition.nil?
233
+
234
+ if post_condition.is_a? Array
235
+ post_condition.compact.join("\n")
238
236
  else
239
- nil
237
+ post_condition
240
238
  end
241
239
  end
242
240
 
243
241
  def facts_hash(node)
244
242
  base_facts = {
245
243
  'clientversion' => Puppet::PUPPETVERSION,
246
- 'environment' => environment.to_s,
244
+ 'environment' => environment.to_s
247
245
  }
248
246
 
249
247
  node_facts = {
250
- 'hostname' => node.split('.').first,
251
- 'fqdn' => node,
252
- 'domain' => node.split('.', 2).last,
248
+ 'hostname' => node.split('.').first,
249
+ 'fqdn' => node,
250
+ 'domain' => node.split('.', 2).last,
253
251
  'clientcert' => node,
254
- 'ipaddress6' => 'FE80:0000:0000:0000:AAAA:AAAA:AAAA',
252
+ 'ipaddress6' => 'FE80:0000:0000:0000:AAAA:AAAA:AAAA'
255
253
  }
256
254
 
257
255
  networking_facts = {
258
256
  'hostname' => node_facts['hostname'],
259
- 'fqdn' => node_facts['fqdn'],
260
- 'domain' => node_facts['domain'],
257
+ 'fqdn' => node_facts['fqdn'],
258
+ 'domain' => node_facts['domain']
261
259
  }
262
260
 
263
261
  result_facts = if RSpec.configuration.default_facts.any?
@@ -269,11 +267,13 @@ module RSpec::Puppet
269
267
  # Merge in node facts so they always exist by default, but only if they
270
268
  # haven't been defined in `RSpec.configuration.default_facts`
271
269
  result_facts.merge!(munge_facts(node_facts)) { |_key, old_val, new_val| old_val.nil? ? new_val : old_val }
272
- (result_facts['networking'] ||= {}).merge!(networking_facts) { |_key, old_val, new_val| old_val.nil? ? new_val : old_val }
270
+ (result_facts['networking'] ||= {}).merge!(networking_facts) do |_key, old_val, new_val|
271
+ old_val.nil? ? new_val : old_val
272
+ end
273
273
 
274
274
  # Merge in `let(:facts)` facts
275
275
  result_facts.merge!(munge_facts(base_facts))
276
- result_facts.merge!(munge_facts(facts)) if self.respond_to?(:facts)
276
+ result_facts.merge!(munge_facts(facts)) if respond_to?(:facts)
277
277
 
278
278
  # Merge node facts again on top of `let(:facts)` facts, but only if
279
279
  # a node name is given with `let(:node)`
@@ -284,8 +284,7 @@ module RSpec::Puppet
284
284
 
285
285
  # Facter currently supports lower case facts. Bug FACT-777 has been submitted to support case sensitive
286
286
  # facts.
287
- downcase_facts = Hash[result_facts.map { |k, v| [k.downcase, v] }]
288
- downcase_facts
287
+ result_facts.transform_keys(&:downcase)
289
288
  end
290
289
 
291
290
  def node_params_hash
@@ -301,7 +300,7 @@ module RSpec::Puppet
301
300
  param_str_from_hash(params)
302
301
  end
303
302
 
304
- def trusted_facts_hash(node_name)
303
+ def trusted_facts_hash(_node_name)
305
304
  return {} unless Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0
306
305
 
307
306
  extensions = {}
@@ -310,7 +309,7 @@ module RSpec::Puppet
310
309
  extensions.merge!(munge_facts(RSpec.configuration.default_trusted_facts))
311
310
  end
312
311
 
313
- extensions.merge!(munge_facts(trusted_facts)) if self.respond_to?(:trusted_facts)
312
+ extensions.merge!(munge_facts(trusted_facts)) if respond_to?(:trusted_facts)
314
313
  extensions
315
314
  end
316
315
 
@@ -323,7 +322,7 @@ module RSpec::Puppet
323
322
  external_data.merge!(munge_facts(RSpec.configuration.default_trusted_external_data))
324
323
  end
325
324
 
326
- external_data.merge!(munge_facts(trusted_external_data)) if self.respond_to?(:trusted_external_data)
325
+ external_data.merge!(munge_facts(trusted_external_data)) if respond_to?(:trusted_external_data)
327
326
  external_data
328
327
  end
329
328
 
@@ -331,26 +330,25 @@ module RSpec::Puppet
331
330
  server_facts = {}
332
331
 
333
332
  # Add our server version to the fact list
334
- server_facts["serverversion"] = Puppet.version.to_s
333
+ server_facts['serverversion'] = Puppet.version.to_s
335
334
 
336
335
  # And then add the server name and IP
337
- {"servername" => "fqdn",
338
- "serverip" => "ipaddress"
339
- }.each do |var, fact|
340
- if value = FacterImpl.value(fact)
336
+ { 'servername' => 'fqdn',
337
+ 'serverip' => 'ipaddress' }.each do |var, fact|
338
+ if (value = FacterImpl.value(fact))
341
339
  server_facts[var] = value
342
340
  else
343
341
  warn "Could not retrieve fact #{fact}"
344
342
  end
345
343
  end
346
344
 
347
- if server_facts["servername"].nil?
345
+ if server_facts['servername'].nil?
348
346
  host = FacterImpl.value(:hostname)
349
- if domain = FacterImpl.value(:domain)
350
- server_facts["servername"] = [host, domain].join(".")
351
- else
352
- server_facts["servername"] = host
353
- end
347
+ server_facts['servername'] = if (domain = FacterImpl.value(:domain))
348
+ [host, domain].join('.')
349
+ else
350
+ host
351
+ end
354
352
  end
355
353
  server_facts
356
354
  end
@@ -358,19 +356,19 @@ module RSpec::Puppet
358
356
  def str_from_value(value)
359
357
  case value
360
358
  when Hash
361
- kvs = value.collect do |k,v|
359
+ kvs = value.collect do |k, v|
362
360
  "#{str_from_value(k)} => #{str_from_value(v)}"
363
- end.join(", ")
361
+ end.join(', ')
364
362
  "{ #{kvs} }"
365
363
  when Array
366
364
  vals = value.map do |v|
367
365
  str_from_value(v)
368
- end.join(", ")
366
+ end.join(', ')
369
367
  "[ #{vals} ]"
370
368
  when :default
371
- 'default' # verbatim default keyword
369
+ 'default' # verbatim default keyword
372
370
  when :undef
373
- 'undef' # verbatim undef keyword
371
+ 'undef' # verbatim undef keyword
374
372
  when Symbol
375
373
  str_from_value(value.to_s)
376
374
  else
@@ -381,8 +379,8 @@ module RSpec::Puppet
381
379
  def param_str_from_hash(params_hash)
382
380
  # the param_str has special quoting rules, because the top-level keys are the Puppet
383
381
  # params, which may not be quoted
384
- params_hash.collect do |k,v|
385
- "#{k.to_s} => #{str_from_value(v)}"
382
+ params_hash.collect do |k, v|
383
+ "#{k} => #{str_from_value(v)}"
386
384
  end.join(', ')
387
385
  end
388
386
 
@@ -392,7 +390,7 @@ module RSpec::Puppet
392
390
 
393
391
  # Enable app_management by default for Puppet versions that support it
394
392
  if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0 && Puppet.version.to_i < 5
395
- Puppet[:app_management] = ENV.include?('PUPPET_NOAPP_MANAGMENT') ? false : true
393
+ Puppet[:app_management] = !ENV.include?('PUPPET_NOAPP_MANAGMENT')
396
394
  end
397
395
 
398
396
  adapter.modulepath.map do |d|
@@ -405,25 +403,24 @@ module RSpec::Puppet
405
403
  end
406
404
 
407
405
  def with_vardir
408
- begin
409
- vardir = setup_puppet
410
- return yield(vardir) if block_given?
411
- ensure
412
- FileUtils.rm_rf(vardir) if vardir && File.directory?(vardir)
413
- end
406
+ vardir = setup_puppet
407
+ return yield(vardir) if block_given?
408
+ ensure
409
+ FileUtils.rm_rf(vardir) if vardir && File.directory?(vardir)
414
410
  end
415
411
 
416
- def build_catalog_without_cache(nodename, facts_val, trusted_facts_val, hiera_config_val, code, exported, node_params, *_)
412
+ def build_catalog_without_cache(nodename, facts_val, trusted_facts_val, hiera_config_val, code, exported,
413
+ node_params, *_)
417
414
  build_catalog_without_cache_v2({
418
- nodename: nodename,
419
- facts_val: facts_val,
420
- trusted_facts_val: trusted_facts_val,
421
- hiera_config_val: hiera_config_val,
422
- code: code,
423
- exported: exported,
424
- node_params: node_params,
425
- trusted_external: {},
426
- })
415
+ nodename: nodename,
416
+ facts_val: facts_val,
417
+ trusted_facts_val: trusted_facts_val,
418
+ hiera_config_val: hiera_config_val,
419
+ code: code,
420
+ exported: exported,
421
+ node_params: node_params,
422
+ trusted_external: {}
423
+ })
427
424
  end
428
425
 
429
426
  def build_catalog_without_cache_v2(
@@ -445,7 +442,7 @@ module RSpec::Puppet
445
442
  # It would be nice if Puppet offered a public API for invalidating their
446
443
  # cached instance of Hiera, but que sera sera. We will go directly against
447
444
  # the implementation out of absolute necessity.
448
- HieraPuppet.instance_variable_set('@hiera', nil) if defined? HieraPuppet
445
+ HieraPuppet.instance_variable_set(:@hiera, nil) if defined? HieraPuppet
449
446
 
450
447
  Puppet[:code] = code
451
448
 
@@ -456,18 +453,16 @@ module RSpec::Puppet
456
453
  node_facts = Puppet::Node::Facts.new(nodename, facts_val.dup)
457
454
  node_params = facts_val.merge(node_params)
458
455
 
459
- node_obj = Puppet::Node.new(nodename, { :parameters => node_params, :facts => node_facts })
456
+ node_obj = Puppet::Node.new(nodename, { parameters: node_params, facts: node_facts })
460
457
 
461
458
  trusted_info = ['remote', nodename, trusted_facts_val]
462
- if Puppet::Util::Package.versioncmp(Puppet.version, '6.14.0') >= 0
463
- trusted_info.push(trusted_external_data)
464
- end
459
+ trusted_info.push(trusted_external_data) if Puppet::Util::Package.versioncmp(Puppet.version, '6.14.0') >= 0
465
460
  if Puppet::Util::Package.versioncmp(Puppet.version, '4.3.0') >= 0
466
461
  Puppet.push_context(
467
462
  {
468
- :trusted_information => Puppet::Context::TrustedInformation.new(*trusted_info)
463
+ trusted_information: Puppet::Context::TrustedInformation.new(*trusted_info)
469
464
  },
470
- "Context for spec trusted hash"
465
+ 'Context for spec trusted hash'
471
466
  )
472
467
 
473
468
  node_obj.add_server_facts(server_facts_hash) if RSpec.configuration.trusted_server_facts
@@ -479,7 +474,7 @@ module RSpec::Puppet
479
474
  def stub_facts!(facts)
480
475
  Puppet.settings[:autosign] = false if Puppet.settings.include? :autosign
481
476
  FacterImpl.clear
482
- facts.each { |k, v| FacterImpl.add(k, :weight => 999) { setcode { v } } }
477
+ facts.each { |k, v| FacterImpl.add(k, weight: 999) { setcode { v } } }
483
478
  end
484
479
 
485
480
  def build_catalog(*args)
@@ -493,27 +488,31 @@ module RSpec::Puppet
493
488
  end
494
489
 
495
490
  def munge_facts(facts)
496
- return facts.reduce({}) do | memo, (k, v)|
497
- memo.tap { |m| m[k.to_s] = munge_facts(v) }
498
- end if facts.is_a? Hash
491
+ if facts.is_a? Hash
492
+ return facts.reduce({}) do |memo, (k, v)|
493
+ memo.tap { |m| m[k.to_s] = munge_facts(v) }
494
+ end
495
+ end
499
496
 
500
- return facts.reduce([]) do |memo, v|
501
- memo << munge_facts(v); memo
502
- end if facts.is_a? Array
497
+ if facts.is_a? Array
498
+ return facts.each_with_object([]) do |v, memo|
499
+ memo << munge_facts(v)
500
+ end
501
+ end
503
502
 
504
503
  facts
505
504
  end
506
505
 
507
506
  def escape_special_chars(string)
508
- string.gsub(/\$/, "\\$")
507
+ string.gsub(/\$/, '\\$')
509
508
  end
510
509
 
511
510
  def rspec_compatibility
512
- if RSpec::Version::STRING < '3'
513
- # RSpec 2 compatibility:
514
- alias_method :failure_message_for_should, :failure_message
515
- alias_method :failure_message_for_should_not, :failure_message_when_negated
516
- end
511
+ return unless RSpec::Version::STRING < '3'
512
+
513
+ # RSpec 2 compatibility:
514
+ alias_method :failure_message_for_should, :failure_message
515
+ alias_method :failure_message_for_should_not, :failure_message_when_negated
517
516
  end
518
517
 
519
518
  def fixture_spec_hiera_conf(mod)
@@ -540,7 +539,7 @@ module RSpec::Puppet
540
539
  # @param [String] title reference title
541
540
  # @return [RSpec::Puppet::RawString] return a new RawString with the type/title populated correctly
542
541
  def ref(type, title)
543
- return RSpec::Puppet::RawString.new("#{type}['#{title}']")
542
+ RSpec::Puppet::RawString.new("#{type}['#{title}']")
544
543
  end
545
544
 
546
545
  # Helper to return value wrapped in Sensitive type.
@@ -548,7 +547,7 @@ module RSpec::Puppet
548
547
  # @param [Object] value to wrap
549
548
  # @return [RSpec::Puppet::Sensitive] a new Sensitive wrapper with the new value
550
549
  def sensitive(value)
551
- return RSpec::Puppet::Sensitive.new(value)
550
+ RSpec::Puppet::Sensitive.new(value)
552
551
  end
553
552
 
554
553
  # @!attribute [r] adapter
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake'
2
4
  require 'open3'
3
5
  require 'json'
@@ -17,7 +19,7 @@ task :release_test do
17
19
  'garethr/garethr-docker',
18
20
  'sensu/sensu-puppet',
19
21
  'jenkinsci/puppet-jenkins',
20
- 'rnelson0/puppet-local_user',
22
+ 'rnelson0/puppet-local_user'
21
23
  ]
22
24
 
23
25
  Bundler.with_clean_env do
@@ -61,7 +63,8 @@ task :release_test do
61
63
  end
62
64
 
63
65
  print ' Running baseline tests... '
64
- baseline_output, _, status = Open3.capture3({'SPEC_OPTS' => '--format json'}, 'bundle', 'exec', 'rake', 'spec')
66
+ baseline_output, _, status = Open3.capture3({ 'SPEC_OPTS' => '--format json' }, 'bundle', 'exec', 'rake',
67
+ 'spec')
65
68
  if status.success?
66
69
  puts 'Done'
67
70
  else
@@ -94,12 +97,12 @@ task :release_test do
94
97
  if status.success?
95
98
  puts 'Done'
96
99
  else
97
- puts "FAILED"
100
+ puts 'FAILED'
98
101
  next
99
102
  end
100
103
 
101
104
  print ' Running tests against rspec-puppet HEAD... '
102
- head_output, _, status = Open3.capture3({'SPEC_OPTS' => '--format json'}, 'bundle', 'exec', 'rake', 'spec')
105
+ head_output, _, status = Open3.capture3({ 'SPEC_OPTS' => '--format json' }, 'bundle', 'exec', 'rake', 'spec')
103
106
  if status.success?
104
107
  puts 'Done'
105
108
  else
@@ -114,7 +117,7 @@ task :release_test do
114
117
  puts 'FAILED'
115
118
  end
116
119
 
117
- json_regex = %r{\{(?:[^{}]|(?:\g<0>))*\}}x
120
+ json_regex = /\{(?:[^{}]|(?:\g<0>))*\}/x
118
121
  baseline_results = JSON.parse(baseline_output.scan(json_regex).find { |r| r.include?('summary_line') })
119
122
  head_results = JSON.parse(head_output.scan(json_regex).find { |r| r.include?('summary_line') })
120
123
  if head_results['summary_line'] == baseline_results['summary_line']
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RSpecPuppet
4
+ VERSION = '3.0.0.rc.1'
5
+ end