puppetlabs_spec_helper 2.13.0 → 2.16.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,15 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'open3'
3
5
  require 'json'
4
6
 
5
7
  module PuppetlabsSpecHelper; end
6
8
  module PuppetlabsSpecHelper::Tasks; end
9
+
7
10
  module PuppetlabsSpecHelper::Tasks::FixtureHelpers
8
11
  # This is a helper for the self-symlink entry of fixtures.yml
9
12
  def source_dir
10
13
  Dir.pwd
11
14
  end
12
15
 
16
+ # @return [String] - the name of current module
13
17
  def module_name
14
18
  raise ArgumentError unless File.file?('metadata.json') && File.readable?('metadata.json')
15
19
 
@@ -23,16 +27,48 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
23
27
  File.basename(Dir.pwd).split('-').last
24
28
  end
25
29
 
26
- # cache the repositories and return a hash object
30
+ def module_version(path)
31
+ metadata_path = File.join(path, 'metadata.json')
32
+ raise ArgumentError unless File.file?(metadata_path) && File.readable?(metadata_path)
33
+
34
+ metadata = JSON.parse(File.read(metadata_path))
35
+ metadata.fetch('version', nil) || '0.0.1'
36
+ rescue JSON::ParserError, ArgumentError
37
+ logger.warn "Failed to find module version at path #{path}"
38
+ '0.0.1'
39
+ end
40
+
41
+ # @return [Hash] - returns a hash of all the fixture repositories
42
+ # @example
43
+ # {"puppetlabs-stdlib"=>{"target"=>"https://gitlab.com/puppetlabs/puppet-stdlib.git",
44
+ # "ref"=>nil, "branch"=>"master", "scm"=>nil,
45
+ # }}
27
46
  def repositories
28
- unless @repositories
29
- @repositories = fixtures('repositories')
30
- end
31
- @repositories
47
+ @repositories ||= fixtures('repositories') || {}
48
+ end
49
+
50
+ # @return [Hash] - returns a hash of all the fixture forge modules
51
+ # @example
52
+ # {"puppetlabs-stdlib"=>{"target"=>"spec/fixtures/modules/stdlib",
53
+ # "ref"=>nil, "branch"=>nil, "scm"=>nil,
54
+ # "flags"=>"--module_repository=https://myforge.example.com/", "subdir"=>nil}}
55
+ def forge_modules
56
+ @forge_modules ||= fixtures('forge_modules') || {}
57
+ end
58
+
59
+ # @return [Hash] - a hash of symlinks specified in the fixtures file
60
+ def symlinks
61
+ @symlinks ||= fixtures('symlinks') || {}
32
62
  end
33
63
 
64
+ # @return [Hash] - returns a hash with the module name and the source directory
34
65
  def auto_symlink
35
- { module_name => '#{source_dir}' }
66
+ { module_name => "\#{source_dir}" }
67
+ end
68
+
69
+ # @return [Boolean] - true if the os is a windows system
70
+ def windows?
71
+ !!File::ALT_SEPARATOR
36
72
  end
37
73
 
38
74
  def fixtures(category)
@@ -77,7 +113,6 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
77
113
 
78
114
  result = {}
79
115
  if fixtures.include?(category) && !fixtures[category].nil?
80
-
81
116
  defaults = { 'target' => 'spec/fixtures/modules' }
82
117
 
83
118
  # load defaults from the `.fixtures.yml` `defaults` section
@@ -94,28 +129,39 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
94
129
  end
95
130
  # there should be a warning or something if it's not a hash...
96
131
  next unless opts.instance_of?(Hash)
132
+
97
133
  # merge our options into the defaults to get the
98
134
  # final option list
99
135
  opts = defaults.merge(opts)
100
136
 
101
137
  next unless include_repo?(opts['puppet_version'])
102
138
 
103
- real_target = eval('"' + opts['target'] + '"')
104
- real_source = eval('"' + opts['repo'] + '"')
139
+ real_target = eval("\"#{opts['target']}\"", binding, __FILE__, __LINE__) # evaluating target reference in this context (see auto_symlink)
140
+ real_source = eval("\"#{opts['repo']}\"", binding, __FILE__, __LINE__) # evaluating repo reference in this context (see auto_symlink)
105
141
 
106
- result[real_source] = {
142
+ result[real_source] = validate_fixture_hash!(
107
143
  'target' => File.join(real_target, fixture),
108
- 'ref' => opts['ref'],
144
+ 'ref' => opts['ref'] || opts['tag'],
109
145
  'branch' => opts['branch'],
110
146
  'scm' => opts['scm'],
111
147
  'flags' => opts['flags'],
112
148
  'subdir' => opts['subdir'],
113
- }
149
+ )
114
150
  end
115
151
  end
116
152
  result
117
153
  end
118
154
 
155
+ def validate_fixture_hash!(hash)
156
+ # Can only validate git based scm
157
+ return hash unless hash['scm'] == 'git'
158
+
159
+ # Forward slashes in the ref aren't allowed. And is probably a branch name.
160
+ raise ArgumentError, "The ref for #{hash['target']} is invalid (Contains a forward slash). If this is a branch name, please use the 'branch' setting instead." if hash['ref'] =~ %r{/}
161
+
162
+ hash
163
+ end
164
+
119
165
  def include_repo?(version_range)
120
166
  if version_range && defined?(SemanticPuppet)
121
167
  puppet_spec = Gem::Specification.find_by_name('puppet')
@@ -149,6 +195,7 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
149
195
  unless File.exist?(target)
150
196
  raise "Failed to clone #{scm} repository #{remote} into #{target}"
151
197
  end
198
+
152
199
  result
153
200
  end
154
201
 
@@ -196,7 +243,7 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
196
243
  end
197
244
 
198
245
  def git_remote_url(target)
199
- output, status = Open3.capture2e('git', '-C', target, 'remote', 'get-url', 'origin')
246
+ output, status = Open3.capture2e('git', '--git-dir', File.join(target, '.git'), 'ls-remote', '--get-url', 'origin')
200
247
  status.success? ? output.strip : nil
201
248
  end
202
249
 
@@ -219,7 +266,7 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
219
266
  else
220
267
  Logger::INFO
221
268
  end
222
- @logger = Logger.new(STDERR)
269
+ @logger = Logger.new($stderr)
223
270
  @logger.level = level
224
271
  end
225
272
  @logger
@@ -229,12 +276,13 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
229
276
  # The problem with the relative path is that PMT doesn't expand the path properly and so passing in a relative path here
230
277
  # becomes something like C:\somewhere\backslashes/spec/fixtures/work-dir on Windows, and then PMT barfs itself.
231
278
  # This has been reported as https://tickets.puppetlabs.com/browse/PUP-4884
232
- File.expand_path((ENV['MODULE_WORKING_DIR']) ? ENV['MODULE_WORKING_DIR'] : 'spec/fixtures/work-dir')
279
+ File.expand_path(ENV['MODULE_WORKING_DIR'] || 'spec/fixtures/work-dir')
233
280
  end
234
281
 
235
282
  # returns the current thread count that is currently active
236
283
  # a status of false or nil means the thread completed
237
284
  # so when anything else we count that as a active thread
285
+ # @return [Integer] - current thread count
238
286
  def current_thread_count(items)
239
287
  active_threads = items.find_all do |_item, opts|
240
288
  if opts[:thread]
@@ -247,79 +295,47 @@ module PuppetlabsSpecHelper::Tasks::FixtureHelpers
247
295
  active_threads.count
248
296
  end
249
297
 
250
- # returns the max_thread_count
251
- # because we may want to limit ssh or https connections
298
+ # @summary Set a limit on the amount threads used, defaults to 10
299
+ # MAX_FIXTURE_THREAD_COUNT can be used to set this limit
300
+ # @return [Integer] - returns the max_thread_count
252
301
  def max_thread_limit
253
- unless @max_thread_limit
254
- # the default thread count is 10 but can be
255
- # raised by using environment variable MAX_FIXTURE_THREAD_COUNT
256
- @max_thread_limit = if ENV['MAX_FIXTURE_THREAD_COUNT'].to_i > 0
257
- ENV['MAX_FIXTURE_THREAD_COUNT'].to_i
258
- else
259
- 10 # the default
260
- end
261
- end
262
- @max_thread_limit
302
+ @max_thread_limit ||= (ENV['MAX_FIXTURE_THREAD_COUNT'] || 10).to_i
263
303
  end
264
- end
265
- include PuppetlabsSpecHelper::Tasks::FixtureHelpers
266
304
 
267
- desc 'Create the fixtures directory'
268
- task :spec_prep do
269
- # Ruby only sets File::ALT_SEPARATOR on Windows and Rubys standard library
270
- # uses this to check for Windows
271
- is_windows = !!File::ALT_SEPARATOR
272
- if is_windows
273
- begin
274
- require 'win32/dir'
275
- rescue LoadError
276
- $stderr.puts 'win32-dir gem not installed, falling back to executing mklink directly'
277
- end
278
- end
279
-
280
- # git has a race condition creating that directory, that would lead to aborted clone operations
281
- FileUtils.mkdir_p('spec/fixtures/modules')
282
-
283
- repositories.each do |remote, opts|
284
- scm = 'git'
285
- target = opts['target']
286
- subdir = opts['subdir']
287
- ref = opts['ref']
288
- scm = opts['scm'] if opts['scm']
289
- branch = opts['branch'] if opts['branch']
290
- flags = opts['flags']
291
- # get the current active threads that are alive
292
- count = current_thread_count(repositories)
293
- if count < max_thread_limit
294
- logger.debug "New Thread started for #{remote}"
295
- # start up a new thread and store it in the opts hash
296
- opts[:thread] = Thread.new do
297
- if valid_repo?(scm, target, remote)
298
- update_repo(scm, target)
299
- else
300
- clone_repo(scm, remote, target, subdir, ref, branch, flags)
305
+ # @param items [Hash] - a hash of either repositories or forge modules
306
+ # @param [Block] - the method you wish to use to download the item
307
+ def download_items(items)
308
+ items.each do |remote, opts|
309
+ # get the current active threads that are alive
310
+ count = current_thread_count(items)
311
+ if count < max_thread_limit
312
+ logger.debug "New Thread started for #{remote}"
313
+ # start up a new thread and store it in the opts hash
314
+ opts[:thread] = Thread.new do
315
+ yield(remote, opts)
301
316
  end
302
- revision(scm, target, ref) if ref
303
- remove_subdirectory(target, subdir) if subdir
317
+ else
318
+ # the last thread started should be the longest wait
319
+ item, item_opts = items.find_all { |_i, o| o.key?(:thread) }.last
320
+ logger.debug "Waiting on #{item}"
321
+ item_opts[:thread].join # wait for the thread to finish
322
+ # now that we waited lets try again
323
+ redo
304
324
  end
305
- else
306
- # the last thread started should be the longest wait
307
- item, item_opts = repositories.find_all { |_i, o| o.key?(:thread) }.last
308
- logger.debug "Waiting on #{item}"
309
- item_opts[:thread].join # wait for the thread to finish
310
- # now that we waited lets try again
311
- redo
312
325
  end
326
+ # wait for all the threads to finish
327
+ items.each { |_remote, opts| opts[:thread].join }
313
328
  end
314
329
 
315
- # wait for all the threads to finish
316
- repositories.each { |_remote, opts| opts[:thread].join }
317
-
318
- fixtures('symlinks').each do |target, link|
330
+ # @param target [String] - the target directory
331
+ # @param link [String] - the name of the link you wish to create
332
+ # works on windows and linux
333
+ def setup_symlink(target, link)
319
334
  link = link['target']
320
- next if File.symlink?(link)
335
+ return if File.symlink?(link)
336
+
321
337
  logger.info("Creating symlink from #{link} to #{target}")
322
- if is_windows
338
+ if windows?
323
339
  target = File.join(File.dirname(link), target) unless Pathname.new(target).absolute?
324
340
  if Dir.respond_to?(:create_junction)
325
341
  Dir.create_junction(link, target)
@@ -331,7 +347,35 @@ task :spec_prep do
331
347
  end
332
348
  end
333
349
 
334
- fixtures('forge_modules').each do |remote, opts|
350
+ # @return [Boolean] - returns true if the module was downloaded successfully, false otherwise
351
+ # @param [String] - the remote url or namespace/name of the module to download
352
+ # @param [Hash] - list of options such as version, branch, ref
353
+ def download_repository(remote, opts)
354
+ scm = 'git'
355
+ target = opts['target']
356
+ subdir = opts['subdir']
357
+ ref = opts['ref']
358
+ scm = opts['scm'] if opts['scm']
359
+ branch = opts['branch'] if opts['branch']
360
+ flags = opts['flags']
361
+ if valid_repo?(scm, target, remote)
362
+ update_repo(scm, target)
363
+ else
364
+ clone_repo(scm, remote, target, subdir, ref, branch, flags)
365
+ end
366
+ revision(scm, target, ref) if ref
367
+ remove_subdirectory(target, subdir) if subdir
368
+ end
369
+
370
+ # @return [String] - the spec/fixtures/modules directory in the module root folder
371
+ def module_target_dir
372
+ @module_target_dir ||= File.expand_path('spec/fixtures/modules')
373
+ end
374
+
375
+ # @return [Boolean] - returns true if the module was downloaded successfully, false otherwise
376
+ # @param [String] - the remote url or namespace/name of the module to download
377
+ # @param [Hash] - list of options such as version
378
+ def download_module(remote, opts)
335
379
  ref = ''
336
380
  flags = ''
337
381
  if opts.instance_of?(String)
@@ -342,34 +386,60 @@ task :spec_prep do
342
386
  flags = " #{opts['flags']}" if opts['flags']
343
387
  end
344
388
 
345
- next if File.directory?(target)
389
+ return false if File.directory?(target) && (ref.empty? || opts['ref'] == module_version(target))
390
+
391
+ # The PMT cannot handle multi threaded runs due to cache directory collisons
392
+ # so we randomize the directory instead.
393
+ # Does working_dir even need to be passed?
394
+ Dir.mktmpdir do |working_dir|
395
+ command = "puppet module install#{ref}#{flags} --ignore-dependencies" \
396
+ ' --force' \
397
+ " --module_working_dir \"#{working_dir}\"" \
398
+ " --target-dir \"#{module_target_dir}\" \"#{remote}\""
346
399
 
347
- working_dir = module_working_directory
348
- target_dir = File.expand_path('spec/fixtures/modules')
400
+ unless system(command)
401
+ raise "Failed to install module #{remote} to #{module_target_dir}"
402
+ end
403
+ end
404
+ $CHILD_STATUS.success?
405
+ end
406
+ end
349
407
 
350
- command = 'puppet module install' + ref + flags + \
351
- ' --ignore-dependencies' \
352
- ' --force' \
353
- " --module_working_dir \"#{working_dir}\"" \
354
- " --target-dir \"#{target_dir}\" \"#{remote}\""
408
+ include PuppetlabsSpecHelper::Tasks::FixtureHelpers # DSL include # rubocop:disable Style/MixinUsage
355
409
 
356
- unless system(command)
357
- raise "Failed to install module #{remote} to #{target_dir}"
410
+ desc 'Create the fixtures directory'
411
+ task :spec_prep do
412
+ # Ruby only sets File::ALT_SEPARATOR on Windows and Rubys standard library
413
+ # uses this to check for Windows
414
+ if windows?
415
+ begin
416
+ require 'win32/dir'
417
+ rescue LoadError
418
+ warn 'win32-dir gem not installed, falling back to executing mklink directly'
358
419
  end
359
420
  end
360
421
 
422
+ # git has a race condition creating that directory, that would lead to aborted clone operations
423
+ FileUtils.mkdir_p('spec/fixtures/modules')
424
+
425
+ symlinks.each { |target, link| setup_symlink(target, link) }
426
+
427
+ download_items(repositories) { |remote, opts| download_repository(remote, opts) }
428
+
429
+ download_items(forge_modules) { |remote, opts| download_module(remote, opts) }
430
+
361
431
  FileUtils.mkdir_p('spec/fixtures/manifests')
362
432
  FileUtils.touch('spec/fixtures/manifests/site.pp')
363
433
  end
364
434
 
365
435
  desc 'Clean up the fixtures directory'
366
436
  task :spec_clean do
367
- fixtures('repositories').each do |_remote, opts|
437
+ repositories.each do |_remote, opts|
368
438
  target = opts['target']
369
439
  FileUtils.rm_rf(target)
370
440
  end
371
441
 
372
- fixtures('forge_modules').each do |_remote, opts|
442
+ forge_modules.each do |_remote, opts|
373
443
  target = opts['target']
374
444
  FileUtils.rm_rf(target)
375
445
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PuppetlabsSpecHelper
2
- VERSION = '2.13.0'.freeze
4
+ VERSION = '2.16.0'.freeze
3
5
 
4
6
  # compat for pre-1.2.0 users; deprecated
5
7
  module Version
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
2
4
 
3
5
  require 'puppetlabs_spec_helper/puppet_spec_helper'
@@ -1,6 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'puppetlabs_spec_helper/version'
6
6
 
@@ -21,17 +21,17 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ['lib']
22
22
 
23
23
  spec.add_runtime_dependency 'mocha', '~> 1.0'
24
+ spec.add_runtime_dependency 'pathspec', '>= 0.2.1', '< 1.1.0'
24
25
  spec.add_runtime_dependency 'puppet-lint', '~> 2.0'
25
- spec.add_runtime_dependency 'puppet-syntax', '~> 2.0'
26
+ spec.add_runtime_dependency 'puppet-syntax', ['>= 2.0', '< 4']
26
27
  spec.add_runtime_dependency 'rspec-puppet', '~> 2.0'
27
- spec.add_runtime_dependency 'pathspec', '~> 0.2.1'
28
28
 
29
29
  spec.add_development_dependency 'bundler'
30
+ spec.add_development_dependency 'fakefs', ['>= 0.13.3', '< 2']
31
+ spec.add_development_dependency 'gettext-setup', '~> 0.29'
30
32
  spec.add_development_dependency 'pry'
31
33
  spec.add_development_dependency 'puppet'
32
- spec.add_development_dependency 'rake', '~> 10.0'
34
+ spec.add_development_dependency 'rake', ['>= 10.0', '< 14']
33
35
  spec.add_development_dependency 'rspec', '~> 3.0'
34
36
  spec.add_development_dependency 'yard'
35
- spec.add_development_dependency 'gettext-setup', '~> 0.29'
36
- spec.add_development_dependency 'fakefs', '~> 0.13.3'
37
37
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  $LOAD_PATH.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
2
4
 
3
5
  require 'puppetlabs_spec_helper/puppetlabs_spec_helper'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetlabs_spec_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.13.0
4
+ version: 2.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-01-11 00:00:00.000000000 Z
12
+ date: 2021-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mocha
@@ -26,21 +26,27 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: puppet-lint
29
+ name: pathspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: 0.2.1
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: 1.1.0
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
- - - "~>"
42
+ - - ">="
40
43
  - !ruby/object:Gem::Version
41
- version: '2.0'
44
+ version: 0.2.1
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.0
42
48
  - !ruby/object:Gem::Dependency
43
- name: puppet-syntax
49
+ name: puppet-lint
44
50
  requirement: !ruby/object:Gem::Requirement
45
51
  requirements:
46
52
  - - "~>"
@@ -54,33 +60,39 @@ dependencies:
54
60
  - !ruby/object:Gem::Version
55
61
  version: '2.0'
56
62
  - !ruby/object:Gem::Dependency
57
- name: rspec-puppet
63
+ name: puppet-syntax
58
64
  requirement: !ruby/object:Gem::Requirement
59
65
  requirements:
60
- - - "~>"
66
+ - - ">="
61
67
  - !ruby/object:Gem::Version
62
68
  version: '2.0'
69
+ - - "<"
70
+ - !ruby/object:Gem::Version
71
+ version: '4'
63
72
  type: :runtime
64
73
  prerelease: false
65
74
  version_requirements: !ruby/object:Gem::Requirement
66
75
  requirements:
67
- - - "~>"
76
+ - - ">="
68
77
  - !ruby/object:Gem::Version
69
78
  version: '2.0'
79
+ - - "<"
80
+ - !ruby/object:Gem::Version
81
+ version: '4'
70
82
  - !ruby/object:Gem::Dependency
71
- name: pathspec
83
+ name: rspec-puppet
72
84
  requirement: !ruby/object:Gem::Requirement
73
85
  requirements:
74
86
  - - "~>"
75
87
  - !ruby/object:Gem::Version
76
- version: 0.2.1
88
+ version: '2.0'
77
89
  type: :runtime
78
90
  prerelease: false
79
91
  version_requirements: !ruby/object:Gem::Requirement
80
92
  requirements:
81
93
  - - "~>"
82
94
  - !ruby/object:Gem::Version
83
- version: 0.2.1
95
+ version: '2.0'
84
96
  - !ruby/object:Gem::Dependency
85
97
  name: bundler
86
98
  requirement: !ruby/object:Gem::Requirement
@@ -96,103 +108,115 @@ dependencies:
96
108
  - !ruby/object:Gem::Version
97
109
  version: '0'
98
110
  - !ruby/object:Gem::Dependency
99
- name: pry
111
+ name: fakefs
100
112
  requirement: !ruby/object:Gem::Requirement
101
113
  requirements:
102
114
  - - ">="
103
115
  - !ruby/object:Gem::Version
104
- version: '0'
116
+ version: 0.13.3
117
+ - - "<"
118
+ - !ruby/object:Gem::Version
119
+ version: '2'
105
120
  type: :development
106
121
  prerelease: false
107
122
  version_requirements: !ruby/object:Gem::Requirement
108
123
  requirements:
109
124
  - - ">="
110
125
  - !ruby/object:Gem::Version
111
- version: '0'
126
+ version: 0.13.3
127
+ - - "<"
128
+ - !ruby/object:Gem::Version
129
+ version: '2'
112
130
  - !ruby/object:Gem::Dependency
113
- name: puppet
131
+ name: gettext-setup
114
132
  requirement: !ruby/object:Gem::Requirement
115
133
  requirements:
116
- - - ">="
134
+ - - "~>"
117
135
  - !ruby/object:Gem::Version
118
- version: '0'
136
+ version: '0.29'
119
137
  type: :development
120
138
  prerelease: false
121
139
  version_requirements: !ruby/object:Gem::Requirement
122
140
  requirements:
123
- - - ">="
141
+ - - "~>"
124
142
  - !ruby/object:Gem::Version
125
- version: '0'
143
+ version: '0.29'
126
144
  - !ruby/object:Gem::Dependency
127
- name: rake
145
+ name: pry
128
146
  requirement: !ruby/object:Gem::Requirement
129
147
  requirements:
130
- - - "~>"
148
+ - - ">="
131
149
  - !ruby/object:Gem::Version
132
- version: '10.0'
150
+ version: '0'
133
151
  type: :development
134
152
  prerelease: false
135
153
  version_requirements: !ruby/object:Gem::Requirement
136
154
  requirements:
137
- - - "~>"
155
+ - - ">="
138
156
  - !ruby/object:Gem::Version
139
- version: '10.0'
157
+ version: '0'
140
158
  - !ruby/object:Gem::Dependency
141
- name: rspec
159
+ name: puppet
142
160
  requirement: !ruby/object:Gem::Requirement
143
161
  requirements:
144
- - - "~>"
162
+ - - ">="
145
163
  - !ruby/object:Gem::Version
146
- version: '3.0'
164
+ version: '0'
147
165
  type: :development
148
166
  prerelease: false
149
167
  version_requirements: !ruby/object:Gem::Requirement
150
168
  requirements:
151
- - - "~>"
169
+ - - ">="
152
170
  - !ruby/object:Gem::Version
153
- version: '3.0'
171
+ version: '0'
154
172
  - !ruby/object:Gem::Dependency
155
- name: yard
173
+ name: rake
156
174
  requirement: !ruby/object:Gem::Requirement
157
175
  requirements:
158
176
  - - ">="
159
177
  - !ruby/object:Gem::Version
160
- version: '0'
178
+ version: '10.0'
179
+ - - "<"
180
+ - !ruby/object:Gem::Version
181
+ version: '14'
161
182
  type: :development
162
183
  prerelease: false
163
184
  version_requirements: !ruby/object:Gem::Requirement
164
185
  requirements:
165
186
  - - ">="
166
187
  - !ruby/object:Gem::Version
167
- version: '0'
188
+ version: '10.0'
189
+ - - "<"
190
+ - !ruby/object:Gem::Version
191
+ version: '14'
168
192
  - !ruby/object:Gem::Dependency
169
- name: gettext-setup
193
+ name: rspec
170
194
  requirement: !ruby/object:Gem::Requirement
171
195
  requirements:
172
196
  - - "~>"
173
197
  - !ruby/object:Gem::Version
174
- version: '0.29'
198
+ version: '3.0'
175
199
  type: :development
176
200
  prerelease: false
177
201
  version_requirements: !ruby/object:Gem::Requirement
178
202
  requirements:
179
203
  - - "~>"
180
204
  - !ruby/object:Gem::Version
181
- version: '0.29'
205
+ version: '3.0'
182
206
  - !ruby/object:Gem::Dependency
183
- name: fakefs
207
+ name: yard
184
208
  requirement: !ruby/object:Gem::Requirement
185
209
  requirements:
186
- - - "~>"
210
+ - - ">="
187
211
  - !ruby/object:Gem::Version
188
- version: 0.13.3
212
+ version: '0'
189
213
  type: :development
190
214
  prerelease: false
191
215
  version_requirements: !ruby/object:Gem::Requirement
192
216
  requirements:
193
- - - "~>"
217
+ - - ">="
194
218
  - !ruby/object:Gem::Version
195
- version: 0.13.3
219
+ version: '0'
196
220
  description: Contains rake tasks and a standard spec_helper for running spec tests
197
221
  on puppet modules.
198
222
  email:
@@ -208,6 +232,7 @@ files:
208
232
  - ".rubocop_todo.yml"
209
233
  - ".travis.yml"
210
234
  - CHANGELOG.md
235
+ - CODEOWNERS
211
236
  - CONTRIBUTING.md
212
237
  - Gemfile
213
238
  - HISTORY.md
@@ -248,8 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
273
  - !ruby/object:Gem::Version
249
274
  version: '0'
250
275
  requirements: []
251
- rubyforge_project:
252
- rubygems_version: 2.6.14.1
276
+ rubygems_version: 3.2.5
253
277
  signing_key:
254
278
  specification_version: 4
255
279
  summary: Standard tasks and configuration for module spec tests.