puppet 4.10.4-universal-darwin → 4.10.5-universal-darwin
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.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/lib/puppet/application/lookup.rb +2 -2
- data/lib/puppet/configurer/fact_handler.rb +1 -1
- data/lib/puppet/face/epp.rb +26 -24
- data/lib/puppet/file_serving/metadata.rb +2 -2
- data/lib/puppet/forge.rb +5 -3
- data/lib/puppet/forge/cache.rb +1 -0
- data/lib/puppet/forge/repository.rb +2 -1
- data/lib/puppet/indirector/catalog/compiler.rb +4 -3
- data/lib/puppet/indirector/request.rb +9 -8
- data/lib/puppet/module.rb +30 -0
- data/lib/puppet/network/http/rack/rest.rb +2 -1
- data/lib/puppet/parser/compiler.rb +4 -0
- data/lib/puppet/parser/functions/assert_type.rb +1 -1
- data/lib/puppet/parser/functions/binary_file.rb +1 -1
- data/lib/puppet/parser/functions/break.rb +1 -1
- data/lib/puppet/parser/functions/defined.rb +1 -1
- data/lib/puppet/parser/functions/dig.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/find_file.rb +1 -1
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/lest.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +1 -1
- data/lib/puppet/parser/functions/next.rb +1 -1
- data/lib/puppet/parser/functions/reduce.rb +1 -1
- data/lib/puppet/parser/functions/return.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/functions/step.rb +1 -1
- data/lib/puppet/parser/functions/strftime.rb +1 -1
- data/lib/puppet/parser/functions/then.rb +1 -1
- data/lib/puppet/parser/functions/type.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -2
- data/lib/puppet/pops/merge_strategy.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +4 -2
- data/lib/puppet/reports/http.rb +4 -2
- data/lib/puppet/resource/capability_finder.rb +1 -1
- data/lib/puppet/type/file/source.rb +9 -3
- data/lib/puppet/util.rb +122 -2
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +12 -4
- data/spec/integration/application/apply_spec.rb +10 -0
- data/spec/integration/type/file_spec.rb +29 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/unit/application/lookup_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +30 -8
- data/spec/unit/face/epp_face_spec.rb +9 -0
- data/spec/unit/file_serving/metadata_spec.rb +21 -0
- data/spec/unit/forge/forge_spec.rb +112 -0
- data/spec/unit/forge/repository_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +26 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +3 -3
- data/spec/unit/indirector/request_spec.rb +16 -1
- data/spec/unit/module_spec.rb +29 -0
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -3
- data/spec/unit/network/http/rack/rest_spec.rb +3 -3
- data/spec/unit/type/file_spec.rb +46 -0
- data/spec/unit/util_spec.rb +230 -1
- data/tasks/parallel.rake +12 -7
- metadata +186 -198
    
        data/spec/unit/type/file_spec.rb
    CHANGED
    
    | @@ -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')
         | 
    
        data/spec/unit/util_spec.rb
    CHANGED
    
    | @@ -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
         | 
    
        data/tasks/parallel.rake
    CHANGED
    
    | @@ -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  | 
| 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 | 
            -
                             | 
| 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 | 
| 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. | 
| 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- | 
| 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 | 
            -
            -  | 
| 1417 | 
            -
            -  | 
| 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 | 
            -
            -  | 
| 2852 | 
            -
            -  | 
| 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:  | 
| 2865 | 
            +
            rubygems_version: 2.4.8
         | 
| 2879 2866 | 
             
            signing_key: 
         | 
| 2880 | 
            -
            specification_version:  | 
| 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
         |