puppetlabs_spec_helper 2.15.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +15 -0
- data/.rubocop.yml +19 -6
- data/.rubocop_todo.yml +18 -18
- data/.travis.yml +8 -18
- data/CHANGELOG.md +71 -3
- data/Gemfile +9 -13
- data/HISTORY.md +1 -1
- data/README.md +6 -2
- data/Rakefile +1 -1
- data/lib/puppetlabs_spec_helper/module_spec_helper.rb +11 -0
- data/lib/puppetlabs_spec_helper/puppet_spec_helper.rb +4 -2
- data/lib/puppetlabs_spec_helper/puppetlabs_spec/files.rb +2 -0
- data/lib/puppetlabs_spec_helper/puppetlabs_spec/fixtures.rb +7 -2
- data/lib/puppetlabs_spec_helper/puppetlabs_spec/matchers.rb +4 -2
- data/lib/puppetlabs_spec_helper/puppetlabs_spec/puppet_internals.rb +5 -2
- data/lib/puppetlabs_spec_helper/puppetlabs_spec_helper.rb +2 -0
- data/lib/puppetlabs_spec_helper/rake_tasks.rb +69 -94
- data/lib/puppetlabs_spec_helper/tasks/check_symlinks.rb +4 -1
- data/lib/puppetlabs_spec_helper/tasks/fixtures.rb +31 -15
- data/lib/puppetlabs_spec_helper/version.rb +3 -1
- data/puppet_spec_helper.rb +2 -0
- data/puppetlabs_spec_helper.gemspec +6 -5
- data/puppetlabs_spec_helper.rb +2 -0
- metadata +43 -52
- data/lib/puppetlabs_spec_helper/tasks/beaker.rb +0 -112
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rspec-puppet'
|
2
4
|
require 'puppetlabs_spec_helper/puppet_spec_helper'
|
3
5
|
require 'puppetlabs_spec_helper/puppetlabs_spec/puppet_internals'
|
@@ -50,6 +52,15 @@ if ENV['SIMPLECOV'] == 'yes'
|
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
55
|
+
# Add all spec lib dirs to LOAD_PATH
|
56
|
+
components = module_path.split(File::PATH_SEPARATOR).collect do |dir|
|
57
|
+
next unless Dir.exist? dir
|
58
|
+
Dir.entries(dir).reject { |f| f =~ %r{^\.} }.collect { |f| File.join(dir, f, 'spec', 'lib') }
|
59
|
+
end
|
60
|
+
components.flatten.each do |d|
|
61
|
+
$LOAD_PATH << d if FileTest.directory?(d) && !$LOAD_PATH.include?(d)
|
62
|
+
end
|
63
|
+
|
53
64
|
RSpec.configure do |c|
|
54
65
|
c.environmentpath = spec_path if Puppet.version.to_f >= 4.0
|
55
66
|
c.module_path = module_path
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppetlabs_spec_helper/puppetlabs_spec_helper'
|
2
4
|
|
3
5
|
# Don't want puppet getting the command line arguments for rake or autotest
|
@@ -45,7 +47,7 @@ require 'puppetlabs_spec_helper/puppetlabs_spec/files'
|
|
45
47
|
# to compatibility mode for older versions of puppet.
|
46
48
|
begin
|
47
49
|
require 'puppet/test/test_helper'
|
48
|
-
rescue LoadError
|
50
|
+
rescue LoadError
|
49
51
|
end
|
50
52
|
|
51
53
|
# This is just a utility class to allow us to isolate the various version-specific
|
@@ -58,7 +60,7 @@ module Puppet
|
|
58
60
|
# Puppet's Settings singleton object, and other fun implementation details
|
59
61
|
# that code external to puppet should really never know about.
|
60
62
|
def self.initialize_via_fallback_compatibility(config)
|
61
|
-
|
63
|
+
warn('Warning: you appear to be using an older version of puppet; spec_helper will use fallback compatibility mode.')
|
62
64
|
config.before :all do
|
63
65
|
# nothing to do for now
|
64
66
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# This module provides some helper methods to assist with fixtures. It's
|
2
4
|
# methods are designed to help when you have a conforming fixture layout so we
|
3
5
|
# get project consistency.
|
@@ -14,6 +16,7 @@ module PuppetlabsSpec::Fixtures
|
|
14
16
|
callers = caller
|
15
17
|
while line = callers.shift
|
16
18
|
next unless found = line.match(%r{/spec/(.*)_spec\.rb:})
|
19
|
+
|
17
20
|
return fixtures(found[1])
|
18
21
|
end
|
19
22
|
raise "sorry, I couldn't work out your path from the caller stack!"
|
@@ -26,6 +29,7 @@ module PuppetlabsSpec::Fixtures
|
|
26
29
|
unless File.readable? file
|
27
30
|
raise "fixture '#{name}' for #{my_fixture_dir} is not readable"
|
28
31
|
end
|
32
|
+
|
29
33
|
file
|
30
34
|
end
|
31
35
|
|
@@ -37,12 +41,13 @@ module PuppetlabsSpec::Fixtures
|
|
37
41
|
|
38
42
|
# Provides a block mechanism for iterating across the files in your fixture
|
39
43
|
# area.
|
40
|
-
def my_fixtures(glob = '*', flags = 0)
|
44
|
+
def my_fixtures(glob = '*', flags = 0, &block)
|
41
45
|
files = Dir.glob(File.join(my_fixture_dir, glob), flags)
|
42
46
|
if files.empty?
|
43
47
|
raise "fixture '#{glob}' for #{my_fixture_dir} had no files!"
|
44
48
|
end
|
45
|
-
|
49
|
+
|
50
|
+
block_given? && files.each(&block)
|
46
51
|
files
|
47
52
|
end
|
48
53
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'stringio'
|
2
4
|
require 'rspec/expectations'
|
3
5
|
|
@@ -6,8 +8,8 @@ require 'rspec/expectations'
|
|
6
8
|
module RSpec
|
7
9
|
module Matchers
|
8
10
|
module BlockAliases
|
9
|
-
if method_defined? :
|
10
|
-
alias to should
|
11
|
+
if method_defined?(:should) && !method_defined?(:to)
|
12
|
+
alias to should
|
11
13
|
end
|
12
14
|
if method_defined? :should_not
|
13
15
|
alias to_not should_not unless method_defined? :to_not
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Initialize puppet for testing by loading the
|
2
4
|
# 'puppetlabs_spec_helper/puppet_spec_helper' library
|
3
5
|
require 'puppetlabs_spec_helper/puppet_spec_helper'
|
@@ -10,7 +12,7 @@ module PuppetlabsSpec
|
|
10
12
|
def scope(parts = {})
|
11
13
|
RSpec.deprecate('scope', replacement: 'rspec-puppet 2.2.0 provides a scope property')
|
12
14
|
|
13
|
-
if
|
15
|
+
if %r{^2\.[67]}.match?(Puppet.version)
|
14
16
|
# loadall should only be necessary prior to 3.x
|
15
17
|
# Please note, loadall needs to happen first when creating a scope, otherwise
|
16
18
|
# you might receive undefined method `function_*' errors
|
@@ -21,7 +23,7 @@ module PuppetlabsSpec
|
|
21
23
|
scope_parent = parts[:parent] || scope_compiler.topscope
|
22
24
|
scope_resource = parts[:resource] || resource(type: :node, title: scope_compiler.node.name)
|
23
25
|
|
24
|
-
scope = if
|
26
|
+
scope = if %r{^2\.[67]}.match?(Puppet.version)
|
25
27
|
Puppet::Parser::Scope.new(compiler: scope_compiler)
|
26
28
|
else
|
27
29
|
Puppet::Parser::Scope.new(scope_compiler)
|
@@ -67,6 +69,7 @@ module PuppetlabsSpec
|
|
67
69
|
# exists. This is a hack, but at least it's a hidden hack and not an
|
68
70
|
# exposed hack.
|
69
71
|
return nil unless Puppet::Parser::Functions.function(name)
|
72
|
+
|
70
73
|
scope.method("function_#{name}".intern)
|
71
74
|
end
|
72
75
|
module_function :function_method
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'fileutils'
|
2
4
|
require 'rake'
|
3
5
|
require 'rspec/core/rake_task'
|
4
6
|
require 'tmpdir'
|
5
7
|
require 'pathname'
|
6
8
|
require 'puppetlabs_spec_helper/version'
|
7
|
-
require 'puppetlabs_spec_helper/tasks/beaker'
|
8
9
|
require 'puppetlabs_spec_helper/tasks/fixtures'
|
9
10
|
require 'puppetlabs_spec_helper/tasks/check_symlinks'
|
10
11
|
require 'English'
|
@@ -53,6 +54,7 @@ RSpec::Core::RakeTask.new(:spec_standalone) do |t, args|
|
|
53
54
|
ci_total = ENV['CI_NODE_TOTAL'].to_i
|
54
55
|
ci_index = ENV['CI_NODE_INDEX'].to_i
|
55
56
|
raise "CI_NODE_INDEX must be between 1-#{ci_total}" unless ci_index >= 1 && ci_index <= ci_total
|
57
|
+
|
56
58
|
files = Rake::FileList[pattern].to_a
|
57
59
|
per_node = (files.size / ci_total.to_f).ceil
|
58
60
|
t.pattern = if args.extras.nil? || args.extras.empty?
|
@@ -108,16 +110,17 @@ end
|
|
108
110
|
desc 'Parallel spec tests'
|
109
111
|
task :parallel_spec_standalone do |_t, args|
|
110
112
|
raise 'Add the parallel_tests gem to Gemfile to enable this task' unless parallel_tests_loaded
|
113
|
+
|
111
114
|
if Rake::FileList[pattern].to_a.empty?
|
112
115
|
warn 'No files for parallel_spec to run against'
|
113
116
|
else
|
114
|
-
begin
|
115
|
-
args = ['-t', 'rspec']
|
116
|
-
args.push('--').concat(ENV['CI_SPEC_OPTIONS'].strip.split(' ')).push('--') unless ENV['CI_SPEC_OPTIONS'].nil? || ENV['CI_SPEC_OPTIONS'].strip.empty?
|
117
|
-
args.concat(Rake::FileList[pattern].to_a)
|
118
117
|
|
119
|
-
|
120
|
-
|
118
|
+
args = ['-t', 'rspec']
|
119
|
+
args.push('--').concat(ENV['CI_SPEC_OPTIONS'].strip.split(' ')).push('--') unless ENV['CI_SPEC_OPTIONS'].nil? || ENV['CI_SPEC_OPTIONS'].strip.empty?
|
120
|
+
args.concat(Rake::FileList[pattern].to_a)
|
121
|
+
|
122
|
+
ParallelTests::CLI.new.run(args)
|
123
|
+
|
121
124
|
end
|
122
125
|
end
|
123
126
|
|
@@ -145,12 +148,12 @@ namespace :build do
|
|
145
148
|
require 'pdk/util'
|
146
149
|
require 'pdk/module/build'
|
147
150
|
|
148
|
-
path = PDK::Module::Build.invoke(:
|
151
|
+
path = PDK::Module::Build.invoke(force: true, 'target-dir': File.join(Dir.pwd, 'pkg'))
|
149
152
|
puts "Module built: #{path}"
|
150
153
|
rescue LoadError
|
151
154
|
_ = `pdk --version`
|
152
155
|
unless $CHILD_STATUS.success?
|
153
|
-
|
156
|
+
warn 'Unable to build module. Please install PDK or add the `pdk` gem to your Gemfile.'
|
154
157
|
abort
|
155
158
|
end
|
156
159
|
|
@@ -168,52 +171,34 @@ require 'puppet-lint/tasks/puppet-lint'
|
|
168
171
|
# Must clear as it will not override the existing puppet-lint rake task since we require to import for
|
169
172
|
# the PuppetLint::RakeTask
|
170
173
|
Rake::Task[:lint].clear
|
171
|
-
#
|
174
|
+
# Utilize PuppetLint global configuration so that these settings can be tweaked by
|
175
|
+
# spec_helper.rb in an individual module
|
172
176
|
PuppetLint.configuration.relative = true
|
173
|
-
PuppetLint
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
]
|
177
|
+
PuppetLint.configuration.ignore_paths ||= []
|
178
|
+
PuppetLint.configuration.ignore_paths << '.vendor/**/*.pp'
|
179
|
+
PuppetLint.configuration.ignore_paths << 'bundle/**/*.pp'
|
180
|
+
PuppetLint.configuration.ignore_paths << 'pkg/**/*.pp'
|
181
|
+
PuppetLint.configuration.ignore_paths << 'spec/**/*.pp'
|
182
|
+
PuppetLint.configuration.ignore_paths << 'tests/**/*.pp'
|
183
|
+
PuppetLint.configuration.ignore_paths << 'types/**/*.pp'
|
184
|
+
PuppetLint.configuration.ignore_paths << 'vendor/**/*.pp'
|
185
|
+
puppet_lint_disable_checks = %w[
|
186
|
+
80chars
|
187
|
+
140chars
|
188
|
+
class_inherits_from_params_class
|
189
|
+
class_parameter_defaults
|
190
|
+
disable_autoloader_layout
|
191
|
+
documentation
|
192
|
+
single_quote_string_with_variables
|
193
|
+
]
|
194
|
+
puppet_lint_disable_checks.each do |check|
|
195
|
+
PuppetLint.configuration.send("disable_#{check}")
|
193
196
|
end
|
197
|
+
PuppetLint::RakeTask.new(:lint)
|
194
198
|
|
195
199
|
desc 'Run puppet-lint and fix issues automatically'
|
196
200
|
PuppetLint::RakeTask.new(:lint_fix) do |config|
|
197
|
-
config.fail_on_warnings = true
|
198
201
|
config.fix = true
|
199
|
-
config.disable_checks = %w[
|
200
|
-
80chars
|
201
|
-
140chars
|
202
|
-
class_inherits_from_params_class
|
203
|
-
class_parameter_defaults
|
204
|
-
disable_autoloader_layout
|
205
|
-
documentation
|
206
|
-
single_quote_string_with_variables
|
207
|
-
]
|
208
|
-
config.ignore_paths = [
|
209
|
-
'.vendor/**/*.pp',
|
210
|
-
'bundle/**/*.pp',
|
211
|
-
'pkg/**/*.pp',
|
212
|
-
'spec/**/*.pp',
|
213
|
-
'tests/**/*.pp',
|
214
|
-
'types/**/*.pp',
|
215
|
-
'vendor/**/*.pp',
|
216
|
-
]
|
217
202
|
end
|
218
203
|
|
219
204
|
require 'puppet-syntax/tasks/puppet-syntax'
|
@@ -263,7 +248,7 @@ task :compute_dev_version do
|
|
263
248
|
version = modinfo['version']
|
264
249
|
elsif File.exist?('Modulefile')
|
265
250
|
modfile = File.read('Modulefile')
|
266
|
-
version = modfile.match(%r{\nversion
|
251
|
+
version = modfile.match(%r{\nversion +['"](.*)['"]})[1]
|
267
252
|
else
|
268
253
|
raise 'Could not find a metadata.json or Modulefile! Cannot compute dev version without one or the other!'
|
269
254
|
end
|
@@ -273,14 +258,14 @@ task :compute_dev_version do
|
|
273
258
|
|
274
259
|
# If we're in a CI environment include our build number
|
275
260
|
# If the branch is a release branch we append an 'r' into the new_version,
|
276
|
-
# this is due to the release branch buildID conflicting with
|
261
|
+
# this is due to the release branch buildID conflicting with main branch when trying to push to the staging forge.
|
277
262
|
# More info can be found at https://tickets.puppetlabs.com/browse/FM-6170
|
278
|
-
new_version = if build = ENV['BUILD_NUMBER'] || ENV['TRAVIS_BUILD_NUMBER']
|
263
|
+
new_version = if build = (ENV['BUILD_NUMBER'] || ENV['TRAVIS_BUILD_NUMBER'])
|
279
264
|
if branch.eql? 'release'
|
280
|
-
'%s-%s%04d-%s' % [version, 'r', build, sha]
|
265
|
+
'%s-%s%04d-%s' % [version, 'r', build, sha] # legacy support code # rubocop:disable Style/FormatStringToken
|
281
266
|
else
|
282
|
-
'%s-%04d-%s' % [version, build, sha]
|
283
|
-
|
267
|
+
'%s-%04d-%s' % [version, build, sha] # legacy support code # rubocop:disable Style/FormatStringToken
|
268
|
+
end
|
284
269
|
else
|
285
270
|
"#{version}-#{sha}"
|
286
271
|
end
|
@@ -297,10 +282,7 @@ task :release_checks do
|
|
297
282
|
else
|
298
283
|
Rake::Task[:spec].invoke
|
299
284
|
end
|
300
|
-
Rake::Task[
|
301
|
-
Rake::Task['check:test_file'].invoke
|
302
|
-
Rake::Task['check:dot_underscore'].invoke
|
303
|
-
Rake::Task['check:git_ignore'].invoke
|
285
|
+
Rake::Task[:check].invoke
|
304
286
|
end
|
305
287
|
|
306
288
|
namespace :check do
|
@@ -341,6 +323,9 @@ namespace :check do
|
|
341
323
|
end
|
342
324
|
end
|
343
325
|
|
326
|
+
desc 'Run static pre release checks'
|
327
|
+
task check: ['check:symlinks', 'check:test_file', 'check:dot_underscore', 'check:git_ignore']
|
328
|
+
|
344
329
|
desc 'Display the list of available rake tasks'
|
345
330
|
task :help do
|
346
331
|
system('rake -T')
|
@@ -351,6 +336,14 @@ begin
|
|
351
336
|
RuboCop::RakeTask.new(:rubocop) do |task|
|
352
337
|
# These make the rubocop experience maybe slightly less terrible
|
353
338
|
task.options = ['-D', '-S', '-E']
|
339
|
+
|
340
|
+
# Use Rubocop's Github Actions formatter if possible
|
341
|
+
if ENV['GITHUB_ACTIONS'] == 'true'
|
342
|
+
rubocop_spec = Gem::Specification.find_by_name('rubocop')
|
343
|
+
if Gem::Version.new(rubocop_spec.version) >= Gem::Version.new('1.2')
|
344
|
+
task.formatters << 'github'
|
345
|
+
end
|
346
|
+
end
|
354
347
|
end
|
355
348
|
rescue LoadError
|
356
349
|
desc 'rubocop is not available in this installation'
|
@@ -359,29 +352,6 @@ rescue LoadError
|
|
359
352
|
end
|
360
353
|
end
|
361
354
|
|
362
|
-
module_dir = Dir.pwd
|
363
|
-
locales_dir = File.absolute_path('locales', module_dir)
|
364
|
-
# if the task is allowed to run when the module does not have a locales directory,
|
365
|
-
# the task is run in the puppet gem instead and creates a POT there.
|
366
|
-
puts 'gettext-setup tasks will only be loaded if the locales/ directory is present' if Rake.verbose == true
|
367
|
-
if File.exist? locales_dir
|
368
|
-
begin
|
369
|
-
spec = Gem::Specification.find_by_name 'gettext-setup'
|
370
|
-
load "#{spec.gem_dir}/lib/tasks/gettext.rake"
|
371
|
-
# Initialization requires a valid locales directory
|
372
|
-
GettextSetup.initialize(locales_dir)
|
373
|
-
namespace :module do
|
374
|
-
desc 'Runs all tasks to build a modules POT file for internationalization'
|
375
|
-
task :pot_gen do
|
376
|
-
Rake::Task['gettext:pot'].invoke
|
377
|
-
Rake::Task['gettext:metadata_pot'].invoke("#{module_dir}/metadata.json")
|
378
|
-
end
|
379
|
-
end
|
380
|
-
rescue Gem::LoadError
|
381
|
-
puts 'No gettext-setup gem found, skipping GettextSetup config initialization' if Rake.verbose == true
|
382
|
-
end
|
383
|
-
end
|
384
|
-
|
385
355
|
def create_gch_task(changelog_user = nil, changelog_project = nil, changelog_since_tag = nil, changelog_tag_pattern = 'v%s')
|
386
356
|
if Bundler.rubygems.find_name('github_changelog_generator').any?
|
387
357
|
# needed a place to hide these methods
|
@@ -389,6 +359,7 @@ def create_gch_task(changelog_user = nil, changelog_project = nil, changelog_sin
|
|
389
359
|
def changelog_user_from_metadata
|
390
360
|
result = JSON.parse(File.read('metadata.json'))['author']
|
391
361
|
raise 'unable to find the changelog_user in .sync.yml, or the author in metadata.json' if result.nil?
|
362
|
+
|
392
363
|
puts "GitHubChangelogGenerator user:#{result}"
|
393
364
|
result
|
394
365
|
end
|
@@ -396,14 +367,17 @@ def create_gch_task(changelog_user = nil, changelog_project = nil, changelog_sin
|
|
396
367
|
def changelog_project_from_metadata
|
397
368
|
result = JSON.parse(File.read('metadata.json'))['name']
|
398
369
|
raise 'unable to find the changelog_project in .sync.yml or the name in metadata.json' if result.nil?
|
370
|
+
|
399
371
|
puts "GitHubChangelogGenerator project:#{result}"
|
400
372
|
result
|
401
373
|
end
|
402
374
|
|
403
375
|
def changelog_future_release
|
404
376
|
return unless Rake.application.top_level_tasks.include? 'changelog'
|
377
|
+
|
405
378
|
result = JSON.parse(File.read('metadata.json'))['version']
|
406
379
|
raise 'unable to find the future_release (version) in metadata.json' if result.nil?
|
380
|
+
|
407
381
|
puts "GitHubChangelogGenerator future_release:#{result}"
|
408
382
|
result
|
409
383
|
end
|
@@ -413,6 +387,7 @@ def create_gch_task(changelog_user = nil, changelog_project = nil, changelog_sin
|
|
413
387
|
if ENV['CHANGELOG_GITHUB_TOKEN'].nil?
|
414
388
|
raise "Set CHANGELOG_GITHUB_TOKEN environment variable eg 'export CHANGELOG_GITHUB_TOKEN=valid_token_here'"
|
415
389
|
end
|
390
|
+
|
416
391
|
config.user = changelog_user || changelog_user_from_metadata
|
417
392
|
config.project = changelog_project || changelog_project_from_metadata
|
418
393
|
config.since_tag = changelog_since_tag if changelog_since_tag
|
@@ -442,18 +417,18 @@ def create_gch_task(changelog_user = nil, changelog_project = nil, changelog_sin
|
|
442
417
|
else
|
443
418
|
desc 'Generate a Changelog from GitHub'
|
444
419
|
task :changelog do
|
445
|
-
raise
|
446
|
-
The changelog tasks depends on unreleased features of the github_changelog_generator gem.
|
447
|
-
Please manually add it to your .sync.yml for now, and run `pdk update`:
|
448
|
-
---
|
449
|
-
Gemfile:
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
420
|
+
raise <<~MESSAGE
|
421
|
+
The changelog tasks depends on unreleased features of the github_changelog_generator gem.
|
422
|
+
Please manually add it to your .sync.yml for now, and run `pdk update`:
|
423
|
+
---
|
424
|
+
Gemfile:
|
425
|
+
optional:
|
426
|
+
':development':
|
427
|
+
- gem: 'github_changelog_generator'
|
428
|
+
git: 'https://github.com/skywinder/github-changelog-generator'
|
429
|
+
ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018'
|
430
|
+
condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
|
431
|
+
MESSAGE
|
457
432
|
end
|
458
433
|
end
|
459
434
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'pathspec'
|
2
4
|
|
3
5
|
module PuppetlabsSpecHelper; end
|
@@ -33,7 +35,7 @@ class PuppetlabsSpecHelper::Tasks::CheckSymlinks
|
|
33
35
|
end
|
34
36
|
|
35
37
|
def ignored?(path)
|
36
|
-
path = path
|
38
|
+
path = "#{path}/" if File.directory?(path)
|
37
39
|
|
38
40
|
!ignore_pathspec.match_paths([path], Dir.pwd).empty?
|
39
41
|
end
|
@@ -42,6 +44,7 @@ class PuppetlabsSpecHelper::Tasks::CheckSymlinks
|
|
42
44
|
@ignore_pathspec ||= PathSpec.new(DEFAULT_IGNORED).tap do |pathspec|
|
43
45
|
IGNORE_LIST_FILES.each do |f|
|
44
46
|
next unless File.file?(f) && File.readable?(f)
|
47
|
+
|
45
48
|
File.open(f, 'r') { |fd| pathspec.add(fd) }
|
46
49
|
end
|
47
50
|
end
|