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,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
4
 
3
5
  # Load this library before enabling the monkey-patches to avoid HI-581
4
6
  begin
5
- require 'hiera/util/win32'
7
+ require 'hiera/util/win32'
6
8
  rescue LoadError
7
9
  # ignore this on installs without hiera, e.g. puppet 3 gems
8
10
  end
@@ -21,15 +23,15 @@ class RSpec::Puppet::EventListener
21
23
  end
22
24
  end
23
25
 
24
- def self.example_passed(example)
26
+ def self.example_passed(_example)
25
27
  @rspec_puppet_example = false
26
28
  end
27
29
 
28
- def self.example_pending(example)
30
+ def self.example_pending(_example)
29
31
  @rspec_puppet_example = false
30
32
  end
31
33
 
32
- def self.example_failed(example)
34
+ def self.example_failed(_example)
33
35
  @rspec_puppet_example = false
34
36
  end
35
37
 
@@ -38,19 +40,18 @@ class RSpec::Puppet::EventListener
38
40
  end
39
41
 
40
42
  def self.rspec3?
41
- if @rspec3.nil?
42
- @rspec3 = defined?(RSpec::Core::Notifications)
43
- end
43
+ @rspec3 = defined?(RSpec::Core::Notifications) if @rspec3.nil?
44
44
 
45
45
  @rspec3
46
46
  end
47
47
 
48
- def self.current_example
49
- @current_example
48
+ class << self
49
+ attr_reader :current_example
50
50
  end
51
51
  end
52
52
 
53
- RSpec.configuration.reporter.register_listener(RSpec::Puppet::EventListener, :example_started, :example_pending, :example_passed, :example_failed)
53
+ RSpec.configuration.reporter.register_listener(RSpec::Puppet::EventListener, :example_started, :example_pending,
54
+ :example_passed, :example_failed)
54
55
 
55
56
  require 'rspec-puppet/monkey_patches/win32/taskscheduler'
56
57
  require 'rspec-puppet/monkey_patches/win32/registry'
@@ -84,24 +85,20 @@ module Puppet
84
85
  end
85
86
  end
86
87
 
87
- retval = old_set_default.bind(self).call(attr)
88
+ retval = old_set_default.bind_call(self, attr)
88
89
 
89
- unless old_posix.nil?
90
- Puppet.features.add(:posix) { old_posix }
91
- end
92
- unless old_microsoft_windows.nil?
93
- Puppet.features.add(:microsoft_windows) { old_microsoft_windows }
94
- end
90
+ Puppet.features.add(:posix) { old_posix } unless old_posix.nil?
91
+ Puppet.features.add(:microsoft_windows) { old_microsoft_windows } unless old_microsoft_windows.nil?
95
92
 
96
93
  retval
97
94
  else
98
- old_set_default.bind(self).call(attr)
95
+ old_set_default.bind_call(self, attr)
99
96
  end
100
97
  end
101
98
  end
102
99
 
103
100
  module Parser::Files
104
- alias :old_find_manifests_in_modules :find_manifests_in_modules
101
+ alias old_find_manifests_in_modules find_manifests_in_modules
105
102
  module_function :old_find_manifests_in_modules
106
103
 
107
104
  def find_manifests_in_modules(pattern, environment)
@@ -113,8 +110,9 @@ module Puppet
113
110
  RSpec::Puppet::Consts.stub_consts_for(RSpec.configuration.platform)
114
111
  end
115
112
 
116
- if pretending && pretending != Puppet::Util::Platform.actual_platform
117
- environment.send(:value_cache).clear if environment.respond_to?(:value_cache, true)
113
+ if pretending && pretending != Puppet::Util::Platform.actual_platform && environment.respond_to?(:value_cache,
114
+ true)
115
+ environment.send(:value_cache).clear
118
116
  end
119
117
  output = old_find_manifests_in_modules(pattern, environment)
120
118
 
@@ -135,30 +133,30 @@ module Puppet
135
133
  # Fix for removal of default_env function
136
134
  # Bug: https://github.com/rodjek/rspec-puppet/issues/796
137
135
  # Upstream: https://github.com/puppetlabs/puppet/commit/94df3c1a3992d89b2d7d5db8a70373c135bdd86b
138
- if !respond_to?(:default_env)
139
- def default_env()
136
+ unless respond_to?(:default_env)
137
+ def default_env
140
138
  DEFAULT_ENV
141
139
  end
142
140
  module_function :default_env
143
141
  end
144
142
 
145
143
  if respond_to?(:get_env)
146
- alias :old_get_env :get_env
144
+ alias old_get_env get_env
147
145
  module_function :old_get_env
148
146
 
149
147
  def get_env(name, mode = default_env)
150
148
  if RSpec::Puppet.rspec_puppet_example?
151
149
  # use the actual platform, not the pretended
152
- old_get_env(name, Platform.actual_platform)
150
+ old_get_env(name, Platform.actual_platform)
153
151
  else
154
- old_get_env(name, mode)
152
+ old_get_env(name, mode)
155
153
  end
156
154
  end
157
155
  module_function :get_env
158
156
  end
159
157
 
160
158
  if respond_to?(:path_to_uri)
161
- alias :old_path_to_uri :path_to_uri
159
+ alias old_path_to_uri path_to_uri
162
160
  module_function :old_path_to_uri
163
161
 
164
162
  def path_to_uri(*args)
@@ -175,12 +173,12 @@ module Puppet
175
173
 
176
174
  # Allow rspec-puppet to pretend to be different platforms.
177
175
  module Platform
178
- alias :old_windows? :windows?
176
+ alias old_windows? windows?
179
177
  module_function :old_windows?
180
178
 
181
179
  def windows?
182
180
  if RSpec::Puppet.rspec_puppet_example?
183
- !pretending? ? (actual_platform == :windows) : pretend_windows?
181
+ pretending? ? pretend_windows? : (actual_platform == :windows)
184
182
  else
185
183
  old_windows?
186
184
  end
@@ -249,7 +247,7 @@ module Puppet
249
247
  if RSpec::Puppet.rspec_puppet_example?
250
248
  true
251
249
  else
252
- old_pass.bind(self).call(value)
250
+ old_pass.bind_call(self, value)
253
251
  end
254
252
  end
255
253
  end
@@ -263,7 +261,7 @@ module Puppet
263
261
  if RSpec::Puppet.rspec_puppet_example?
264
262
  true
265
263
  else
266
- old_pass.bind(self).call(value)
264
+ old_pass.bind_call(self, value)
267
265
  end
268
266
  end
269
267
  end
@@ -285,7 +283,7 @@ module Puppet
285
283
  return config unless config.nil? && RSpec.configuration.fallback_to_default_hiera
286
284
  end
287
285
  end
288
- old_hiera_conf_file.bind(self).call
286
+ old_hiera_conf_file.bind_call(self)
289
287
  end
290
288
  end
291
289
 
@@ -295,10 +293,15 @@ module Puppet
295
293
  if RSpec::Puppet.rspec_puppet_example?
296
294
  env = lookup_invocation.scope.environment
297
295
  mod = env.module(module_name)
298
- raise Puppet::DataBinding::LookupError, _("Environment '%{env}', cannot find module '%{module_name}'") % { :env => env.name, :module_name => module_name } unless mod
296
+ unless mod
297
+ raise Puppet::DataBinding::LookupError,
298
+ format(_("Environment '%<env>s', cannot find module '%<module_name>s'"), env: env.name,
299
+ module_name: module_name)
300
+ end
301
+
299
302
  return Pathname.new(mod.hiera_conf_file)
300
303
  end
301
- old_configuration_path.bind(self).call(lookup_invocation)
304
+ old_configuration_path.bind_call(self, lookup_invocation)
302
305
  end
303
306
  end
304
307
  end
@@ -308,29 +311,26 @@ class Pathname
308
311
  def rspec_puppet_basename(path)
309
312
  raise ArgumentError, 'pathname stubbing not enabled' unless RSpec.configuration.enable_pathname_stubbing
310
313
 
311
- if path =~ /\A[a-zA-Z]:(#{SEPARATOR_PAT}.*)\z/
312
- path = path[2..-1]
313
- end
314
+ path = path[2..-1] if /\A[a-zA-Z]:(#{SEPARATOR_PAT}.*)\z/.match?(path)
314
315
  path.split(SEPARATOR_PAT).last || path[/(#{SEPARATOR_PAT})/, 1] || path
315
316
  end
316
317
 
317
- if instance_methods.include?("chop_basename")
318
+ if instance_methods.include?('chop_basename')
318
319
  old_chop_basename = instance_method(:chop_basename)
319
320
 
320
321
  define_method(:chop_basename) do |path|
321
322
  if RSpec::Puppet.rspec_puppet_example?
322
323
  if RSpec.configuration.enable_pathname_stubbing
323
324
  base = rspec_puppet_basename(path)
324
- if /\A#{SEPARATOR_PAT}?\z/o =~ base
325
- return nil
326
- else
327
- return path[0, path.rindex(base)], base
328
- end
325
+ return nil if /\A#{SEPARATOR_PAT}?\z/o.match?(base)
326
+
327
+ [path[0, path.rindex(base)], base]
328
+
329
329
  else
330
- old_chop_basename.bind(self).call(path)
330
+ old_chop_basename.bind_call(self, path)
331
331
  end
332
332
  else
333
- old_chop_basename.bind(self).call(path)
333
+ old_chop_basename.bind_call(self, path)
334
334
  end
335
335
  end
336
336
  end
@@ -345,10 +345,8 @@ class Puppet::Module
345
345
  old_match_manifests = instance_method(:match_manifests)
346
346
 
347
347
  define_method(:match_manifests) do |rest|
348
- result = old_match_manifests.bind(self).call(rest)
349
- if result.length > 1 && File.basename(result[0]) == 'init.pp'
350
- result.shift
351
- end
348
+ result = old_match_manifests.bind_call(self, rest)
349
+ result.shift if result.length > 1 && File.basename(result[0]) == 'init.pp'
352
350
  result
353
351
  end
354
352
  end
@@ -361,7 +359,7 @@ Puppet::Type.type(:file).paramclass(:path).munge do |value|
361
359
  if RSpec::Puppet.rspec_puppet_example?
362
360
  value
363
361
  else
364
- file_path_munge.bind(self).call(value)
362
+ file_path_munge.bind_call(self, value)
365
363
  end
366
364
  end
367
365
 
@@ -373,7 +371,7 @@ Puppet::Type.type(:exec).paramclass(:user).validate do |value|
373
371
  if RSpec::Puppet.rspec_puppet_example?
374
372
  true
375
373
  else
376
- exec_user_validate.bind(self).call(value)
374
+ exec_user_validate.bind_call(self, value)
377
375
  end
378
376
  end
379
377
 
@@ -383,11 +381,11 @@ end
383
381
  Puppet::Type.type(:file).provide(:windows).class_eval do
384
382
  old_supports_acl = instance_method(:supports_acl?) if respond_to?(:supports_acl?)
385
383
 
386
- def supports_acl?(path)
384
+ def supports_acl?(_path)
387
385
  if RSpec::Puppet.rspec_puppet_example?
388
386
  true
389
387
  else
390
- old_supports_acl.bind(self).call(value)
388
+ old_supports_acl.bind_call(self, value)
391
389
  end
392
390
  end
393
391
 
@@ -397,7 +395,7 @@ Puppet::Type.type(:file).provide(:windows).class_eval do
397
395
  if RSpec::Puppet.rspec_puppet_example?
398
396
  true
399
397
  else
400
- old_manages_symlinks.bind(self).call(value)
398
+ old_manages_symlinks.bind_call(self, value)
401
399
  end
402
400
  end
403
401
  end
@@ -406,9 +404,11 @@ end
406
404
  # windows, otherwise it will require other libraries that probably won't be
407
405
  # available on non-windows hosts.
408
406
  module Kernel
409
- alias :old_require :require
407
+ alias old_require require
410
408
  def require(path)
411
- return if (['puppet/util/windows', 'win32/registry'].include?(path)) && RSpec::Puppet.rspec_puppet_example? && Puppet::Util::Platform.pretend_windows?
409
+ return if ['puppet/util/windows',
410
+ 'win32/registry'].include?(path) && RSpec::Puppet.rspec_puppet_example? && Puppet::Util::Platform.pretend_windows?
411
+
412
412
  old_require(path)
413
413
  end
414
414
  end
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake'
2
4
  require 'rspec/core/rake_task'
3
5
 
4
- desc "Run all RSpec code examples"
6
+ desc 'Run all RSpec code examples'
5
7
  RSpec::Core::RakeTask.new(:rspec) do |t|
6
- File.exist?('spec/spec.opts') ? opts = File.read("spec/spec.opts").chomp : opts = ""
8
+ opts = File.exist?('spec/spec.opts') ? File.read('spec/spec.opts').chomp : ''
7
9
  t.rspec_opts = opts
8
10
  end
9
11
 
10
- SPEC_SUITES = (Dir.entries('spec') - ['.', '..','fixtures']).select {|e| File.directory? "spec/#{e}" }
12
+ SPEC_SUITES = (Dir.entries('spec') - ['.', '..', 'fixtures']).select { |e| File.directory? "spec/#{e}" }
11
13
  namespace :rspec do
12
14
  SPEC_SUITES.each do |suite|
13
15
  desc "Run #{suite} RSpec code examples"
14
16
  RSpec::Core::RakeTask.new(suite) do |t|
15
17
  t.pattern = "spec/#{suite}/**/*_spec.rb"
16
- File.exist?('spec/spec.opts') ? opts = File.read("spec/spec.opts").chomp : opts = ""
18
+ opts = File.exist?('spec/spec.opts') ? File.read('spec/spec.opts').chomp : ''
17
19
  t.rspec_opts = opts
18
20
  end
19
21
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RSpec::Puppet
2
4
  # A raw string object, that is used by helpers to allow consumers to return non-quoted strings
3
5
  # as part of their params section.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RSpec::Puppet
2
4
  if defined?(::Puppet::Pops::Types::PSensitiveType::Sensitive)
3
5
  # A wrapper representing Sensitive data type, eg. in class params.
@@ -27,12 +29,12 @@ module RSpec::Puppet
27
29
  # If compared to Puppet Sensitive type, it compares the wrapped values.
28
30
 
29
31
  # @param other [#unwrap, Object] value to compare to
30
- def == other
32
+ def ==(other)
31
33
  if other.respond_to? :unwrap
32
- if unwrap.kind_of?(Regexp)
33
- return unwrap =~ other.unwrap
34
+ if unwrap.is_a?(Regexp)
35
+ unwrap =~ other.unwrap
34
36
  else
35
- return unwrap == other.unwrap
37
+ unwrap == other.unwrap
36
38
  end
37
39
  else
38
40
  super
@@ -40,12 +42,12 @@ module RSpec::Puppet
40
42
  end
41
43
  end
42
44
  else
43
- #:nocov:
45
+ # :nocov:
44
46
  class Sensitive
45
- def initialize(value)
47
+ def initialize(_value)
46
48
  raise 'The use of the Sensitive data type is not supported by this Puppet version'
47
49
  end
48
50
  end
49
- #:nocov:
51
+ # :nocov:
50
52
  end
51
53
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
1
4
  require 'puppet'
2
5
  require 'fileutils'
3
6
 
@@ -9,17 +12,17 @@ end
9
12
 
10
13
  module RSpec::Puppet
11
14
  class Setup
12
- def self.run(module_name=nil)
15
+ def self.run(module_name = nil)
13
16
  unless is_module_dir?
14
- $stderr.puts "Does not appear to be a Puppet module. Aborting"
17
+ warn 'Does not appear to be a Puppet module. Aborting'
15
18
  return false
16
19
  end
17
20
 
18
21
  if control_repo?
19
- $stderr.puts <<-END
20
- Unable to find a metadata.json file. If this is a module, please create a
21
- metadata.json file and try again.
22
- END
22
+ warn <<~END
23
+ Unable to find a metadata.json file. If this is a module, please create a
24
+ metadata.json file and try again.
25
+ END
23
26
  return false
24
27
  end
25
28
 
@@ -30,16 +33,16 @@ END
30
33
  safe_create_rakefile
31
34
  end
32
35
 
33
- def self.safe_setup_directories(module_name=nil, verbose=true)
36
+ def self.safe_setup_directories(module_name = nil, verbose = true)
34
37
  if control_repo?
35
- $stderr.puts "Unable to setup rspec-puppet automatically in a control repo" if verbose
38
+ warn 'Unable to setup rspec-puppet automatically in a control repo' if verbose
36
39
  return false
37
40
  end
38
41
 
39
42
  if module_name.nil?
40
43
  module_name = get_module_name
41
44
  if module_name.nil?
42
- $stderr.puts "Unable to determine module name. Aborting" if verbose
45
+ warn 'Unable to determine module name. Aborting' if verbose
43
46
  return false
44
47
  end
45
48
  end
@@ -52,35 +55,35 @@ END
52
55
  File.join('spec', 'hosts'),
53
56
  File.join('spec', 'fixtures'),
54
57
  File.join('spec', 'fixtures', 'manifests'),
55
- File.join('spec', 'fixtures', 'modules'),
58
+ File.join('spec', 'fixtures', 'modules')
56
59
  ].each { |dir| safe_mkdir(dir, verbose) }
57
60
 
58
61
  target = File.join('spec', 'fixtures', 'modules', module_name)
59
62
  safe_make_link('.', target, verbose)
60
63
  end
61
64
 
62
- def self.safe_teardown_links(module_name=nil)
65
+ def self.safe_teardown_links(module_name = nil)
63
66
  if module_name.nil?
64
67
  module_name = get_module_name
65
68
  if module_name.nil?
66
- $stderr.puts "Unable to determine module name. Aborting"
69
+ warn 'Unable to determine module name. Aborting'
67
70
  return false
68
71
  end
69
72
  end
70
73
 
71
74
  target = File.join('spec', 'fixtures', 'modules', module_name)
72
- if File.symlink?(target) && File.readlink(target) == File.expand_path('.')
73
- File.unlink(target)
74
- end
75
+ return unless File.symlink?(target) && File.readlink(target) == File.expand_path('.')
76
+
77
+ File.unlink(target)
75
78
  end
76
- protected
79
+
77
80
  def self.control_repo?
78
81
  !File.exist?('metadata.json')
79
82
  end
80
83
 
81
84
  def self.get_module_name
82
85
  module_name = nil
83
- Dir["manifests/*.pp"].entries.each do |manifest|
86
+ Dir['manifests/*.pp'].entries.each do |manifest|
84
87
  module_name = get_module_name_from_file(manifest)
85
88
  break unless module_name.nil?
86
89
  end
@@ -100,23 +103,19 @@ END
100
103
  p.string = File.read(file)
101
104
  tokens = p.fullscan
102
105
 
103
- i = tokens.index { |token| [:CLASS, :DEFINE].include? token.first }
104
- unless i.nil?
105
- module_name = tokens[i + 1].last[:value].split('::').first
106
- end
106
+ i = tokens.index { |token| %i[CLASS DEFINE].include? token.first }
107
+ module_name = tokens[i + 1].last[:value].split('::').first unless i.nil?
107
108
 
108
109
  module_name
109
110
  end
110
111
 
111
112
  def self.is_module_dir?
112
- Dir["*"].entries.include? "manifests"
113
+ Dir['*'].entries.include? 'manifests'
113
114
  end
114
115
 
115
- def self.safe_mkdir(dir, verbose=true)
116
+ def self.safe_mkdir(dir, verbose = true)
116
117
  if File.exist? dir
117
- unless File.directory? dir
118
- $stderr.puts "!! #{dir} already exists and is not a directory"
119
- end
118
+ warn "!! #{dir} already exists and is not a directory" unless File.directory? dir
120
119
  else
121
120
  begin
122
121
  FileUtils.mkdir dir
@@ -129,9 +128,7 @@ END
129
128
 
130
129
  def self.safe_touch(file)
131
130
  if File.exist? file
132
- unless File.file? file
133
- $stderr.puts "!! #{file} already exists and is not a regular file"
134
- end
131
+ warn "!! #{file} already exists and is not a regular file" unless File.file? file
135
132
  else
136
133
  FileUtils.touch file
137
134
  puts " + #{file}"
@@ -141,9 +138,7 @@ END
141
138
  def self.safe_create_file(filename, content)
142
139
  if File.exist? filename
143
140
  old_content = File.read(filename)
144
- if old_content != content
145
- $stderr.puts "!! #{filename} already exists and differs from template"
146
- end
141
+ warn "!! #{filename} already exists and differs from template" if old_content != content
147
142
  else
148
143
  File.open(filename, 'w') do |f|
149
144
  f.puts content
@@ -169,17 +164,17 @@ END
169
164
  Dir.respond_to?(:junction?) ? Dir.junction?(target) : File.symlink?(target)
170
165
  end
171
166
 
172
- def self.safe_make_link(source, target, verbose=true)
167
+ def self.safe_make_link(source, target, verbose = true)
173
168
  if File.exist?(target) && !link?(target)
174
- $stderr.puts "!! #{target} already exists and is not a symlink"
169
+ warn "!! #{target} already exists and is not a symlink"
175
170
  return
176
171
  end
177
172
 
178
173
  return if link_to_source?(target, source)
179
174
 
180
175
  if Puppet::Util::Platform.windows?
181
- output = `call mklink /J "#{target.gsub('/', '\\')}" "#{source}"`
182
- unless $?.success?
176
+ output = `call mklink /J "#{target.tr('/', '\\')}" "#{source}"`
177
+ unless $CHILD_STATUS.success?
183
178
  puts output
184
179
  abort
185
180
  end
@@ -194,19 +189,19 @@ END
194
189
  end
195
190
 
196
191
  def self.safe_create_rakefile
197
- content = <<-'EOF'
198
- require 'rspec-puppet/rake_task'
192
+ content = <<~EOF
193
+ require 'rspec-puppet/rake_task'
199
194
 
200
- begin
201
- if Gem::Specification::find_by_name('puppet-lint')
202
- require 'puppet-lint/tasks/puppet-lint'
203
- PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"]
204
- task :default => [:rspec, :lint]
205
- end
206
- rescue Gem::LoadError
207
- task :default => :rspec
208
- end
209
- EOF
195
+ begin
196
+ if Gem::Specification::find_by_name('puppet-lint')
197
+ require 'puppet-lint/tasks/puppet-lint'
198
+ PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"]
199
+ task :default => [:rspec, :lint]
200
+ end
201
+ rescue Gem::LoadError
202
+ task :default => :rspec
203
+ end
204
+ EOF
210
205
  safe_create_file('Rakefile', content)
211
206
  end
212
207
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec-puppet'
2
4
 
3
5
  fixture_path = File.join(File.dirname(File.expand_path(__FILE__)), 'fixtures')