puppet 4.8.2-x64-mingw32 → 4.9.0-x64-mingw32
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 +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2607
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
| @@ -533,7 +533,7 @@ describe 'the new function' do | |
| 533 533 | 
             
                { []            => 'Notify[Array[Unit], []]',
         | 
| 534 534 | 
             
                  [true]        => 'Notify[Array[Boolean], [true]]',
         | 
| 535 535 | 
             
                  {'a'=>true, 'b' => false}   => 'Notify[Array[Array[Scalar]], [[a, true], [b, false]]]',
         | 
| 536 | 
            -
                  'abc'         => 'Notify[Array[String], [a, b, c]]',
         | 
| 536 | 
            +
                  'abc'         => 'Notify[Array[String[1, 1]], [a, b, c]]',
         | 
| 537 537 | 
             
                  3             => 'Notify[Array[Integer], [0, 1, 2]]',
         | 
| 538 538 | 
             
                }.each do |input, result|
         | 
| 539 539 | 
             
                  it "produces #{result} when given the value #{input.inspect} and wrap is not given" do
         | 
| @@ -591,7 +591,7 @@ describe 'the new function' do | |
| 591 591 | 
             
              end
         | 
| 592 592 |  | 
| 593 593 | 
             
              context 'when invoked on Tuple' do
         | 
| 594 | 
            -
                { 'abc'         => 'Notify[Array[String], [a, b, c]]',
         | 
| 594 | 
            +
                { 'abc'         => 'Notify[Array[String[1, 1]], [a, b, c]]',
         | 
| 595 595 | 
             
                  3             => 'Notify[Array[Integer], [0, 1, 2]]',
         | 
| 596 596 | 
             
                }.each do |input, result|
         | 
| 597 597 | 
             
                  it "produces #{result} when given the value #{input.inspect} and wrap is not given" do
         | 
| @@ -617,7 +617,7 @@ describe 'the new function' do | |
| 617 617 | 
             
                  {'a'=>true}   => 'Notify[Hash[String, Boolean], {a => true}]',
         | 
| 618 618 | 
             
                  [1,2,3,4]     => 'Notify[Hash[Integer, Integer], {1 => 2, 3 => 4}]',
         | 
| 619 619 | 
             
                  [[1,2],[3,4]] => 'Notify[Hash[Integer, Integer], {1 => 2, 3 => 4}]',
         | 
| 620 | 
            -
                  'abcd'        => 'Notify[Hash[String, String], {a => b, c => d}]',
         | 
| 620 | 
            +
                  'abcd'        => 'Notify[Hash[String[1, 1], String[1, 1]], {a => b, c => d}]',
         | 
| 621 621 | 
             
                  4             => 'Notify[Hash[Integer, Integer], {0 => 1, 2 => 3}]',
         | 
| 622 622 |  | 
| 623 623 | 
             
                }.each do |input, result|
         | 
| @@ -376,7 +376,7 @@ describe Puppet::Graph::RbTreeMap do | |
| 376 376 | 
             
              describe "#each" do
         | 
| 377 377 | 
             
                it "should yield each pair in the tree in order if a block is provided" do
         | 
| 378 378 | 
             
                  # Insert in reverse to demonstrate they aren't being yielded in insertion order
         | 
| 379 | 
            -
                  (1..5).to_a. | 
| 379 | 
            +
                  (1..5).to_a.reverse_each {|i| subject[i] = i.to_s}
         | 
| 380 380 |  | 
| 381 381 | 
             
                  nodes = []
         | 
| 382 382 | 
             
                  subject.each do |key,value|
         | 
| @@ -430,7 +430,7 @@ describe Puppet::Graph::SimpleGraph do | |
| 430 430 | 
             
                end
         | 
| 431 431 |  | 
| 432 432 | 
             
                it "should write a dot file based on the passed name" do
         | 
| 433 | 
            -
                  File.expects(:open).with(@file, "w").yields(stub("file", :puts => nil))
         | 
| 433 | 
            +
                  File.expects(:open).with(@file, "w:UTF-8").yields(stub("file", :puts => nil))
         | 
| 434 434 | 
             
                  @graph.expects(:to_dot).with("name" => @name.to_s.capitalize)
         | 
| 435 435 | 
             
                  Puppet[:graph] = true
         | 
| 436 436 | 
             
                  @graph.write_graph(@name)
         | 
| @@ -74,14 +74,14 @@ describe Hiera::Scope do | |
| 74 74 | 
             
                end
         | 
| 75 75 | 
             
              end
         | 
| 76 76 |  | 
| 77 | 
            -
              describe "# | 
| 77 | 
            +
              describe "#exist?" do
         | 
| 78 78 | 
             
                it "should correctly report missing data" do
         | 
| 79 79 | 
             
                  real["nil_value"] = nil
         | 
| 80 80 | 
             
                  real["blank_value"] = ""
         | 
| 81 81 |  | 
| 82 | 
            -
                  expect(scope. | 
| 83 | 
            -
                  expect(scope. | 
| 84 | 
            -
                  expect(scope. | 
| 82 | 
            +
                  expect(scope.exist?("nil_value")).to eq(true)
         | 
| 83 | 
            +
                  expect(scope.exist?("blank_value")).to eq(true)
         | 
| 84 | 
            +
                  expect(scope.exist?("missing_value")).to eq(false)
         | 
| 85 85 | 
             
                end
         | 
| 86 86 |  | 
| 87 87 | 
             
                it "should always return true for calling_class and calling_module" do
         | 
| @@ -140,6 +140,15 @@ describe Puppet::Indirector::Request do | |
| 140 140 | 
             
                    expect(Puppet::Indirector::Request.new(:ind, :method, "http://host/stuff with spaces", nil).key).to eq("stuff with spaces")
         | 
| 141 141 | 
             
                  end
         | 
| 142 142 |  | 
| 143 | 
            +
                  it "should set the request key to the unescaped path from the URI, in UTF-8 encoding" do
         | 
| 144 | 
            +
                    path = "\u4e07"
         | 
| 145 | 
            +
                    uri = "http://host/#{path}"
         | 
| 146 | 
            +
                    request = Puppet::Indirector::Request.new(:ind, :method, uri, nil)
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                    expect(request.key).to eq(path)
         | 
| 149 | 
            +
                    expect(request.key.encoding).to eq(Encoding::UTF_8)
         | 
| 150 | 
            +
                  end
         | 
| 151 | 
            +
             | 
| 143 152 | 
             
                  it "should set the :uri attribute to the full URI" do
         | 
| 144 153 | 
             
                    expect(Puppet::Indirector::Request.new(:ind, :method, "http:///a/path/stu ff", nil).uri).to eq('http:///a/path/stu ff')
         | 
| 145 154 | 
             
                  end
         | 
    
        data/spec/unit/interface_spec.rb
    CHANGED
    
    | @@ -132,6 +132,33 @@ describe Puppet::Interface do | |
| 132 132 | 
             
                end
         | 
| 133 133 | 
             
              end
         | 
| 134 134 |  | 
| 135 | 
            +
              context "when deprecating a face" do
         | 
| 136 | 
            +
                let(:face) { subject.new(:foo, '0.0.1') }
         | 
| 137 | 
            +
                describe "#deprecate" do
         | 
| 138 | 
            +
                  it "should respond to #deprecate" do
         | 
| 139 | 
            +
                    expect(subject.new(:foo, '0.0.1')).to respond_to(:deprecate)
         | 
| 140 | 
            +
                  end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                  it "should set the deprecated value to true" do
         | 
| 143 | 
            +
                    expect(face.deprecated?).to be_falsey
         | 
| 144 | 
            +
                    face.deprecate
         | 
| 145 | 
            +
                    expect(face.deprecated?).to be_truthy
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
                end
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                describe "#deprecated?" do
         | 
| 150 | 
            +
                  it "should return a nil (falsey) value by default" do
         | 
| 151 | 
            +
                    expect(face.deprecated?).to be_falsey
         | 
| 152 | 
            +
                  end
         | 
| 153 | 
            +
             | 
| 154 | 
            +
                  it "should return true if the face has been deprecated" do
         | 
| 155 | 
            +
                    expect(face.deprecated?).to be_falsey
         | 
| 156 | 
            +
                    face.deprecate
         | 
| 157 | 
            +
                    expect(face.deprecated?).to be_truthy
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
                end
         | 
| 160 | 
            +
              end
         | 
| 161 | 
            +
             | 
| 135 162 | 
             
              describe "with face-level display_global_options" do
         | 
| 136 163 | 
             
                it "should not return any action level display_global_options" do
         | 
| 137 164 | 
             
                  face = subject.new(:with_display_global_options, '0.0.1') do
         | 
    
        data/spec/unit/man_spec.rb
    CHANGED
    
    | @@ -23,7 +23,7 @@ describe Puppet::Face[:man, :current] do | |
| 23 23 | 
             
                  app = klass.new(Puppet::Util::CommandLine.new('puppet', ['man', name]))
         | 
| 24 24 |  | 
| 25 25 | 
             
                  expect do
         | 
| 26 | 
            -
                    IO.stubs(:popen).with(pager,  | 
| 26 | 
            +
                    IO.stubs(:popen).with(pager, 'w:UTF-8').yields($stdout)
         | 
| 27 27 |  | 
| 28 28 | 
             
                    expect { app.run }.to exit_with(0)
         | 
| 29 29 | 
             
                  end.to_not have_printed(/undefined method `gsub'/)
         | 
    
        data/spec/unit/module_spec.rb
    CHANGED
    
    | @@ -730,7 +730,7 @@ describe Puppet::Module do | |
| 730 730 | 
             
                it "should properly parse utf-8 contents" do
         | 
| 731 731 | 
             
                  rune_utf8 = "\u16A0\u16C7\u16BB" # ᚠᛇᚻ
         | 
| 732 732 | 
             
                  metadata_json = tmpfile('metadata.json')
         | 
| 733 | 
            -
                  File.open(metadata_json, 'w') do |file|
         | 
| 733 | 
            +
                  File.open(metadata_json, 'w:UTF-8') do |file|
         | 
| 734 734 | 
             
                    file.puts <<-EOF
         | 
| 735 735 | 
             
              {
         | 
| 736 736 | 
             
                "license" : "GPL2",
         | 
| @@ -358,6 +358,13 @@ symlinkfile | |
| 358 358 | 
             
              end
         | 
| 359 359 |  | 
| 360 360 | 
             
              context 'with metadata.json' do
         | 
| 361 | 
            +
                # different UTF-8 widths
         | 
| 362 | 
            +
                # 1-byte A
         | 
| 363 | 
            +
                # 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
         | 
| 364 | 
            +
                # 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
         | 
| 365 | 
            +
                # 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
         | 
| 366 | 
            +
                MIXED_UTF8 = "A\u06FF\u16A0\u{2070E}" # Aۿᚠ𠜎
         | 
| 367 | 
            +
             | 
| 361 368 | 
             
                before :each do
         | 
| 362 369 | 
             
                  File.open(File.join(path, 'metadata.json'), 'w') do |f|
         | 
| 363 370 | 
             
                    f.puts({
         | 
| @@ -366,7 +373,7 @@ symlinkfile | |
| 366 373 | 
             
                      "source" => "https://github.com/testing/#{module_name}",
         | 
| 367 374 | 
             
                      "author" => "testing",
         | 
| 368 375 | 
             
                      "license" => "Apache License Version 2.0",
         | 
| 369 | 
            -
                      "summary" => " | 
| 376 | 
            +
                      "summary" => "#{MIXED_UTF8}",
         | 
| 370 377 | 
             
                      "description" => "This module can be used for basic testing",
         | 
| 371 378 | 
             
                      "project_page" => "https://github.com/testing/#{module_name}"
         | 
| 372 379 | 
             
                    }.to_json)
         | 
| @@ -393,6 +400,14 @@ symlinkfile | |
| 393 400 | 
             
                    builder.run
         | 
| 394 401 | 
             
                  }.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i
         | 
| 395 402 | 
             
                end
         | 
| 403 | 
            +
             | 
| 404 | 
            +
                it "writes UTF-8 metdata correctly" do
         | 
| 405 | 
            +
                  # file is written initially in before block, then by builders write_json method
         | 
| 406 | 
            +
                  builder.run
         | 
| 407 | 
            +
                  metadata_path = File.join(path, 'metadata.json')
         | 
| 408 | 
            +
                  summary = JSON.parse(Puppet::FileSystem.read(metadata_path, :encoding => Encoding::UTF_8))["summary"]
         | 
| 409 | 
            +
                  expect(summary).to eq(MIXED_UTF8)
         | 
| 410 | 
            +
                end
         | 
| 396 411 | 
             
              end
         | 
| 397 412 |  | 
| 398 413 | 
             
              context 'with metadata.json containing checksums' do
         | 
| @@ -29,7 +29,7 @@ describe Puppet::ModuleTool::Applications::Installer do | |
| 29 29 | 
             
              end
         | 
| 30 30 |  | 
| 31 31 | 
             
              before do
         | 
| 32 | 
            -
                 | 
| 32 | 
            +
                SemanticPuppet::Dependency.clear_sources
         | 
| 33 33 | 
             
                installer = Puppet::ModuleTool::Applications::Installer.any_instance
         | 
| 34 34 | 
             
                installer.stubs(:module_repository).returns(remote_source)
         | 
| 35 35 | 
             
              end
         | 
| @@ -27,7 +27,7 @@ describe Puppet::ModuleTool::Applications::Upgrader do | |
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              before do
         | 
| 30 | 
            -
                 | 
| 30 | 
            +
                SemanticPuppet::Dependency.clear_sources
         | 
| 31 31 | 
             
                installer = Puppet::ModuleTool::Applications::Upgrader.any_instance
         | 
| 32 32 | 
             
                installer.stubs(:module_repository).returns(remote_source)
         | 
| 33 33 | 
             
              end
         | 
| @@ -19,21 +19,21 @@ describe Puppet::ModuleTool::InstalledModules do | |
| 19 19 | 
             
              it 'works when given a semantic version' do
         | 
| 20 20 | 
             
                mod = PuppetSpec::Modules.create('goodsemver', @modpath, :metadata => {:version => '1.2.3'})
         | 
| 21 21 | 
             
                installed = described_class.new(@env)
         | 
| 22 | 
            -
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq( | 
| 22 | 
            +
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('1.2.3'))
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
              it 'defaults when not given a semantic version' do
         | 
| 26 26 | 
             
                mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => 'banana'})
         | 
| 27 27 | 
             
                Puppet.expects(:warning).with(regexp_matches(/Semantic Version/))
         | 
| 28 28 | 
             
                installed = described_class.new(@env)
         | 
| 29 | 
            -
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq( | 
| 29 | 
            +
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              it 'defaults when not given a full semantic version' do
         | 
| 33 33 | 
             
                mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => '1.2'})
         | 
| 34 34 | 
             
                Puppet.expects(:warning).with(regexp_matches(/Semantic Version/))
         | 
| 35 35 | 
             
                installed = described_class.new(@env)
         | 
| 36 | 
            -
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq( | 
| 36 | 
            +
                expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
         | 
| 37 37 | 
             
              end
         | 
| 38 38 |  | 
| 39 39 | 
             
              it 'still works if there is an invalid version in one of the modules' do
         | 
| @@ -42,8 +42,8 @@ describe Puppet::ModuleTool::InstalledModules do | |
| 42 42 | 
             
                mod3 = PuppetSpec::Modules.create('notquitesemver', @modpath, :metadata => {:version => '1.2'})
         | 
| 43 43 | 
             
                Puppet.expects(:warning).with(regexp_matches(/Semantic Version/)).twice
         | 
| 44 44 | 
             
                installed = described_class.new(@env)
         | 
| 45 | 
            -
                expect(installed.modules["puppetlabs-#{mod1.name}"].version).to eq( | 
| 46 | 
            -
                expect(installed.modules["puppetlabs-#{mod2.name}"].version).to eq( | 
| 47 | 
            -
                expect(installed.modules["puppetlabs-#{mod3.name}"].version).to eq( | 
| 45 | 
            +
                expect(installed.modules["puppetlabs-#{mod1.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
         | 
| 46 | 
            +
                expect(installed.modules["puppetlabs-#{mod2.name}"].version).to eq(SemanticPuppet::Version.parse('1.2.3'))
         | 
| 47 | 
            +
                expect(installed.modules["puppetlabs-#{mod3.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
         | 
| 48 48 | 
             
              end
         | 
| 49 49 | 
             
            end
         | 
| @@ -288,21 +288,21 @@ TREE | |
| 288 288 | 
             
                it 'parses a dependency without a version range expression' do
         | 
| 289 289 | 
             
                  name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar')
         | 
| 290 290 | 
             
                  expect(name).to eql('foo-bar')
         | 
| 291 | 
            -
                  expect(range).to eql( | 
| 291 | 
            +
                  expect(range).to eql(SemanticPuppet::VersionRange.parse('>= 0.0.0'))
         | 
| 292 292 | 
             
                  expect(expr).to eql('>= 0.0.0')
         | 
| 293 293 | 
             
                end
         | 
| 294 294 |  | 
| 295 295 | 
             
                it 'parses a dependency with a version range expression' do
         | 
| 296 296 | 
             
                  name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar', 'version_requirement' => '1.2.x')
         | 
| 297 297 | 
             
                  expect(name).to eql('foo-bar')
         | 
| 298 | 
            -
                  expect(range).to eql( | 
| 298 | 
            +
                  expect(range).to eql(SemanticPuppet::VersionRange.parse('1.2.x'))
         | 
| 299 299 | 
             
                  expect(expr).to eql('1.2.x')
         | 
| 300 300 | 
             
                end
         | 
| 301 301 |  | 
| 302 302 | 
             
                it 'does not raise an error on invalid version range expressions' do
         | 
| 303 303 | 
             
                  name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar', 'version_requirement' => 'nope')
         | 
| 304 304 | 
             
                  expect(name).to eql('foo-bar')
         | 
| 305 | 
            -
                  expect(range).to eql( | 
| 305 | 
            +
                  expect(range).to eql(SemanticPuppet::VersionRange::EMPTY_RANGE)
         | 
| 306 306 | 
             
                  expect(expr).to eql('nope')
         | 
| 307 307 | 
             
                end
         | 
| 308 308 | 
             
              end
         | 
| @@ -296,4 +296,14 @@ describe Puppet::Network::HTTP::Connection do | |
| 296 296 | 
             
                  expect(request['authorization']).to match(/^Basic/)
         | 
| 297 297 | 
             
                end.returns(httpok)
         | 
| 298 298 | 
             
              end
         | 
| 299 | 
            +
             | 
| 300 | 
            +
              it "sets HTTP User-Agent header" do
         | 
| 301 | 
            +
                puppet_ua = "Puppet/#{Puppet.version} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})"
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                Net::HTTP.any_instance.expects(:request).with do |request|
         | 
| 304 | 
            +
                  expect(request['User-Agent']).to eq(puppet_ua)
         | 
| 305 | 
            +
                end.returns(httpok)
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                subject.get('/path')
         | 
| 308 | 
            +
              end
         | 
| 299 309 | 
             
            end
         | 
| @@ -136,7 +136,7 @@ describe Puppet::Network::HTTP::WEBrick do | |
| 136 136 | 
             
                  log = make_absolute("/master/log")
         | 
| 137 137 | 
             
                  Puppet[:masterhttplog] = log
         | 
| 138 138 |  | 
| 139 | 
            -
                  File.expects(:open).with(log, "a | 
| 139 | 
            +
                  File.expects(:open).with(log, "a+:UTF-8").returns @filehandle
         | 
| 140 140 |  | 
| 141 141 | 
             
                  server.setup_logger
         | 
| 142 142 | 
             
                end
         | 
| @@ -492,13 +492,13 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl/AccessOperator' do | |
| 492 492 | 
             
                it 'produces a NotUndef instance with String type when given a literal String' do
         | 
| 493 493 | 
             
                  type_expr = fqr('NotUndef')[literal('hey')]
         | 
| 494 494 | 
             
                  tf = Puppet::Pops::Types::TypeFactory
         | 
| 495 | 
            -
                  expect(evaluate(type_expr)).to be_the_type(tf.not_undef(tf.string( | 
| 495 | 
            +
                  expect(evaluate(type_expr)).to be_the_type(tf.not_undef(tf.string('hey')))
         | 
| 496 496 | 
             
                end
         | 
| 497 497 |  | 
| 498 498 | 
             
                it 'Produces Optional instance with String type when using a String argument' do
         | 
| 499 499 | 
             
                  type_expr = fqr('Optional')[literal('hey')]
         | 
| 500 500 | 
             
                  tf = Puppet::Pops::Types::TypeFactory
         | 
| 501 | 
            -
                  expect(evaluate(type_expr)).to be_the_type(tf.optional(tf.string( | 
| 501 | 
            +
                  expect(evaluate(type_expr)).to be_the_type(tf.optional(tf.string('hey')))
         | 
| 502 502 | 
             
                end
         | 
| 503 503 |  | 
| 504 504 | 
             
                # Type Type
         | 
| @@ -26,27 +26,27 @@ describe 'when converting to 3.x' do | |
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              it 'does not convert a SemVer instance to string' do
         | 
| 29 | 
            -
                v =  | 
| 29 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 30 30 | 
             
                expect(converter.convert(v, {}, nil)).to equal(v)
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| 33 33 | 
             
              it 'converts the symbol :undef to the undef value' do
         | 
| 34 | 
            -
                v =  | 
| 34 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 35 35 | 
             
                expect(converter.convert(:undef, {}, 'undef value')).to eql('undef value')
         | 
| 36 36 | 
             
              end
         | 
| 37 37 |  | 
| 38 38 | 
             
              it 'converts the nil to the undef value' do
         | 
| 39 | 
            -
                v =  | 
| 39 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 40 40 | 
             
                expect(converter.convert(nil, {}, 'undef value')).to eql('undef value')
         | 
| 41 41 | 
             
              end
         | 
| 42 42 |  | 
| 43 43 | 
             
              it 'does not convert a symbol nested in an array' do
         | 
| 44 | 
            -
                v =  | 
| 44 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 45 45 | 
             
                expect(converter.convert({'foo' => :undef}, {}, 'undef value')).to eql({'foo' => :undef})
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 48 | 
             
              it 'converts nil to :undef when nested in an array' do
         | 
| 49 | 
            -
                v =  | 
| 49 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 50 50 | 
             
                expect(converter.convert({'foo' => nil}, {}, 'undef value')).to eql({'foo' => :undef})
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| @@ -56,12 +56,12 @@ describe 'when converting to 3.x' do | |
| 56 56 | 
             
              end
         | 
| 57 57 |  | 
| 58 58 | 
             
              it 'does not convert a Version instance to string' do
         | 
| 59 | 
            -
                v =  | 
| 59 | 
            +
                v = SemanticPuppet::Version.parse('1.0.0')
         | 
| 60 60 | 
             
                expect(converter.convert(v, {}, nil)).to equal(v)
         | 
| 61 61 | 
             
              end
         | 
| 62 62 |  | 
| 63 63 | 
             
              it 'does not convert a VersionRange instance to string' do
         | 
| 64 | 
            -
                v =  | 
| 64 | 
            +
                v = SemanticPuppet::VersionRange.parse('>=1.0.0')
         | 
| 65 65 | 
             
                expect(converter.convert(v, {}, nil)).to equal(v)
         | 
| 66 66 | 
             
              end
         | 
| 67 67 |  | 
| @@ -95,13 +95,13 @@ describe 'when converting to 3.x' do | |
| 95 95 | 
             
                end
         | 
| 96 96 |  | 
| 97 97 | 
             
                it 'converts a Version instance to string' do
         | 
| 98 | 
            -
                  c = converter.convert( | 
| 98 | 
            +
                  c = converter.convert(SemanticPuppet::Version.parse('1.0.0'), {}, nil)
         | 
| 99 99 | 
             
                  expect(c).to be_a(String)
         | 
| 100 100 | 
             
                  expect(c).to eql('1.0.0')
         | 
| 101 101 | 
             
                end
         | 
| 102 102 |  | 
| 103 103 | 
             
                it 'converts a VersionRange instance to string' do
         | 
| 104 | 
            -
                  c = converter.convert( | 
| 104 | 
            +
                  c = converter.convert(SemanticPuppet::VersionRange.parse('>=1.0.0'), {}, nil)
         | 
| 105 105 | 
             
                  expect(c).to be_a(String)
         | 
| 106 106 | 
             
                  expect(c).to eql('>=1.0.0')
         | 
| 107 107 | 
             
                end
         | 
| @@ -0,0 +1,172 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'puppet_spec/files'
         | 
| 3 | 
            +
            require 'puppet/pops'
         | 
| 4 | 
            +
            require 'puppet/loaders'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe 'Environment loader' do
         | 
| 7 | 
            +
              include PuppetSpec::Files
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              let(:env_name) { 'spec' }
         | 
| 10 | 
            +
              let(:code_dir) { Puppet[:environmentpath] }
         | 
| 11 | 
            +
              let(:env_dir) { File.join(code_dir, env_name) }
         | 
| 12 | 
            +
              let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_code_dir, env_name, 'modules')]) }
         | 
| 13 | 
            +
              let(:populated_code_dir) do
         | 
| 14 | 
            +
                dir_contained_in(code_dir, env_name => env_content)
         | 
| 15 | 
            +
                PuppetSpec::Files.record_tmp(env_dir)
         | 
| 16 | 
            +
                code_dir
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              let(:env_content) {
         | 
| 20 | 
            +
                {
         | 
| 21 | 
            +
                  'lib' => {
         | 
| 22 | 
            +
                    'puppet' => {
         | 
| 23 | 
            +
                      'functions' => {
         | 
| 24 | 
            +
                        'ruby_foo.rb' => <<-RUBY.unindent,
         | 
| 25 | 
            +
                          Puppet::Functions.create_function(:ruby_foo) do
         | 
| 26 | 
            +
                            def ruby_foo()
         | 
| 27 | 
            +
                              'ruby_foo'
         | 
| 28 | 
            +
                            end
         | 
| 29 | 
            +
                          end
         | 
| 30 | 
            +
                          RUBY
         | 
| 31 | 
            +
                        'environment' => {
         | 
| 32 | 
            +
                          'ruby_foo.rb' => <<-RUBY.unindent
         | 
| 33 | 
            +
                            Puppet::Functions.create_function(:'environment::ruby_foo') do
         | 
| 34 | 
            +
                              def ruby_foo()
         | 
| 35 | 
            +
                                'environment::ruby_foo'
         | 
| 36 | 
            +
                              end
         | 
| 37 | 
            +
                            end
         | 
| 38 | 
            +
                            RUBY
         | 
| 39 | 
            +
                        },
         | 
| 40 | 
            +
                        'someother' => {
         | 
| 41 | 
            +
                          'ruby_foo.rb' => <<-RUBY.unindent
         | 
| 42 | 
            +
                            Puppet::Functions.create_function(:'someother::ruby_foo') do
         | 
| 43 | 
            +
                              def ruby_foo()
         | 
| 44 | 
            +
                                'someother::ruby_foo'
         | 
| 45 | 
            +
                              end
         | 
| 46 | 
            +
                            end
         | 
| 47 | 
            +
                            RUBY
         | 
| 48 | 
            +
                        },
         | 
| 49 | 
            +
                      }
         | 
| 50 | 
            +
                    }
         | 
| 51 | 
            +
                  },
         | 
| 52 | 
            +
                  'functions' => {
         | 
| 53 | 
            +
                    'puppet_foo.pp' => <<-PUPPET.unindent,
         | 
| 54 | 
            +
                      function puppet_foo() {
         | 
| 55 | 
            +
                        'puppet_foo'
         | 
| 56 | 
            +
                      }
         | 
| 57 | 
            +
                      PUPPET
         | 
| 58 | 
            +
                    'environment' => {
         | 
| 59 | 
            +
                      'puppet_foo.pp' => <<-PUPPET.unindent,
         | 
| 60 | 
            +
                        function environment::puppet_foo() {
         | 
| 61 | 
            +
                          'environment::puppet_foo'
         | 
| 62 | 
            +
                        }
         | 
| 63 | 
            +
                        PUPPET
         | 
| 64 | 
            +
                    },
         | 
| 65 | 
            +
                    'someother' => {
         | 
| 66 | 
            +
                      'puppet_foo.pp' => <<-PUPPET.unindent,
         | 
| 67 | 
            +
                        function somether::puppet_foo() {
         | 
| 68 | 
            +
                          'someother::puppet_foo'
         | 
| 69 | 
            +
                        }
         | 
| 70 | 
            +
                        PUPPET
         | 
| 71 | 
            +
                    }
         | 
| 72 | 
            +
                  },
         | 
| 73 | 
            +
                  'types' => {
         | 
| 74 | 
            +
                    'footype.pp' => <<-PUPPET.unindent,
         | 
| 75 | 
            +
                      type FooType = Enum['foo', 'bar', 'baz']
         | 
| 76 | 
            +
                      PUPPET
         | 
| 77 | 
            +
                    'environment' => {
         | 
| 78 | 
            +
                      'footype.pp' => <<-PUPPET.unindent,
         | 
| 79 | 
            +
                        type Environment::FooType = Integer[0,9]
         | 
| 80 | 
            +
                        PUPPET
         | 
| 81 | 
            +
                    },
         | 
| 82 | 
            +
                    'someother' => {
         | 
| 83 | 
            +
                      'footype.pp' => <<-PUPPET.unindent,
         | 
| 84 | 
            +
                        type SomeOther::FooType = Float[0.0,9.0]
         | 
| 85 | 
            +
                        PUPPET
         | 
| 86 | 
            +
                    }
         | 
| 87 | 
            +
                  }
         | 
| 88 | 
            +
                }
         | 
| 89 | 
            +
              }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
              before(:each) do
         | 
| 92 | 
            +
                Puppet.push_context(:loaders => Puppet::Pops::Loaders.new(env))
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              after(:each) do
         | 
| 96 | 
            +
                Puppet.pop_context
         | 
| 97 | 
            +
              end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
              def load_or_nil(type, name)
         | 
| 100 | 
            +
                found = Puppet::Pops::Loaders.find_loader(nil).load_typed(Puppet::Pops::Loader::TypedName.new(type, name))
         | 
| 101 | 
            +
                found.nil? ? nil : found.value
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              context 'loading a Ruby function' do
         | 
| 105 | 
            +
                it 'loads from global name space' do
         | 
| 106 | 
            +
                  function = load_or_nil(:function, 'ruby_foo')
         | 
| 107 | 
            +
                  expect(function).not_to be_nil
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                  expect(function.class.name).to eq('ruby_foo')
         | 
| 110 | 
            +
                  expect(function).to be_a(Puppet::Functions::Function)
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                it 'loads from environment name space' do
         | 
| 114 | 
            +
                  function = load_or_nil(:function, 'environment::ruby_foo')
         | 
| 115 | 
            +
                  expect(function).not_to be_nil
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                  expect(function.class.name).to eq('environment::ruby_foo')
         | 
| 118 | 
            +
                  expect(function).to be_a(Puppet::Functions::Function)
         | 
| 119 | 
            +
                end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                it 'fails to load from namespaces other than global or environment' do
         | 
| 122 | 
            +
                  function = load_or_nil(:function, 'someother::ruby_foo')
         | 
| 123 | 
            +
                  expect(function).to be_nil
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
              end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
              context 'loading a Puppet function' do
         | 
| 128 | 
            +
                it 'loads from global name space' do
         | 
| 129 | 
            +
                  function = load_or_nil(:function, 'puppet_foo')
         | 
| 130 | 
            +
                  expect(function).not_to be_nil
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  expect(function.class.name).to eq('puppet_foo')
         | 
| 133 | 
            +
                  expect(function).to be_a(Puppet::Functions::PuppetFunction)
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                it 'loads from environment name space' do
         | 
| 137 | 
            +
                  function = load_or_nil(:function, 'environment::puppet_foo')
         | 
| 138 | 
            +
                  expect(function).not_to be_nil
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                  expect(function.class.name).to eq('environment::puppet_foo')
         | 
| 141 | 
            +
                  expect(function).to be_a(Puppet::Functions::PuppetFunction)
         | 
| 142 | 
            +
                end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                it 'fails to load from namespaces other than global or environment' do
         | 
| 145 | 
            +
                  function = load_or_nil(:function, 'someother::puppet_foo')
         | 
| 146 | 
            +
                  expect(function).to be_nil
         | 
| 147 | 
            +
                end
         | 
| 148 | 
            +
              end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
              context 'loading a Puppet type' do
         | 
| 151 | 
            +
                it 'loads from global name space' do
         | 
| 152 | 
            +
                  type = load_or_nil(:type, 'footype')
         | 
| 153 | 
            +
                  expect(type).not_to be_nil
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                  expect(type).to be_a(Puppet::Pops::Types::PTypeAliasType)
         | 
| 156 | 
            +
                  expect(type.name).to eq('FooType')
         | 
| 157 | 
            +
                end
         | 
| 158 | 
            +
             | 
| 159 | 
            +
                it 'loads from environment name space' do
         | 
| 160 | 
            +
                  type = load_or_nil(:type, 'environment::footype')
         | 
| 161 | 
            +
                  expect(type).not_to be_nil
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                  expect(type).to be_a(Puppet::Pops::Types::PTypeAliasType)
         | 
| 164 | 
            +
                  expect(type.name).to eq('Environment::FooType')
         | 
| 165 | 
            +
                end
         | 
| 166 | 
            +
             | 
| 167 | 
            +
                it 'fails to load from namespaces other than global or environment' do
         | 
| 168 | 
            +
                  type = load_or_nil(:type, 'someother::footype')
         | 
| 169 | 
            +
                  expect(type).to be_nil
         | 
| 170 | 
            +
                end
         | 
| 171 | 
            +
              end
         | 
| 172 | 
            +
            end
         |