puppet 4.8.2-universal-darwin → 4.9.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- 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/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/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/data_providers.rb +6 -3
- 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/face.erb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- 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/windows.rb +8 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/forge.rb +6 -6
- 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/face_collection.rb +1 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/module.rb +14 -2
- 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/module_tool.rb +4 -4
- 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/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/plugins/data_providers.rb +2 -0
- 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/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/lookup.rb +4 -3
- 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/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/pops.rb +6 -9
- 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/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/resource.rb +2 -3
- 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/settings.rb +1 -1
- 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/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/util.rb +1 -0
- 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/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/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- 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/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +52 -0
- 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 -2595
- 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/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- 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
@@ -1,125 +1,335 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'puppet_spec/
|
2
|
+
require 'puppet_spec/compiler'
|
3
3
|
require 'puppet/pops'
|
4
|
-
require 'puppet/loaders'
|
5
4
|
|
6
5
|
describe 'when calling' do
|
7
|
-
include PuppetSpec::
|
6
|
+
include PuppetSpec::Compiler
|
7
|
+
include PuppetSpec::Files
|
8
8
|
|
9
|
-
let(:
|
10
|
-
let(:
|
11
|
-
let(:
|
9
|
+
let(:global_dir) { tmpdir('global') }
|
10
|
+
let(:env_config) { {} }
|
11
|
+
let(:global_files) do
|
12
|
+
{
|
13
|
+
'hiera.yaml' => <<-YAML.unindent,
|
14
|
+
---
|
15
|
+
:backends:
|
16
|
+
- yaml
|
17
|
+
- custom
|
18
|
+
:yaml:
|
19
|
+
:datadir: #{global_dir}/hieradata
|
20
|
+
:hierarchy:
|
21
|
+
- first
|
22
|
+
- second
|
23
|
+
YAML
|
24
|
+
'ruby_stuff' => {
|
25
|
+
'hiera' => {
|
26
|
+
'backend' => {
|
27
|
+
'custom_backend.rb' => <<-RUBY.unindent
|
28
|
+
class Hiera::Backend::Custom_backend
|
29
|
+
def initialize(cache = nil)
|
30
|
+
Hiera.debug('Custom_backend starting')
|
31
|
+
end
|
32
|
+
|
33
|
+
def lookup(key, scope, order_override, resolution_type, context)
|
34
|
+
case key
|
35
|
+
when 'datasources'
|
36
|
+
Hiera::Backend.datasources(scope, order_override) { |source| source }
|
37
|
+
else
|
38
|
+
throw :no_such_key
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
RUBY
|
43
|
+
}
|
44
|
+
}
|
45
|
+
},
|
46
|
+
'hieradata' => {
|
47
|
+
'first.yaml' => <<-YAML.unindent,
|
48
|
+
---
|
49
|
+
a: first a
|
50
|
+
class_name: "-- %{calling_class} --"
|
51
|
+
class_path: "-- %{calling_class_path} --"
|
52
|
+
module: "-- %{calling_module} --"
|
53
|
+
mod_name: "-- %{module_name} --"
|
54
|
+
database_user:
|
55
|
+
name: postgres
|
56
|
+
uid: 500
|
57
|
+
gid: 500
|
58
|
+
b:
|
59
|
+
b1: first b1
|
60
|
+
b2: first b2
|
61
|
+
fbb:
|
62
|
+
- mod::foo
|
63
|
+
- mod::bar
|
64
|
+
- mod::baz
|
65
|
+
empty_array: []
|
66
|
+
YAML
|
67
|
+
'second.yaml' => <<-YAML.unindent,
|
68
|
+
---
|
69
|
+
a: second a
|
70
|
+
b:
|
71
|
+
b1: second b1
|
72
|
+
b3: second b3
|
73
|
+
YAML
|
74
|
+
'the_override.yaml' => <<-YAML.unindent
|
75
|
+
---
|
76
|
+
key: foo_result
|
77
|
+
YAML
|
78
|
+
},
|
79
|
+
'environments' => {
|
80
|
+
'test' => {
|
81
|
+
'modules' => {
|
82
|
+
'mod' => {
|
83
|
+
'manifests' => {
|
84
|
+
'foo.pp' => <<-PUPPET.unindent,
|
85
|
+
class mod::foo {
|
86
|
+
notice(hiera('class_name'))
|
87
|
+
notice(hiera('class_path'))
|
88
|
+
notice(hiera('module'))
|
89
|
+
notice(hiera('mod_name'))
|
90
|
+
}
|
91
|
+
PUPPET
|
92
|
+
'bar.pp' => <<-PUPPET.unindent,
|
93
|
+
class mod::bar {}
|
94
|
+
PUPPET
|
95
|
+
'baz.pp' => <<-PUPPET.unindent
|
96
|
+
class mod::baz {}
|
97
|
+
PUPPET
|
98
|
+
},
|
99
|
+
'hiera.yaml' => <<-YAML.unindent,
|
100
|
+
---
|
101
|
+
version: 5
|
102
|
+
YAML
|
103
|
+
'data' => {
|
104
|
+
'common.yaml' => <<-YAML.unindent
|
105
|
+
mod::c: mod::c (from module)
|
106
|
+
YAML
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
end
|
12
114
|
|
13
|
-
|
14
|
-
|
115
|
+
let(:logs) { [] }
|
116
|
+
let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
|
117
|
+
let(:env_dir) { File.join(global_dir, 'environments') }
|
118
|
+
let(:env) { Puppet::Node::Environment.create(:test, [File.join(env_dir, 'test', 'modules')]) }
|
119
|
+
let(:environments) { Puppet::Environments::Directories.new(env_dir, []) }
|
120
|
+
let(:node) { Puppet::Node.new('test_hiera', :environment => env) }
|
121
|
+
let(:compiler) { Puppet::Parser::Compiler.new(node) }
|
122
|
+
let(:the_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'hiera') }
|
123
|
+
|
124
|
+
before(:each) do
|
125
|
+
Puppet.settings[:codedir] = global_dir
|
126
|
+
Puppet.settings[:hiera_config] = File.join(global_dir, 'hiera.yaml')
|
127
|
+
end
|
128
|
+
|
129
|
+
around(:each) do |example|
|
130
|
+
# Faking the load path to enable 'require' to load from 'ruby_stuff'. It removes the need for a static fixture
|
131
|
+
# for the custom backend
|
132
|
+
dir_contained_in(global_dir, DeepMerge.deep_merge!(global_files, { 'environments' => { 'test' => env_config } } ))
|
133
|
+
$LOAD_PATH.unshift(File.join(global_dir, 'ruby_stuff'))
|
134
|
+
begin
|
135
|
+
Puppet.override(:environments => environments, :current_environment => env) do
|
136
|
+
example.run
|
137
|
+
end
|
138
|
+
ensure
|
139
|
+
Hiera::Backend.send(:remove_const, :Custom_backend) if Hiera::Backend.const_defined?(:Custom_backend)
|
140
|
+
$LOAD_PATH.shift
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def with_scope(code = 'undef')
|
145
|
+
result = nil
|
146
|
+
Puppet[:code] = 'undef'
|
147
|
+
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
148
|
+
compiler.topscope['environment'] = 'test'
|
149
|
+
compiler.compile do |catalog|
|
150
|
+
result = yield(compiler.topscope)
|
151
|
+
catalog
|
152
|
+
end
|
153
|
+
end
|
154
|
+
result
|
155
|
+
end
|
15
156
|
|
157
|
+
def func(*args, &block)
|
158
|
+
with_scope { |scope| the_func.call(scope, *args, &block) }
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'hiera' do
|
16
162
|
it 'should require a key argument' do
|
17
|
-
expect {
|
163
|
+
expect { func([]) }.to raise_error(ArgumentError)
|
18
164
|
end
|
19
165
|
|
20
166
|
it 'should raise a useful error when nil is returned' do
|
21
|
-
expect {
|
167
|
+
expect { func('badkey') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'badkey'/)
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should use the "first" merge strategy' do
|
171
|
+
expect(func('a')).to eql('first a')
|
22
172
|
end
|
23
173
|
|
24
|
-
it 'should
|
25
|
-
|
26
|
-
expect(hiera.call(scope, 'key')).to eql('foo_result')
|
174
|
+
it 'should not find data in module' do
|
175
|
+
expect(func('mod::c', 'default mod::c')).to eql('default mod::c')
|
27
176
|
end
|
28
177
|
|
29
178
|
it 'should propagate optional override' do
|
30
179
|
ovr = 'the_override'
|
31
|
-
|
32
|
-
|
180
|
+
expect(func('key', nil, ovr)).to eql('foo_result')
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'backend data sources, including optional overrides, are propagated to custom backend' do
|
184
|
+
expect(func('datasources', nil, 'the_override')).to eql(['the_override', 'first', 'second'])
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'a hiera v3 scope is used' do
|
188
|
+
expect(eval_and_collect_notices(<<-PUPPET, node)).to eql(['-- testing --', '-- mod::foo --', '-- mod/foo --', '-- mod --', '-- mod --'])
|
189
|
+
class testing () {
|
190
|
+
notice(hiera('class_name'))
|
191
|
+
}
|
192
|
+
include testing
|
193
|
+
include mod::foo
|
194
|
+
PUPPET
|
33
195
|
end
|
34
196
|
|
35
197
|
it 'should return default value nil when key is not found' do
|
36
|
-
expect(
|
198
|
+
expect(func('foo', nil)).to be_nil
|
37
199
|
end
|
38
200
|
|
39
201
|
it "should return default value '' when key is not found" do
|
40
|
-
expect(
|
202
|
+
expect(func('foo', '')).to eq('')
|
41
203
|
end
|
42
204
|
|
43
205
|
it 'should use default block' do
|
44
|
-
|
45
|
-
expect(hiera.call(scope, 'foo') { |k| "default for key '#{k}'" }).to eql("default for key 'foo'")
|
206
|
+
expect(func('foo') { |k| "default for key '#{k}'" }).to eql("default for key 'foo'")
|
46
207
|
end
|
47
208
|
|
48
209
|
it 'should propagate optional override when combined with default block' do
|
49
|
-
ovr =
|
50
|
-
|
51
|
-
|
210
|
+
ovr = 'the_override'
|
211
|
+
with_scope do |scope|
|
212
|
+
expect(the_func.call(scope, 'key', ovr) { |k| "default for key '#{k}'" }).to eql('foo_result')
|
213
|
+
expect(the_func.call(scope, 'foo.bar', ovr) { |k| "default for key '#{k}'" }).to eql("default for key 'foo.bar'")
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
it 'should log deprecation errors' do
|
218
|
+
func('a')
|
219
|
+
expect(warnings).to include(/The function 'hiera' is deprecated in favor of using 'lookup'. See https:/)
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'with environment with configured data provider' do
|
223
|
+
let(:env_config) {
|
224
|
+
{
|
225
|
+
'hiera.yaml' => <<-YAML.unindent,
|
226
|
+
---
|
227
|
+
version: 5
|
228
|
+
YAML
|
229
|
+
'data' => {
|
230
|
+
'common.yaml' => <<-YAML.unindent
|
231
|
+
---
|
232
|
+
a: a (from environment)
|
233
|
+
e: e (from environment)
|
234
|
+
YAML
|
235
|
+
}
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
239
|
+
it 'should find data globally' do
|
240
|
+
expect(func('a')).to eql('first a')
|
241
|
+
end
|
242
|
+
|
243
|
+
it 'should find data in the environment' do
|
244
|
+
expect(func('e')).to eql('e (from environment)')
|
245
|
+
end
|
246
|
+
|
247
|
+
it 'should find data in module' do
|
248
|
+
expect(func('mod::c')).to eql('mod::c (from module)')
|
249
|
+
end
|
52
250
|
end
|
53
251
|
end
|
54
252
|
|
55
253
|
context 'hiera_array' do
|
56
|
-
|
57
|
-
let(:hiera_array) { loader.load(:function, 'hiera_array') }
|
254
|
+
let(:the_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'hiera_array') }
|
58
255
|
|
59
256
|
it 'should require a key argument' do
|
60
|
-
expect {
|
257
|
+
expect { func([]) }.to raise_error(ArgumentError)
|
61
258
|
end
|
62
259
|
|
63
260
|
it 'should raise a useful error when nil is returned' do
|
64
|
-
expect {
|
261
|
+
expect { func('badkey') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'badkey'/)
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'should log deprecation errors' do
|
265
|
+
func('fbb')
|
266
|
+
expect(warnings).to include(/The function 'hiera_array' is deprecated in favor of using 'lookup'/)
|
65
267
|
end
|
66
268
|
|
67
269
|
it 'should use the array resolution_type' do
|
68
|
-
|
69
|
-
expect(hiera_array.call(scope, 'key', {'key' => 'foo_result'})).to eql(%w[foo bar baz])
|
270
|
+
expect(func('fbb', {'fbb' => 'foo_result'})).to eql(%w[mod::foo mod::bar mod::baz])
|
70
271
|
end
|
71
272
|
|
72
273
|
it 'should use default block' do
|
73
|
-
expect(
|
274
|
+
expect(func('foo') { |k| ['key', k] }).to eql(%w[key foo])
|
74
275
|
end
|
75
276
|
end
|
76
277
|
|
77
278
|
context 'hiera_hash' do
|
78
|
-
let(:
|
279
|
+
let(:the_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'hiera_hash') }
|
79
280
|
|
80
281
|
it 'should require a key argument' do
|
81
|
-
expect {
|
282
|
+
expect { func([]) }.to raise_error(ArgumentError)
|
82
283
|
end
|
83
284
|
|
84
285
|
it 'should raise a useful error when nil is returned' do
|
85
|
-
expect {
|
286
|
+
expect { func('badkey') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'badkey'/)
|
86
287
|
end
|
87
288
|
|
88
289
|
it 'should use the hash resolution_type' do
|
89
|
-
|
90
|
-
|
290
|
+
expect(func('b', {'b' => 'foo_result'})).to eql({ 'b1' => 'first b1', 'b2' => 'first b2', 'b3' => 'second b3'})
|
291
|
+
end
|
292
|
+
|
293
|
+
it 'should lookup and return a hash' do
|
294
|
+
expect(func('database_user')).to eql({ 'name' => 'postgres', 'uid' => 500, 'gid' => 500})
|
295
|
+
end
|
296
|
+
|
297
|
+
it 'should log deprecation errors' do
|
298
|
+
func('b')
|
299
|
+
expect(warnings).to include(/The function 'hiera_hash' is deprecated in favor of using 'lookup'. See https:/)
|
91
300
|
end
|
92
301
|
|
93
302
|
it 'should use default block' do
|
94
|
-
expect(
|
303
|
+
expect(func('foo') { |k| {'key' => k} }).to eql({'key' => 'foo'})
|
95
304
|
end
|
96
305
|
end
|
97
306
|
|
98
307
|
context 'hiera_include' do
|
99
|
-
let(:
|
308
|
+
let(:the_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'hiera_include') }
|
100
309
|
|
101
310
|
it 'should require a key argument' do
|
102
|
-
expect {
|
311
|
+
expect { func([]) }.to raise_error(ArgumentError)
|
103
312
|
end
|
104
313
|
|
105
314
|
it 'should raise a useful error when nil is returned' do
|
106
|
-
expect {
|
315
|
+
expect { func('badkey') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'badkey'/)
|
107
316
|
end
|
108
317
|
|
109
|
-
it 'should use the array resolution_type' do
|
110
|
-
|
111
|
-
|
112
|
-
|
318
|
+
it 'should use the array resolution_type to include classes' do
|
319
|
+
expect(func('fbb').map { |c| c.class_name }).to eql(%w[mod::foo mod::bar mod::baz])
|
320
|
+
end
|
321
|
+
|
322
|
+
it 'should log deprecation errors' do
|
323
|
+
func('fbb')
|
324
|
+
expect(warnings).to include(/The function 'hiera_include' is deprecated in favor of using 'lookup'. See https:/)
|
113
325
|
end
|
114
326
|
|
115
327
|
it 'should not raise an error if the resulting hiera lookup returns an empty array' do
|
116
|
-
|
117
|
-
expect { hiera_include.call(scope, 'key') }.to_not raise_error
|
328
|
+
expect { func('empty_array') }.to_not raise_error
|
118
329
|
end
|
119
330
|
|
120
|
-
it 'should use default block' do
|
121
|
-
|
122
|
-
hiera_include.call(scope, 'foo') { |k| ['key', k] }
|
331
|
+
it 'should use default block array to include classes' do
|
332
|
+
expect(func('foo') { |k| ['mod::bar', "mod::#{k}"] }.map { |c| c.class_name }).to eql(%w[mod::bar mod::foo])
|
123
333
|
end
|
124
334
|
end
|
125
335
|
end
|