puppet 4.10.4-universal-darwin → 4.10.5-universal-darwin

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/lib/puppet/application/lookup.rb +2 -2
  3. data/lib/puppet/configurer/fact_handler.rb +1 -1
  4. data/lib/puppet/face/epp.rb +26 -24
  5. data/lib/puppet/file_serving/metadata.rb +2 -2
  6. data/lib/puppet/forge.rb +5 -3
  7. data/lib/puppet/forge/cache.rb +1 -0
  8. data/lib/puppet/forge/repository.rb +2 -1
  9. data/lib/puppet/indirector/catalog/compiler.rb +4 -3
  10. data/lib/puppet/indirector/request.rb +9 -8
  11. data/lib/puppet/module.rb +30 -0
  12. data/lib/puppet/network/http/rack/rest.rb +2 -1
  13. data/lib/puppet/parser/compiler.rb +4 -0
  14. data/lib/puppet/parser/functions/assert_type.rb +1 -1
  15. data/lib/puppet/parser/functions/binary_file.rb +1 -1
  16. data/lib/puppet/parser/functions/break.rb +1 -1
  17. data/lib/puppet/parser/functions/defined.rb +1 -1
  18. data/lib/puppet/parser/functions/dig.rb +1 -1
  19. data/lib/puppet/parser/functions/each.rb +1 -1
  20. data/lib/puppet/parser/functions/epp.rb +1 -1
  21. data/lib/puppet/parser/functions/filter.rb +1 -1
  22. data/lib/puppet/parser/functions/find_file.rb +1 -1
  23. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  24. data/lib/puppet/parser/functions/lest.rb +1 -1
  25. data/lib/puppet/parser/functions/map.rb +1 -1
  26. data/lib/puppet/parser/functions/match.rb +1 -1
  27. data/lib/puppet/parser/functions/new.rb +1 -1
  28. data/lib/puppet/parser/functions/next.rb +1 -1
  29. data/lib/puppet/parser/functions/reduce.rb +1 -1
  30. data/lib/puppet/parser/functions/return.rb +1 -1
  31. data/lib/puppet/parser/functions/reverse_each.rb +1 -1
  32. data/lib/puppet/parser/functions/slice.rb +1 -1
  33. data/lib/puppet/parser/functions/step.rb +1 -1
  34. data/lib/puppet/parser/functions/strftime.rb +1 -1
  35. data/lib/puppet/parser/functions/then.rb +1 -1
  36. data/lib/puppet/parser/functions/type.rb +1 -1
  37. data/lib/puppet/parser/functions/with.rb +1 -1
  38. data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -2
  39. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
  40. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -2
  41. data/lib/puppet/pops/merge_strategy.rb +1 -1
  42. data/lib/puppet/provider/nameservice.rb +4 -2
  43. data/lib/puppet/reports/http.rb +4 -2
  44. data/lib/puppet/resource/capability_finder.rb +1 -1
  45. data/lib/puppet/type/file/source.rb +9 -3
  46. data/lib/puppet/util.rb +122 -2
  47. data/lib/puppet/util/execution.rb +1 -1
  48. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  49. data/lib/puppet/version.rb +1 -1
  50. data/locales/puppet.pot +12 -4
  51. data/spec/integration/application/apply_spec.rb +10 -0
  52. data/spec/integration/type/file_spec.rb +29 -0
  53. data/spec/integration/util/execution_spec.rb +8 -0
  54. data/spec/unit/application/lookup_spec.rb +1 -1
  55. data/spec/unit/configurer/fact_handler_spec.rb +30 -8
  56. data/spec/unit/face/epp_face_spec.rb +9 -0
  57. data/spec/unit/file_serving/metadata_spec.rb +21 -0
  58. data/spec/unit/forge/forge_spec.rb +112 -0
  59. data/spec/unit/forge/repository_spec.rb +4 -4
  60. data/spec/unit/functions/lookup_spec.rb +26 -0
  61. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -1
  62. data/spec/unit/indirector/file_bucket_file/file_spec.rb +3 -3
  63. data/spec/unit/indirector/request_spec.rb +16 -1
  64. data/spec/unit/module_spec.rb +29 -0
  65. data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -3
  66. data/spec/unit/network/http/rack/rest_spec.rb +3 -3
  67. data/spec/unit/type/file_spec.rb +46 -0
  68. data/spec/unit/util_spec.rb +230 -1
  69. data/tasks/parallel.rake +12 -7
  70. metadata +186 -198
@@ -1415,6 +1415,52 @@ describe Puppet::Type.type(:file) do
1415
1415
  end
1416
1416
  end
1417
1417
 
1418
+ describe 'when using source' do
1419
+ # different UTF-8 widths
1420
+ # 1-byte A
1421
+ # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
1422
+ # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
1423
+ # 4-byte <U+070E> - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
1424
+ let (:mixed_utf8) { "A\u06FF\u16A0\u{2070E}" } # Aۿᚠ<U+070E>
1425
+
1426
+ it 'should allow UTF-8 characters and return a UTF-8 uri' do
1427
+ filename = "/bar #{mixed_utf8}"
1428
+ source = "puppet://foo#{filename}"
1429
+ file[:source] = source
1430
+
1431
+ # intercept the indirector call to provide back mocked metadata for the given URI
1432
+ metadata = stub 'metadata', :source => source
1433
+ metadata.expects(:source=)
1434
+ Puppet::FileServing::Metadata.indirection.expects(:find).with do |path, opts|
1435
+ path == source
1436
+ end.returns metadata
1437
+
1438
+ uri = file.parameters[:source].uri
1439
+ expect(URI.unescape(uri.path)).to eq(filename)
1440
+ expect(uri.path.encoding).to eq(Encoding::UTF_8)
1441
+ end
1442
+
1443
+ it 'should allow UTF-8 characters inside the indirector / terminus code' do
1444
+ filename = "/bar #{mixed_utf8}"
1445
+ source = "puppet://foo#{filename}"
1446
+ file[:source] = source
1447
+
1448
+ # for this test to properly trigger previously errant behavior, the code for
1449
+ # Puppet::FileServing::Metadata.indirection.find must run and produce an
1450
+ # instance of Puppet::Indirector::FileMetadata::Rest that can be amended
1451
+ metadata = stub 'metadata', :source => source
1452
+ metadata.expects(:source=)
1453
+ require 'puppet/indirector/file_metadata/rest'
1454
+ Puppet::Indirector::FileMetadata::Rest.any_instance.expects(:find).with do |req|
1455
+ req.key == filename[1..-1]
1456
+ end.returns(metadata)
1457
+
1458
+ uri = file.parameters[:source].uri
1459
+ expect(URI.unescape(uri.path)).to eq(filename)
1460
+ expect(uri.path.encoding).to eq(Encoding::UTF_8)
1461
+ end
1462
+ end
1463
+
1418
1464
  describe "when using source" do
1419
1465
  before do
1420
1466
  file[:source] = File.expand_path('/one')
@@ -297,6 +297,14 @@ describe Puppet::Util do
297
297
  end
298
298
 
299
299
  describe "#path_to_uri" do
300
+ # different UTF-8 widths
301
+ # 1-byte A
302
+ # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
303
+ # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
304
+ # 4-byte ܎ - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
305
+ let (:mixed_utf8) { "A\u06FF\u16A0\u{2070E}" } # Aۿᚠ܎
306
+ let (:mixed_utf8_urlencoded) { "A%DB%BF%E1%9A%A0%F0%A0%9C%8E" }
307
+
300
308
  %w[. .. foo foo/bar foo/../bar].each do |path|
301
309
  it "should reject relative path: #{path}" do
302
310
  expect { Puppet::Util.path_to_uri(path) }.to raise_error(Puppet::Error)
@@ -307,6 +315,42 @@ describe Puppet::Util do
307
315
  expect(Puppet::Util.path_to_uri("/foo bar").path).to eq("/foo%20bar")
308
316
  end
309
317
 
318
+ it "should properly URI encode + and space in path" do
319
+ expect(Puppet::Util.path_to_uri("/foo+foo bar").path).to eq("/foo+foo%20bar")
320
+ end
321
+
322
+ # reserved characters are different for each part
323
+ # https://web.archive.org/web/20151229061347/http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding#Thereservedcharactersaredifferentforeachpart
324
+ # "?" is allowed unescaped anywhere within a query part,
325
+ # "/" is allowed unescaped anywhere within a query part,
326
+ # "=" is allowed unescaped anywhere within a path parameter or query parameter value, and within a path segment,
327
+ # ":@-._~!$&'()*+,;=" are allowed unescaped anywhere within a path segment part,
328
+ # "/?:@-._~!$&'()*+,;=" are allowed unescaped anywhere within a fragment part.
329
+ it "should properly URI encode + and space in path and query" do
330
+ path = "/foo+foo bar?foo+foo bar"
331
+ uri = Puppet::Util.path_to_uri(path)
332
+
333
+ # Ruby 1.9.3 URI#to_s has a bug that returns ASCII always
334
+ # despite parts being UTF-8 strings
335
+ expected_encoding = RUBY_VERSION == '1.9.3' ? Encoding::ASCII : Encoding::UTF_8
336
+
337
+ expect(uri.to_s.encoding).to eq(expected_encoding)
338
+ expect(uri.path).to eq("/foo+foo%20bar")
339
+ # either + or %20 is correct for an encoded space in query
340
+ # + is usually used for backward compatibility, but %20 is preferred for compat with Uri.unescape
341
+ expect(uri.query).to eq("foo%2Bfoo%20bar")
342
+ # complete roundtrip
343
+ expect(URI.unescape(uri.to_s)).to eq("file:#{path}")
344
+ expect(URI.unescape(uri.to_s).encoding).to eq(expected_encoding)
345
+ end
346
+
347
+ it "should perform UTF-8 URI escaping" do
348
+ uri = Puppet::Util.path_to_uri("/#{mixed_utf8}")
349
+
350
+ expect(uri.path.encoding).to eq(Encoding::UTF_8)
351
+ expect(uri.path).to eq("/#{mixed_utf8_urlencoded}")
352
+ end
353
+
310
354
  describe "when using platform :posix" do
311
355
  before :each do
312
356
  Puppet.features.stubs(:posix).returns true
@@ -340,7 +384,172 @@ describe Puppet::Util do
340
384
  it "should convert UNC #{path} to absolute URI" do
341
385
  uri = Puppet::Util.path_to_uri("\\\\server\\#{path}")
342
386
  expect(uri.host).to eq('server')
343
- expect(uri.path).to eq('/' + path)
387
+ expect(uri.path).to eq('/' + Puppet::Util.uri_encode(path))
388
+ end
389
+ end
390
+ end
391
+ end
392
+
393
+ describe "#uri_query_encode" do
394
+ # different UTF-8 widths
395
+ # 1-byte A
396
+ # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
397
+ # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
398
+ # 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
399
+ let (:mixed_utf8) { "A\u06FF\u16A0\u{2070E}" } # Aۿᚠ𠜎
400
+ let (:mixed_utf8_urlencoded) { "A%DB%BF%E1%9A%A0%F0%A0%9C%8E" }
401
+
402
+ it "should perform basic URI escaping that includes space and +" do
403
+ expect(Puppet::Util.uri_query_encode("foo bar+foo")).to eq("foo%20bar%2Bfoo")
404
+ end
405
+
406
+ it "should URI encode any special characters: = + <space> & * and #" do
407
+ expect(Puppet::Util.uri_query_encode("foo=bar+foo baz&bar=baz qux&special= *&qux=not fragment#")).to eq("foo%3Dbar%2Bfoo%20baz%26bar%3Dbaz%20qux%26special%3D%20%2A%26qux%3Dnot%20fragment%23")
408
+ end
409
+
410
+ [
411
+ "A\u06FF\u16A0\u{2070E}",
412
+ "A\u06FF\u16A0\u{2070E}".force_encoding(Encoding::BINARY)
413
+ ].each do |uri_string|
414
+ it "should perform UTF-8 URI escaping, even when input strings are not UTF-8" do
415
+ uri = Puppet::Util.uri_query_encode(mixed_utf8)
416
+
417
+ expect(uri.encoding).to eq(Encoding::UTF_8)
418
+ expect(uri).to eq(mixed_utf8_urlencoded)
419
+ end
420
+ end
421
+
422
+ it "should be usable by URI::parse" do
423
+ uri = URI::parse("puppet://server/path?" + Puppet::Util.uri_query_encode(mixed_utf8))
424
+
425
+ expect(uri.scheme).to eq('puppet')
426
+ expect(uri.host).to eq('server')
427
+ expect(uri.path).to eq('/path')
428
+ expect(uri.query).to eq(mixed_utf8_urlencoded)
429
+ end
430
+
431
+ it "should be usable by URI::Generic.build" do
432
+ params = {
433
+ :scheme => 'file',
434
+ :host => 'foobar',
435
+ :path => '/path/to',
436
+ :query => Puppet::Util.uri_query_encode(mixed_utf8)
437
+ }
438
+
439
+ uri = URI::Generic.build(params)
440
+
441
+ expect(uri.scheme).to eq('file')
442
+ expect(uri.host).to eq('foobar')
443
+ expect(uri.path).to eq("/path/to")
444
+ expect(uri.query).to eq(mixed_utf8_urlencoded)
445
+ end
446
+ end
447
+
448
+ describe "#uri_encode" do
449
+ # different UTF-8 widths
450
+ # 1-byte A
451
+ # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
452
+ # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
453
+ # 4-byte ܎ - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
454
+ let (:mixed_utf8) { "A\u06FF\u16A0\u{2070E}" } # Aۿᚠ܎
455
+ let (:mixed_utf8_urlencoded) { "A%DB%BF%E1%9A%A0%F0%A0%9C%8E" }
456
+
457
+ it "should perform URI escaping" do
458
+ expect(Puppet::Util.uri_encode("/foo bar")).to eq("/foo%20bar")
459
+ end
460
+
461
+ [
462
+ "A\u06FF\u16A0\u{2070E}",
463
+ "A\u06FF\u16A0\u{2070E}".force_encoding(Encoding::BINARY)
464
+ ].each do |uri_string|
465
+ it "should perform UTF-8 URI escaping, even when input strings are not UTF-8" do
466
+ uri = Puppet::Util.uri_encode(mixed_utf8)
467
+
468
+ expect(uri.encoding).to eq(Encoding::UTF_8)
469
+ expect(uri).to eq(mixed_utf8_urlencoded)
470
+ end
471
+ end
472
+
473
+ it "should treat & and = as delimiters in a query string, but URI encode other special characters: + <space> * and #" do
474
+ input = "http://foo.bar.com/path?foo=bar+foo baz&bar=baz qux&special= *&qux=not fragment#"
475
+ expected_output = "http://foo.bar.com/path?foo=bar%2Bfoo%20baz&bar=baz%20qux&special=%20%2A&qux=not%20fragment%23"
476
+ expect(Puppet::Util.uri_encode(input)).to eq(expected_output)
477
+ end
478
+
479
+ it "should be usable by URI::parse" do
480
+ uri = URI::parse(Puppet::Util.uri_encode("puppet://server/path/to/#{mixed_utf8}"))
481
+
482
+ expect(uri.scheme).to eq('puppet')
483
+ expect(uri.host).to eq('server')
484
+ expect(uri.path).to eq("/path/to/#{mixed_utf8_urlencoded}")
485
+ end
486
+
487
+ it "should be usable by URI::Generic.build" do
488
+ params = {
489
+ :scheme => 'file',
490
+ :host => 'foobar',
491
+ :path => Puppet::Util.uri_encode("/path/to/#{mixed_utf8}")
492
+ }
493
+
494
+ uri = URI::Generic.build(params)
495
+
496
+ expect(uri.scheme).to eq('file')
497
+ expect(uri.host).to eq('foobar')
498
+ expect(uri.path).to eq("/path/to/#{mixed_utf8_urlencoded}")
499
+ end
500
+
501
+ describe "when using platform :posix" do
502
+ before :each do
503
+ Puppet.features.stubs(:posix).returns true
504
+ Puppet.features.stubs(:microsoft_windows?).returns false
505
+ end
506
+
507
+ %w[/ /foo /foo/../bar].each do |path|
508
+ it "should not replace / in #{path} with %2F" do
509
+ expect(Puppet::Util.uri_encode(path)).to eq(path)
510
+ end
511
+ end
512
+ end
513
+
514
+ describe "with fragment support" do
515
+ context "disabled by default" do
516
+ it "should encode # as %23 in path" do
517
+ encoded = Puppet::Util.uri_encode("/foo bar#fragment")
518
+ expect(encoded).to eq("/foo%20bar%23fragment")
519
+ end
520
+
521
+ it "should encode # as %23 in query" do
522
+ encoded = Puppet::Util.uri_encode("/foo bar?baz+qux#fragment")
523
+ expect(encoded).to eq("/foo%20bar?baz%2Bqux%23fragment")
524
+ end
525
+ end
526
+
527
+ context "optionally enabled" do
528
+ it "should leave fragment delimiter # after encoded paths" do
529
+ encoded = Puppet::Util.uri_encode("/foo bar#fragment", { :allow_fragment => true })
530
+ expect(encoded).to eq("/foo%20bar#fragment")
531
+ end
532
+
533
+ it "should leave fragment delimiter # after encoded query" do
534
+ encoded = Puppet::Util.uri_encode("/foo bar?baz+qux#fragment", { :allow_fragment => true })
535
+ expect(encoded).to eq("/foo%20bar?baz%2Bqux#fragment")
536
+ end
537
+ end
538
+ end
539
+
540
+ describe "when using platform :windows" do
541
+ before :each do
542
+ Puppet.features.stubs(:posix).returns false
543
+ Puppet.features.stubs(:microsoft_windows?).returns true
544
+ end
545
+
546
+ it "should url encode \\ as %5C, but not replace : as %3F" do
547
+ expect(Puppet::Util.uri_encode('c:\\foo\\bar\\baz')).to eq('c:%5Cfoo%5Cbar%5Cbaz')
548
+ end
549
+
550
+ %w[C:/ C:/foo/bar].each do |path|
551
+ it "should not replace / in #{path} with %2F" do
552
+ expect(Puppet::Util.uri_encode(path)).to eq(path)
344
553
  end
345
554
  end
346
555
  end
@@ -349,6 +558,13 @@ describe Puppet::Util do
349
558
  describe ".uri_to_path" do
350
559
  require 'uri'
351
560
 
561
+ # different UTF-8 widths
562
+ # 1-byte A
563
+ # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
564
+ # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
565
+ # 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
566
+ let (:mixed_utf8) { "A\u06FF\u16A0\u{2070E}" } # Aۿᚠ𠜎
567
+
352
568
  it "should strip host component" do
353
569
  expect(Puppet::Util.uri_to_path(URI.parse('http://foo/bar'))).to eq('/bar')
354
570
  end
@@ -361,6 +577,19 @@ describe Puppet::Util do
361
577
  expect(Puppet::Util.uri_to_path(URI.parse('http://foo/bar%20baz'))).to eq('/bar baz')
362
578
  end
363
579
 
580
+
581
+ [
582
+ "http://foo/A%DB%BF%E1%9A%A0%F0%A0%9C%8E",
583
+ "http://foo/A%DB%BF%E1%9A%A0%F0%A0%9C%8E".force_encoding(Encoding::ASCII)
584
+ ].each do |uri_string|
585
+ it "should return paths as UTF-8" do
586
+ path = Puppet::Util.uri_to_path(URI.parse(uri_string))
587
+
588
+ expect(path).to eq("/#{mixed_utf8}")
589
+ expect(path.encoding).to eq(Encoding::UTF_8)
590
+ end
591
+ end
592
+
364
593
  it "should be nil-safe" do
365
594
  expect(Puppet::Util.uri_to_path(nil)).to be_nil
366
595
  end
@@ -156,17 +156,21 @@ else
156
156
 
157
157
  #
158
158
  # Responsible for parallelizing spec testing.
159
+ # Optional options list will be passed to rspec.
159
160
  #
160
161
  class Parallelizer
161
162
  # Number of processes to use
162
163
  attr_reader :process_count
163
164
  # Approximate size of each group of tests
164
165
  attr_reader :group_size
166
+ # Options list for rspec
167
+ attr_reader :options
165
168
 
166
- def initialize(process_count, group_size, color)
169
+ def initialize(process_count, group_size, color, options = [])
167
170
  @process_count = process_count
168
171
  @group_size = group_size
169
172
  @color = color
173
+ @options = options
170
174
  end
171
175
 
172
176
  def color?
@@ -180,7 +184,7 @@ else
180
184
  fail red('error: no specs were found') if groups.length == 0
181
185
 
182
186
  begin
183
- run_specs groups
187
+ run_specs(groups, options)
184
188
  ensure
185
189
  groups.each do |file|
186
190
  File.unlink(file)
@@ -211,7 +215,7 @@ else
211
215
  spec_group_files
212
216
  end
213
217
 
214
- def run_specs(groups)
218
+ def run_specs(groups, options)
215
219
  puts "Processing #{groups.length} spec group(s) with #{@process_count} worker(s)"
216
220
 
217
221
  interrupted = false
@@ -246,7 +250,8 @@ else
246
250
  break unless group && !interrupted
247
251
 
248
252
  # Spawn the worker process with redirected output
249
- io = IO.popen("ruby util/rspec_runner #{group}")
253
+ options_string = options ? options.join(' ') : ''
254
+ io = IO.popen("ruby util/rspec_runner #{group} #{options_string}")
250
255
  pids[thread_id] = io.pid
251
256
 
252
257
  # TODO: make the buffer pluggable to handle other output formats like documentation
@@ -391,15 +396,15 @@ else
391
396
  config.color
392
397
  end
393
398
 
394
- desc 'Runs specs in parallel.'
395
- task 'spec', :process_count, :group_size do |_, args|
399
+ desc 'Runs specs in parallel. Extra args are passed to rspec.'
400
+ task 'spec', [:process_count, :group_size] do |_, args|
396
401
  # Default group size in rspec examples
397
402
  DEFAULT_GROUP_SIZE = 1000
398
403
 
399
404
  process_count = [(args[:process_count] || Facter.value("processorcount")).to_i, 1].max
400
405
  group_size = [(args[:group_size] || DEFAULT_GROUP_SIZE).to_i, 1].max
401
406
 
402
- abort unless Parallel::RSpec::Parallelizer.new(process_count, group_size, color_output?).run
407
+ abort unless Parallel::RSpec::Parallelizer.new(process_count, group_size, color_output?, args.extras).run
403
408
  end
404
409
  end
405
410
  end
metadata CHANGED
@@ -1,128 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.10.4
5
- prerelease:
4
+ version: 4.10.5
6
5
  platform: universal-darwin
7
6
  authors:
8
7
  - Puppet Labs
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2017-07-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: facter
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>'
17
+ - - ">"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '2.0'
22
- - - <
20
+ - - "<"
23
21
  - !ruby/object:Gem::Version
24
22
  version: '4'
25
23
  type: :runtime
26
24
  prerelease: false
27
25
  version_requirements: !ruby/object:Gem::Requirement
28
- none: false
29
26
  requirements:
30
- - - ! '>'
27
+ - - ">"
31
28
  - !ruby/object:Gem::Version
32
29
  version: '2.0'
33
- - - <
30
+ - - "<"
34
31
  - !ruby/object:Gem::Version
35
32
  version: '4'
36
33
  - !ruby/object:Gem::Dependency
37
34
  name: hiera
38
35
  requirement: !ruby/object:Gem::Requirement
39
- none: false
40
36
  requirements:
41
- - - ! '>='
37
+ - - ">="
42
38
  - !ruby/object:Gem::Version
43
39
  version: '2.0'
44
- - - <
40
+ - - "<"
45
41
  - !ruby/object:Gem::Version
46
42
  version: '4'
47
43
  type: :runtime
48
44
  prerelease: false
49
45
  version_requirements: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
- - - ! '>='
47
+ - - ">="
53
48
  - !ruby/object:Gem::Version
54
49
  version: '2.0'
55
- - - <
50
+ - - "<"
56
51
  - !ruby/object:Gem::Version
57
52
  version: '4'
58
53
  - !ruby/object:Gem::Dependency
59
54
  name: json_pure
60
55
  requirement: !ruby/object:Gem::Requirement
61
- none: false
62
56
  requirements:
63
- - - ~>
57
+ - - "~>"
64
58
  - !ruby/object:Gem::Version
65
59
  version: '1.8'
66
60
  type: :runtime
67
61
  prerelease: false
68
62
  version_requirements: !ruby/object:Gem::Requirement
69
- none: false
70
63
  requirements:
71
- - - ~>
64
+ - - "~>"
72
65
  - !ruby/object:Gem::Version
73
66
  version: '1.8'
74
67
  - !ruby/object:Gem::Dependency
75
68
  name: gettext-setup
76
69
  requirement: !ruby/object:Gem::Requirement
77
- none: false
78
70
  requirements:
79
- - - ! '>='
71
+ - - ">="
80
72
  - !ruby/object:Gem::Version
81
73
  version: '0.10'
82
- - - <
74
+ - - "<"
83
75
  - !ruby/object:Gem::Version
84
76
  version: '1'
85
77
  type: :runtime
86
78
  prerelease: false
87
79
  version_requirements: !ruby/object:Gem::Requirement
88
- none: false
89
80
  requirements:
90
- - - ! '>='
81
+ - - ">="
91
82
  - !ruby/object:Gem::Version
92
83
  version: '0.10'
93
- - - <
84
+ - - "<"
94
85
  - !ruby/object:Gem::Version
95
86
  version: '1'
96
87
  - !ruby/object:Gem::Dependency
97
88
  name: locale
98
89
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
90
  requirements:
101
- - - ~>
91
+ - - "~>"
102
92
  - !ruby/object:Gem::Version
103
93
  version: '2.1'
104
94
  type: :runtime
105
95
  prerelease: false
106
96
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
97
  requirements:
109
- - - ~>
98
+ - - "~>"
110
99
  - !ruby/object:Gem::Version
111
100
  version: '2.1'
112
101
  - !ruby/object:Gem::Dependency
113
102
  name: CFPropertyList
114
103
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
104
  requirements:
117
- - - ~>
105
+ - - "~>"
118
106
  - !ruby/object:Gem::Version
119
107
  version: 2.2.6
120
108
  type: :runtime
121
109
  prerelease: false
122
110
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
111
  requirements:
125
- - - ~>
112
+ - - "~>"
126
113
  - !ruby/object:Gem::Version
127
114
  version: 2.2.6
128
115
  description: Puppet, an automated configuration management tool
@@ -139,9 +126,154 @@ files:
139
126
  - MAINTAINERS
140
127
  - README.md
141
128
  - Rakefile
142
- - install.rb
143
129
  - bin/extlookup2hiera
144
130
  - bin/puppet
131
+ - conf/auth.conf
132
+ - conf/environment.conf
133
+ - conf/fileserver.conf
134
+ - conf/puppet.conf
135
+ - examples/hiera/README.md
136
+ - examples/hiera/etc/hiera.yaml
137
+ - examples/hiera/etc/hieradb/common.yaml
138
+ - examples/hiera/etc/hieradb/dc1.yaml
139
+ - examples/hiera/etc/hieradb/development.yaml
140
+ - examples/hiera/etc/puppet.conf
141
+ - examples/hiera/modules/data/manifests/common.pp
142
+ - examples/hiera/modules/ntp/manifests/config.pp
143
+ - examples/hiera/modules/ntp/manifests/data.pp
144
+ - examples/hiera/modules/ntp/templates/ntp.conf.erb
145
+ - examples/hiera/modules/users/manifests/common.pp
146
+ - examples/hiera/modules/users/manifests/dc1.pp
147
+ - examples/hiera/modules/users/manifests/development.pp
148
+ - examples/hiera/site.pp
149
+ - ext/README.environment
150
+ - ext/autotest/Rakefile
151
+ - ext/autotest/config
152
+ - ext/autotest/readme.rst
153
+ - ext/build_defaults.yaml
154
+ - ext/cert_inspector
155
+ - ext/dbfix.sql
156
+ - ext/debian/README.Debian
157
+ - ext/debian/README.source
158
+ - ext/debian/TODO.Debian
159
+ - ext/debian/changelog.erb
160
+ - ext/debian/compat
161
+ - ext/debian/control
162
+ - ext/debian/copyright
163
+ - ext/debian/docs
164
+ - ext/debian/fileserver.conf
165
+ - ext/debian/puppet-common.dirs
166
+ - ext/debian/puppet-common.install
167
+ - ext/debian/puppet-common.lintian-overrides
168
+ - ext/debian/puppet-common.manpages
169
+ - ext/debian/puppet-common.postinst
170
+ - ext/debian/puppet-common.postrm
171
+ - ext/debian/puppet-el.dirs
172
+ - ext/debian/puppet-el.emacsen-install
173
+ - ext/debian/puppet-el.emacsen-remove
174
+ - ext/debian/puppet-el.emacsen-startup
175
+ - ext/debian/puppet-el.install
176
+ - ext/debian/puppet-testsuite.install
177
+ - ext/debian/puppet-testsuite.lintian-overrides
178
+ - ext/debian/puppet.default
179
+ - ext/debian/puppet.init
180
+ - ext/debian/puppet.lintian-overrides
181
+ - ext/debian/puppet.logrotate
182
+ - ext/debian/puppet.postinst
183
+ - ext/debian/puppet.postrm
184
+ - ext/debian/puppet.preinst
185
+ - ext/debian/puppetmaster-common.install
186
+ - ext/debian/puppetmaster-common.manpages
187
+ - ext/debian/puppetmaster-common.postinst
188
+ - ext/debian/puppetmaster-passenger.dirs
189
+ - ext/debian/puppetmaster-passenger.postinst
190
+ - ext/debian/puppetmaster-passenger.postrm
191
+ - ext/debian/puppetmaster.README.debian
192
+ - ext/debian/puppetmaster.default
193
+ - ext/debian/puppetmaster.init
194
+ - ext/debian/puppetmaster.lintian-overrides
195
+ - ext/debian/puppetmaster.postinst
196
+ - ext/debian/puppetmaster.postrm
197
+ - ext/debian/puppetmaster.preinst
198
+ - ext/debian/rules
199
+ - ext/debian/source/format
200
+ - ext/debian/source/options
201
+ - ext/debian/vim-puppet.README.Debian
202
+ - ext/debian/vim-puppet.dirs
203
+ - ext/debian/vim-puppet.yaml
204
+ - ext/debian/watch
205
+ - ext/emacs/puppet-mode-init.el
206
+ - ext/emacs/puppet-mode.el
207
+ - ext/envpuppet
208
+ - ext/envpuppet.bat
209
+ - ext/freebsd/puppetd
210
+ - ext/freebsd/puppetmasterd
211
+ - ext/gentoo/conf.d/puppet
212
+ - ext/gentoo/conf.d/puppetmaster
213
+ - ext/gentoo/init.d/puppet
214
+ - ext/gentoo/init.d/puppetmaster
215
+ - ext/gentoo/puppet/fileserver.conf
216
+ - ext/ips/puppet-agent
217
+ - ext/ips/puppet-master
218
+ - ext/ips/puppet.p5m.erb
219
+ - ext/ips/puppetagent.xml
220
+ - ext/ips/puppetmaster.xml
221
+ - ext/ips/rules
222
+ - ext/ips/transforms
223
+ - ext/ldap/puppet.schema
224
+ - ext/logcheck/puppet
225
+ - ext/nagios/check_puppet.rb
226
+ - ext/osx/file_mapping.yaml
227
+ - ext/osx/postflight.erb
228
+ - ext/osx/preflight.erb
229
+ - ext/osx/prototype.plist.erb
230
+ - ext/osx/puppet.plist
231
+ - ext/project_data.yaml
232
+ - ext/puppet-test
233
+ - ext/pure_ruby_dsl/dsl_test.rb
234
+ - ext/rack/config.ru
235
+ - ext/rack/example-passenger-vhost.conf
236
+ - ext/redhat/client.init
237
+ - ext/redhat/client.sysconfig
238
+ - ext/redhat/fileserver.conf
239
+ - ext/redhat/logrotate
240
+ - ext/redhat/puppet.spec.erb
241
+ - ext/redhat/server.init
242
+ - ext/redhat/server.sysconfig
243
+ - ext/regexp_nodes/classes/databases
244
+ - ext/regexp_nodes/classes/webservers
245
+ - ext/regexp_nodes/environment/development
246
+ - ext/regexp_nodes/parameters/service/prod
247
+ - ext/regexp_nodes/parameters/service/qa
248
+ - ext/regexp_nodes/parameters/service/sandbox
249
+ - ext/regexp_nodes/regexp_nodes.rb
250
+ - ext/solaris/pkginfo
251
+ - ext/solaris/smf/puppet
252
+ - ext/solaris/smf/puppet.xml
253
+ - ext/solaris/smf/puppetd.xml
254
+ - ext/solaris/smf/puppetmasterd.xml
255
+ - ext/solaris/smf/svc-puppetd
256
+ - ext/solaris/smf/svc-puppetmasterd
257
+ - ext/suse/client.init
258
+ - ext/suse/puppet.spec
259
+ - ext/suse/server.init
260
+ - ext/systemd/puppet.service
261
+ - ext/upload_facts.rb
262
+ - ext/vim/README
263
+ - ext/vim/ftdetect/puppet.vim
264
+ - ext/vim/ftplugin/puppet.vim
265
+ - ext/vim/indent/puppet.vim
266
+ - ext/vim/syntax/puppet.vim
267
+ - ext/windows/eventlog/Rakefile
268
+ - ext/windows/eventlog/puppetres.dll
269
+ - ext/windows/eventlog/puppetres.mc
270
+ - ext/windows/puppet_interactive.bat
271
+ - ext/windows/puppet_shell.bat
272
+ - ext/windows/run_puppet_interactive.bat
273
+ - ext/windows/service/daemon.bat
274
+ - ext/windows/service/daemon.rb
275
+ - ext/yaml_nodes.rb
276
+ - install.rb
145
277
  - lib/hiera/puppet_function.rb
146
278
  - lib/hiera/scope.rb
147
279
  - lib/hiera_puppet.rb
@@ -1413,10 +1545,8 @@ files:
1413
1545
  - lib/puppet/version.rb
1414
1546
  - lib/puppet_x.rb
1415
1547
  - lib/semver.rb
1416
- - conf/auth.conf
1417
- - conf/environment.conf
1418
- - conf/fileserver.conf
1419
- - conf/puppet.conf
1548
+ - locales/config.yaml
1549
+ - locales/puppet.pot
1420
1550
  - man/man5/puppet.conf.5
1421
1551
  - man/man8/extlookup2hiera.8
1422
1552
  - man/man8/puppet-agent.8
@@ -1449,155 +1579,6 @@ files:
1449
1579
  - man/man8/puppet-resource_type.8
1450
1580
  - man/man8/puppet-status.8
1451
1581
  - man/man8/puppet.8
1452
- - examples/hiera/README.md
1453
- - examples/hiera/etc/hiera.yaml
1454
- - examples/hiera/etc/hieradb/common.yaml
1455
- - examples/hiera/etc/hieradb/dc1.yaml
1456
- - examples/hiera/etc/hieradb/development.yaml
1457
- - examples/hiera/etc/puppet.conf
1458
- - examples/hiera/modules/data/manifests/common.pp
1459
- - examples/hiera/modules/ntp/manifests/config.pp
1460
- - examples/hiera/modules/ntp/manifests/data.pp
1461
- - examples/hiera/modules/ntp/templates/ntp.conf.erb
1462
- - examples/hiera/modules/users/manifests/common.pp
1463
- - examples/hiera/modules/users/manifests/dc1.pp
1464
- - examples/hiera/modules/users/manifests/development.pp
1465
- - examples/hiera/site.pp
1466
- - ext/README.environment
1467
- - ext/autotest/Rakefile
1468
- - ext/autotest/config
1469
- - ext/autotest/readme.rst
1470
- - ext/build_defaults.yaml
1471
- - ext/cert_inspector
1472
- - ext/dbfix.sql
1473
- - ext/debian/README.Debian
1474
- - ext/debian/README.source
1475
- - ext/debian/TODO.Debian
1476
- - ext/debian/changelog.erb
1477
- - ext/debian/compat
1478
- - ext/debian/control
1479
- - ext/debian/copyright
1480
- - ext/debian/docs
1481
- - ext/debian/fileserver.conf
1482
- - ext/debian/puppet-common.dirs
1483
- - ext/debian/puppet-common.install
1484
- - ext/debian/puppet-common.lintian-overrides
1485
- - ext/debian/puppet-common.manpages
1486
- - ext/debian/puppet-common.postinst
1487
- - ext/debian/puppet-common.postrm
1488
- - ext/debian/puppet-el.dirs
1489
- - ext/debian/puppet-el.emacsen-install
1490
- - ext/debian/puppet-el.emacsen-remove
1491
- - ext/debian/puppet-el.emacsen-startup
1492
- - ext/debian/puppet-el.install
1493
- - ext/debian/puppet-testsuite.install
1494
- - ext/debian/puppet-testsuite.lintian-overrides
1495
- - ext/debian/puppet.default
1496
- - ext/debian/puppet.init
1497
- - ext/debian/puppet.lintian-overrides
1498
- - ext/debian/puppet.logrotate
1499
- - ext/debian/puppet.postinst
1500
- - ext/debian/puppet.postrm
1501
- - ext/debian/puppet.preinst
1502
- - ext/debian/puppetmaster-common.install
1503
- - ext/debian/puppetmaster-common.manpages
1504
- - ext/debian/puppetmaster-common.postinst
1505
- - ext/debian/puppetmaster-passenger.dirs
1506
- - ext/debian/puppetmaster-passenger.postinst
1507
- - ext/debian/puppetmaster-passenger.postrm
1508
- - ext/debian/puppetmaster.README.debian
1509
- - ext/debian/puppetmaster.default
1510
- - ext/debian/puppetmaster.init
1511
- - ext/debian/puppetmaster.lintian-overrides
1512
- - ext/debian/puppetmaster.postinst
1513
- - ext/debian/puppetmaster.postrm
1514
- - ext/debian/puppetmaster.preinst
1515
- - ext/debian/rules
1516
- - ext/debian/source/format
1517
- - ext/debian/source/options
1518
- - ext/debian/vim-puppet.README.Debian
1519
- - ext/debian/vim-puppet.dirs
1520
- - ext/debian/vim-puppet.yaml
1521
- - ext/debian/watch
1522
- - ext/emacs/puppet-mode-init.el
1523
- - ext/emacs/puppet-mode.el
1524
- - ext/envpuppet
1525
- - ext/envpuppet.bat
1526
- - ext/freebsd/puppetd
1527
- - ext/freebsd/puppetmasterd
1528
- - ext/gentoo/conf.d/puppet
1529
- - ext/gentoo/conf.d/puppetmaster
1530
- - ext/gentoo/init.d/puppet
1531
- - ext/gentoo/init.d/puppetmaster
1532
- - ext/gentoo/puppet/fileserver.conf
1533
- - ext/ips/puppet-agent
1534
- - ext/ips/puppet-master
1535
- - ext/ips/puppet.p5m.erb
1536
- - ext/ips/puppetagent.xml
1537
- - ext/ips/puppetmaster.xml
1538
- - ext/ips/rules
1539
- - ext/ips/transforms
1540
- - ext/ldap/puppet.schema
1541
- - ext/logcheck/puppet
1542
- - ext/nagios/check_puppet.rb
1543
- - ext/osx/file_mapping.yaml
1544
- - ext/osx/postflight.erb
1545
- - ext/osx/preflight.erb
1546
- - ext/osx/prototype.plist.erb
1547
- - ext/osx/puppet.plist
1548
- - ext/project_data.yaml
1549
- - ext/puppet-test
1550
- - ext/pure_ruby_dsl/dsl_test.rb
1551
- - ext/rack/config.ru
1552
- - ext/rack/example-passenger-vhost.conf
1553
- - ext/redhat/client.init
1554
- - ext/redhat/client.sysconfig
1555
- - ext/redhat/fileserver.conf
1556
- - ext/redhat/logrotate
1557
- - ext/redhat/puppet.spec.erb
1558
- - ext/redhat/server.init
1559
- - ext/redhat/server.sysconfig
1560
- - ext/regexp_nodes/classes/databases
1561
- - ext/regexp_nodes/classes/webservers
1562
- - ext/regexp_nodes/environment/development
1563
- - ext/regexp_nodes/parameters/service/prod
1564
- - ext/regexp_nodes/parameters/service/qa
1565
- - ext/regexp_nodes/parameters/service/sandbox
1566
- - ext/regexp_nodes/regexp_nodes.rb
1567
- - ext/solaris/pkginfo
1568
- - ext/solaris/smf/puppet
1569
- - ext/solaris/smf/puppet.xml
1570
- - ext/solaris/smf/puppetd.xml
1571
- - ext/solaris/smf/puppetmasterd.xml
1572
- - ext/solaris/smf/svc-puppetd
1573
- - ext/solaris/smf/svc-puppetmasterd
1574
- - ext/suse/client.init
1575
- - ext/suse/puppet.spec
1576
- - ext/suse/server.init
1577
- - ext/systemd/puppet.service
1578
- - ext/upload_facts.rb
1579
- - ext/vim/README
1580
- - ext/vim/ftdetect/puppet.vim
1581
- - ext/vim/ftplugin/puppet.vim
1582
- - ext/vim/indent/puppet.vim
1583
- - ext/vim/syntax/puppet.vim
1584
- - ext/windows/eventlog/Rakefile
1585
- - ext/windows/eventlog/puppetres.dll
1586
- - ext/windows/eventlog/puppetres.mc
1587
- - ext/windows/puppet_interactive.bat
1588
- - ext/windows/puppet_shell.bat
1589
- - ext/windows/run_puppet_interactive.bat
1590
- - ext/windows/service/daemon.bat
1591
- - ext/windows/service/daemon.rb
1592
- - ext/yaml_nodes.rb
1593
- - tasks/benchmark.rake
1594
- - tasks/cfpropertylist.rake
1595
- - tasks/ci.rake
1596
- - tasks/manpages.rake
1597
- - tasks/memwalk.rake
1598
- - tasks/parallel.rake
1599
- - tasks/parser.rake
1600
- - tasks/yard.rake
1601
1582
  - spec/fixtures/faulty_face/puppet/face/syntax.rb
1602
1583
  - spec/fixtures/hiera.yaml
1603
1584
  - spec/fixtures/integration/node/environment/sitedir/00_a.pp
@@ -2229,6 +2210,7 @@ files:
2229
2210
  - spec/unit/file_system/uniquefile_spec.rb
2230
2211
  - spec/unit/file_system_spec.rb
2231
2212
  - spec/unit/forge/errors_spec.rb
2213
+ - spec/unit/forge/forge_spec.rb
2232
2214
  - spec/unit/forge/module_release_spec.rb
2233
2215
  - spec/unit/forge/repository_spec.rb
2234
2216
  - spec/unit/forge_spec.rb
@@ -2848,36 +2830,41 @@ files:
2848
2830
  - spec/unit/util_spec.rb
2849
2831
  - spec/unit/version_spec.rb
2850
2832
  - spec/watchr.rb
2851
- - locales/config.yaml
2852
- - locales/puppet.pot
2833
+ - tasks/benchmark.rake
2834
+ - tasks/cfpropertylist.rake
2835
+ - tasks/ci.rake
2836
+ - tasks/manpages.rake
2837
+ - tasks/memwalk.rake
2838
+ - tasks/parallel.rake
2839
+ - tasks/parser.rake
2840
+ - tasks/yard.rake
2853
2841
  homepage: https://github.com/puppetlabs/puppet
2854
2842
  licenses: []
2843
+ metadata: {}
2855
2844
  post_install_message:
2856
2845
  rdoc_options:
2857
- - --title
2846
+ - "--title"
2858
2847
  - Puppet - Configuration Management
2859
- - --main
2848
+ - "--main"
2860
2849
  - README.md
2861
- - --line-numbers
2850
+ - "--line-numbers"
2862
2851
  require_paths:
2863
2852
  - lib
2864
2853
  required_ruby_version: !ruby/object:Gem::Requirement
2865
- none: false
2866
2854
  requirements:
2867
- - - ! '>='
2855
+ - - ">="
2868
2856
  - !ruby/object:Gem::Version
2869
2857
  version: 1.9.3
2870
2858
  required_rubygems_version: !ruby/object:Gem::Requirement
2871
- none: false
2872
2859
  requirements:
2873
- - - ! '>'
2860
+ - - ">"
2874
2861
  - !ruby/object:Gem::Version
2875
2862
  version: 1.3.1
2876
2863
  requirements: []
2877
2864
  rubyforge_project: puppet
2878
- rubygems_version: 1.8.23
2865
+ rubygems_version: 2.4.8
2879
2866
  signing_key:
2880
- specification_version: 3
2867
+ specification_version: 4
2881
2868
  summary: Puppet, an automated configuration management tool
2882
2869
  test_files:
2883
2870
  - spec/fixtures/faulty_face/puppet/face/syntax.rb
@@ -3511,6 +3498,7 @@ test_files:
3511
3498
  - spec/unit/file_system/uniquefile_spec.rb
3512
3499
  - spec/unit/file_system_spec.rb
3513
3500
  - spec/unit/forge/errors_spec.rb
3501
+ - spec/unit/forge/forge_spec.rb
3514
3502
  - spec/unit/forge/module_release_spec.rb
3515
3503
  - spec/unit/forge/repository_spec.rb
3516
3504
  - spec/unit/forge_spec.rb