puppet 4.5.3-x64-mingw32 → 4.6.1-x64-mingw32
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 +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +4 -3
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +91 -48
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -34,7 +34,6 @@ class EvaluatorImpl
|
|
34
34
|
include Runtime3Support
|
35
35
|
include ExternalSyntaxSupport
|
36
36
|
|
37
|
-
EMPTY_STRING = ''.freeze
|
38
37
|
COMMA_SEPARATOR = ', '.freeze
|
39
38
|
|
40
39
|
# Reference to Issues name space makes it easier to refer to issues
|
@@ -43,20 +42,26 @@ class EvaluatorImpl
|
|
43
42
|
Issues = Issues
|
44
43
|
|
45
44
|
def initialize
|
45
|
+
@@initialized ||= static_initialize
|
46
|
+
|
47
|
+
# Use null migration checker unless given in context
|
48
|
+
@migration_checker = Puppet.lookup(:migration_checker) { Migration::MigrationChecker.singleton }
|
49
|
+
end
|
50
|
+
|
51
|
+
# @api private
|
52
|
+
def static_initialize
|
46
53
|
@@eval_visitor ||= Visitor.new(self, "eval", 1, 1)
|
47
54
|
@@lvalue_visitor ||= Visitor.new(self, "lvalue", 1, 1)
|
48
55
|
@@assign_visitor ||= Visitor.new(self, "assign", 3, 3)
|
49
56
|
@@string_visitor ||= Visitor.new(self, "string", 1, 1)
|
50
57
|
|
51
|
-
@@type_calculator ||= Types::TypeCalculator.
|
52
|
-
@@type_parser ||= Types::TypeParser.new()
|
53
|
-
|
54
|
-
@@compare_operator ||= CompareOperator.new()
|
55
|
-
@@relationship_operator ||= RelationshipOperator.new()
|
58
|
+
@@type_calculator ||= Types::TypeCalculator.singleton
|
56
59
|
|
57
|
-
|
58
|
-
|
60
|
+
@@compare_operator ||= CompareOperator.new
|
61
|
+
@@relationship_operator ||= RelationshipOperator.new
|
62
|
+
true
|
59
63
|
end
|
64
|
+
private :static_initialize
|
60
65
|
|
61
66
|
# @api private
|
62
67
|
def type_calculator
|
@@ -300,7 +305,7 @@ class EvaluatorImpl
|
|
300
305
|
# A QualifiedReference (i.e. a capitalized qualified name such as Foo, or Foo::Bar) evaluates to a PType
|
301
306
|
#
|
302
307
|
def eval_QualifiedReference(o, scope)
|
303
|
-
type =
|
308
|
+
type = Types::TypeParser.singleton.interpret(o, scope)
|
304
309
|
fail(Issues::UNKNOWN_RESOURCE_TYPE, o, {:type_name => type.type_string }) if type.is_a?(Types::PTypeReferenceType)
|
305
310
|
type
|
306
311
|
end
|
@@ -451,7 +456,7 @@ class EvaluatorImpl
|
|
451
456
|
keys = o.keys || []
|
452
457
|
if left.is_a?(Types::PHostClassType)
|
453
458
|
# Evaluate qualified references without errors no undefined types
|
454
|
-
keys = keys.map {|key| key.is_a?(Model::QualifiedReference) ?
|
459
|
+
keys = keys.map {|key| key.is_a?(Model::QualifiedReference) ? Types::TypeParser.singleton.interpret(key, scope) : evaluate(key, scope) }
|
455
460
|
else
|
456
461
|
keys = keys.map {|key| evaluate(key, scope) }
|
457
462
|
# Resource[File] becomes File
|
@@ -917,7 +922,7 @@ class EvaluatorImpl
|
|
917
922
|
private :call_function_with_block
|
918
923
|
|
919
924
|
def proc_from_lambda(lambda, scope)
|
920
|
-
closure = Closure.new(self, lambda, scope)
|
925
|
+
closure = Closure::Dynamic.new(self, lambda, scope)
|
921
926
|
PuppetProc.new(closure) { |*args| closure.call(*args) }
|
922
927
|
end
|
923
928
|
private :proc_from_lambda
|
@@ -20,7 +20,7 @@ module Puppet::Pops::Evaluator::ExternalSyntaxSupport
|
|
20
20
|
# Call checker and give it the location information from the expression
|
21
21
|
# (as opposed to where the heredoc tag is (somewhere on the line above)).
|
22
22
|
acceptor = Puppet::Pops::Validation::Acceptor.new()
|
23
|
-
source_pos = find_closest_positioned(reference_expr)
|
23
|
+
source_pos = Puppet::Pops::Utils.find_closest_positioned(reference_expr)
|
24
24
|
checker.check(result, syntax, acceptor, source_pos)
|
25
25
|
|
26
26
|
if acceptor.error_count > 0
|
@@ -32,7 +32,6 @@ class RelationshipOperator
|
|
32
32
|
def initialize
|
33
33
|
@type_transformer_visitor = Visitor.new(self, "transform", 1, 1)
|
34
34
|
@type_calculator = Types::TypeCalculator.new()
|
35
|
-
@type_parser = Types::TypeParser.new()
|
36
35
|
|
37
36
|
tf = Types::TypeFactory
|
38
37
|
@catalog_type = tf.variant(tf.catalog_entry, tf.type_type(tf.catalog_entry))
|
@@ -57,7 +56,7 @@ class RelationshipOperator
|
|
57
56
|
# A string must be a type reference in string format
|
58
57
|
# @api private
|
59
58
|
def transform_String(o, scope)
|
60
|
-
assert_catalog_type(
|
59
|
+
assert_catalog_type(Types::TypeParser.singleton.parse(o, scope), scope)
|
61
60
|
end
|
62
61
|
|
63
62
|
# A qualified name is short hand for a class with this name
|
@@ -0,0 +1,119 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Evaluator
|
3
|
+
|
4
|
+
# @api private
|
5
|
+
module Runtime3ResourceSupport
|
6
|
+
CLASS_STRING = 'class'.freeze
|
7
|
+
|
8
|
+
def self.create_resources(file, line, scope, virtual, exported, type_name, resource_titles, evaluated_parameters)
|
9
|
+
|
10
|
+
env = scope.environment
|
11
|
+
# loader = Adapters::LoaderAdapter.loader_for_model_object(o, scope)
|
12
|
+
|
13
|
+
if type_name.is_a?(String) && type_name.casecmp(CLASS_STRING) == 0
|
14
|
+
# Resolve a 'class' and its titles
|
15
|
+
resource_titles = resource_titles.collect do |a_title|
|
16
|
+
hostclass = env.known_resource_types.find_hostclass(a_title)
|
17
|
+
hostclass ? hostclass.name : a_title
|
18
|
+
end
|
19
|
+
# resolved type is just the string CLASS
|
20
|
+
resolved_type = CLASS_STRING
|
21
|
+
else
|
22
|
+
# resolve a resource type - pcore based, ruby impl, user defined, or application
|
23
|
+
resolved_type = find_resource_type(scope, type_name)
|
24
|
+
end
|
25
|
+
|
26
|
+
# TODO: Unknown resource causes creation of Resource to fail with ArgumentError, should give
|
27
|
+
# a proper Issue. Now the result is "Error while evaluating a Resource Statement" with the message
|
28
|
+
# from the raised exception. (It may be good enough).
|
29
|
+
unless resolved_type
|
30
|
+
# TODO: do this the right way
|
31
|
+
raise ArgumentError, "Unknown resource type: '#{type_name}'"
|
32
|
+
end
|
33
|
+
|
34
|
+
# Build a resource for each title - use the resolved *type* as opposed to a reference
|
35
|
+
# as this makes the created resource retain the type instance.
|
36
|
+
#
|
37
|
+
resource_titles.map do |resource_title|
|
38
|
+
resource = Puppet::Parser::Resource.new(
|
39
|
+
resolved_type, resource_title,
|
40
|
+
:parameters => evaluated_parameters,
|
41
|
+
:file => file,
|
42
|
+
:line => line,
|
43
|
+
:exported => exported,
|
44
|
+
:virtual => virtual,
|
45
|
+
# WTF is this? Which source is this? The file? The name of the context ?
|
46
|
+
:source => scope.source,
|
47
|
+
:scope => scope,
|
48
|
+
:strict => true
|
49
|
+
)
|
50
|
+
|
51
|
+
# If this resource type supports inheritance (e.g. 'class') the parent chain must be walked
|
52
|
+
# This impl delegates to the resource type to figure out what is needed.
|
53
|
+
#
|
54
|
+
if resource.resource_type.is_a? Puppet::Resource::Type
|
55
|
+
resource.resource_type.instantiate_resource(scope, resource)
|
56
|
+
end
|
57
|
+
|
58
|
+
scope.compiler.add_resource(scope, resource)
|
59
|
+
|
60
|
+
# Classes are evaluated immediately
|
61
|
+
scope.compiler.evaluate_classes([resource_title], scope, false) if resolved_type == CLASS_STRING
|
62
|
+
|
63
|
+
# Turn the resource into a PType (a reference to a resource type)
|
64
|
+
# weed out nil's
|
65
|
+
resource_to_ptype(resource)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.find_resource_type(scope, type_name)
|
70
|
+
type_name = type_name.to_s.downcase
|
71
|
+
find_builtin_resource_type(scope, type_name) || find_defined_resource_type(scope, type_name)
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.find_resource_type_or_class(scope, name)
|
75
|
+
type_name = type_name.to_s.downcase
|
76
|
+
find_builtin_resource_type(scope, name) || find_defined_resource_type(scope, name) || find_hostclass(scope, name)
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.resource_to_ptype(resource)
|
80
|
+
nil if resource.nil?
|
81
|
+
# inference returns the meta type since the 3x Resource is an alternate way to describe a type
|
82
|
+
Puppet::Pops::Types::TypeCalculator.singleton().infer(resource).type
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.find_main_class(scope)
|
86
|
+
# Find the main class (known as ''), it does not have to be in the catalog
|
87
|
+
scope.environment.known_resource_types.find_hostclass('')
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.find_hostclass(scope, class_name)
|
91
|
+
scope.environment.known_resource_types.find_hostclass(class_name)
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def self.find_builtin_resource_type(scope, type_name)
|
97
|
+
if type_name.include?(':')
|
98
|
+
# Skip the search for built in types as they are always in global namespace
|
99
|
+
# (At least for now).
|
100
|
+
return nil
|
101
|
+
end
|
102
|
+
|
103
|
+
loader = scope.compiler.loaders.private_environment_loader
|
104
|
+
if loaded = loader.load(:resource_type_pp, type_name)
|
105
|
+
return loaded
|
106
|
+
end
|
107
|
+
|
108
|
+
# horrible - should be loaded by a "last loader" in 4.x loaders instead.
|
109
|
+
Puppet::Type.type(type_name)
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.find_defined_resource_type(scope, type_name)
|
113
|
+
krt = scope.environment.known_resource_types
|
114
|
+
krt.find_definition(type_name) || krt.application(type_name)
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -266,10 +266,12 @@ module Runtime3Support
|
|
266
266
|
end
|
267
267
|
|
268
268
|
def call_function(name, args, o, scope, &block)
|
269
|
-
|
269
|
+
file, line = extract_file_line(o)
|
270
|
+
loader = Adapters::LoaderAdapter.loader_for_model_object(o, scope, file)
|
270
271
|
if loader && func = loader.load(:function, name)
|
271
272
|
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
272
|
-
|
273
|
+
# Add stack frame when calling. See Puppet::Pops::PuppetStack
|
274
|
+
return Kernel.eval('func.call(scope, *args, &block)', Kernel.binding, file || '', line)
|
273
275
|
end
|
274
276
|
end
|
275
277
|
# Call via 3x API if function exists there
|
@@ -278,7 +280,7 @@ module Runtime3Support
|
|
278
280
|
# Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
|
279
281
|
# NOTE: Passing an empty string last converts nil/:undef to empty string
|
280
282
|
mapped_args = Runtime3Converter.map_args(args, scope, '')
|
281
|
-
result =
|
283
|
+
result = Puppet::Pops::PuppetStack.stack(file, line, scope, "function_#{name}", [mapped_args], &block)
|
282
284
|
# Prevent non r-value functions from leaking their result (they are not written to care about this)
|
283
285
|
Puppet::Parser::Functions.rvalue?(name) ? result : nil
|
284
286
|
end
|
@@ -298,48 +300,14 @@ module Runtime3Support
|
|
298
300
|
Runtime3Converter.convert(value, scope, undef_value)
|
299
301
|
end
|
300
302
|
|
301
|
-
CLASS_STRING = 'class'.freeze
|
302
|
-
|
303
303
|
def create_resources(o, scope, virtual, exported, type_name, resource_titles, evaluated_parameters)
|
304
|
-
|
305
|
-
# TODO: Unknown resource causes creation of Resource to fail with ArgumentError, should give
|
306
|
-
# a proper Issue. Now the result is "Error while evaluating a Resource Statement" with the message
|
307
|
-
# from the raised exception. (It may be good enough).
|
308
|
-
|
309
|
-
|
310
|
-
# resolve in scope.
|
311
|
-
fully_qualified_type, resource_titles = scope.resolve_type_and_titles(type_name, resource_titles)
|
312
|
-
|
313
304
|
# Not 100% accurate as this is the resource expression location and each title is processed separately
|
314
305
|
# The titles are however the result of evaluation and they have no location at this point (an array
|
315
306
|
# of positions for the source expressions are required for this to work).
|
316
307
|
# TODO: Revisit and possible improve the accuracy.
|
317
308
|
#
|
318
309
|
file, line = extract_file_line(o)
|
319
|
-
|
320
|
-
resource_titles.map do |resource_title|
|
321
|
-
resource = Puppet::Parser::Resource.new(
|
322
|
-
fully_qualified_type, resource_title,
|
323
|
-
:parameters => evaluated_parameters,
|
324
|
-
:file => file,
|
325
|
-
:line => line,
|
326
|
-
:exported => exported,
|
327
|
-
:virtual => virtual,
|
328
|
-
# WTF is this? Which source is this? The file? The name of the context ?
|
329
|
-
:source => scope.source,
|
330
|
-
:scope => scope,
|
331
|
-
:strict => true
|
332
|
-
)
|
333
|
-
|
334
|
-
if resource.resource_type.is_a? Puppet::Resource::Type
|
335
|
-
resource.resource_type.instantiate_resource(scope, resource)
|
336
|
-
end
|
337
|
-
scope.compiler.add_resource(scope, resource)
|
338
|
-
scope.compiler.evaluate_classes([resource_title], scope, false) if fully_qualified_type == CLASS_STRING
|
339
|
-
# Turn the resource into a PType (a reference to a resource type)
|
340
|
-
# weed out nil's
|
341
|
-
resource_to_ptype(resource)
|
342
|
-
end
|
310
|
+
Runtime3ResourceSupport.create_resources(file, line, scope, virtual, exported, type_name, resource_titles, evaluated_parameters)
|
343
311
|
end
|
344
312
|
|
345
313
|
# Defines default parameters for a type with the given name.
|
@@ -465,14 +433,21 @@ module Runtime3Support
|
|
465
433
|
end
|
466
434
|
|
467
435
|
def extract_file_line(o)
|
468
|
-
|
469
|
-
|
470
|
-
|
436
|
+
positioned = find_closest_with_offset(o)
|
437
|
+
unless positioned.nil?
|
438
|
+
locator = Adapters::SourcePosAdapter.find_locator(positioned)
|
439
|
+
return [locator.file, locator.line_for_offset(positioned.offset)] unless locator.nil?
|
440
|
+
end
|
441
|
+
[nil, -1]
|
471
442
|
end
|
472
443
|
|
473
|
-
def
|
474
|
-
|
475
|
-
|
444
|
+
def find_closest_with_offset(o)
|
445
|
+
if o.offset.nil?
|
446
|
+
c = o.eContainer
|
447
|
+
c.nil? ? nil : find_closest_with_offset(c)
|
448
|
+
else
|
449
|
+
o
|
450
|
+
end
|
476
451
|
end
|
477
452
|
|
478
453
|
# Creates a diagnostic producer
|
@@ -505,7 +480,6 @@ module Runtime3Support
|
|
505
480
|
elsif Puppet[:strict] == :off
|
506
481
|
p[Issues::UNKNOWN_VARIABLE] = :ignore
|
507
482
|
else
|
508
|
-
Puppet[:strict_variables]
|
509
483
|
p[Issues::UNKNOWN_VARIABLE] = Puppet[:strict]
|
510
484
|
end
|
511
485
|
|
@@ -57,6 +57,11 @@ class Puppet::Pops::Functions::Function
|
|
57
57
|
internal_call_function(closure_scope, function_name, args, &block)
|
58
58
|
end
|
59
59
|
|
60
|
+
def closure_scope
|
61
|
+
# If closure scope is explicitly set to not nil, if there is a global scope, otherwise an empty hash
|
62
|
+
@closure_scope || Puppet.lookup(:global_scope) { {} }
|
63
|
+
end
|
64
|
+
|
60
65
|
# The dispatcher for the function
|
61
66
|
#
|
62
67
|
# @api private
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -351,7 +351,7 @@ module Issues
|
|
351
351
|
"Illegal variable expression. #{label.a_an_uc(semantic)} did not produce a variable name (String or Numeric)."
|
352
352
|
end
|
353
353
|
|
354
|
-
# Issues when an expression is used
|
354
|
+
# Issues when an expression is used illegally in a query.
|
355
355
|
# query only supports == and !=, and not <, > etc.
|
356
356
|
#
|
357
357
|
ILLEGAL_QUERY_EXPRESSION = hard_issue :ILLEGAL_QUERY_EXPRESSION do
|
@@ -25,12 +25,12 @@ module Puppet::Pops::LabelProvider
|
|
25
25
|
"#{article(text).capitalize} #{text}"
|
26
26
|
end
|
27
27
|
|
28
|
-
# Produces a label for the given text with *
|
28
|
+
# Produces a label for the given text with *definite article* (the).
|
29
29
|
def the o
|
30
30
|
"the #{label(o)}"
|
31
31
|
end
|
32
32
|
|
33
|
-
# Produces a label for the given text with *
|
33
|
+
# Produces a label for the given text with *definite article* (The).
|
34
34
|
def the_uc o
|
35
35
|
"The #{label(o)}"
|
36
36
|
end
|
@@ -1,25 +1,23 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Loader
|
1
3
|
# BaseLoader
|
2
4
|
# ===
|
3
|
-
# An abstract implementation of
|
5
|
+
# An abstract implementation of Loader
|
4
6
|
#
|
5
7
|
# A derived class should implement `find(typed_name)` and set entries, and possible handle "miss caching".
|
6
8
|
#
|
7
9
|
# @api private
|
8
10
|
#
|
9
|
-
class
|
11
|
+
class BaseLoader < Loader
|
10
12
|
|
11
13
|
# The parent loader
|
12
14
|
attr_reader :parent
|
13
15
|
|
14
|
-
# An internal name used for debugging and error message purposes
|
15
|
-
attr_reader :loader_name
|
16
|
-
|
17
16
|
def initialize(parent_loader, loader_name)
|
17
|
+
super(loader_name)
|
18
18
|
@parent = parent_loader # the higher priority loader to consult
|
19
19
|
@named_values = {} # hash name => NamedEntry
|
20
|
-
@last_name = nil # the last name asked for (optimization)
|
21
20
|
@last_result = nil # the value of the last name (optimization)
|
22
|
-
@loader_name = loader_name # the name of the loader (not the name-space it is a loader for)
|
23
21
|
end
|
24
22
|
|
25
23
|
# @api public
|
@@ -30,11 +28,10 @@ class Puppet::Pops::Loader::BaseLoader < Puppet::Pops::Loader::Loader
|
|
30
28
|
# These modules are typically parented by the same
|
31
29
|
# loader as the one initiating the search. It is inefficient to again try to search the same loader for
|
32
30
|
# the same name.
|
33
|
-
if typed_name
|
34
|
-
@last_result
|
35
|
-
else
|
36
|
-
@last_name = typed_name
|
31
|
+
if @last_result.nil? || typed_name != @last_result.typed_name
|
37
32
|
@last_result = internal_load(typed_name)
|
33
|
+
else
|
34
|
+
@last_result
|
38
35
|
end
|
39
36
|
end
|
40
37
|
|
@@ -61,7 +58,6 @@ class Puppet::Pops::Loader::BaseLoader < Puppet::Pops::Loader::Loader
|
|
61
58
|
# @api private
|
62
59
|
#
|
63
60
|
def set_entry(typed_name, value, origin = nil)
|
64
|
-
|
65
61
|
# It is never ok to redefine in the very same loader unless redefining a 'not found'
|
66
62
|
if entry = @named_values[typed_name]
|
67
63
|
fail_redefine(entry) unless entry.value.nil?
|
@@ -76,15 +72,14 @@ class Puppet::Pops::Loader::BaseLoader < Puppet::Pops::Loader::Loader
|
|
76
72
|
end
|
77
73
|
end
|
78
74
|
|
79
|
-
@last_result =
|
80
|
-
@last_name = typed_name
|
75
|
+
@last_result = Loader::NamedEntry.new(typed_name, value, origin)
|
81
76
|
@named_values[typed_name] = @last_result
|
82
77
|
end
|
83
78
|
|
84
79
|
# @api private
|
85
80
|
#
|
86
81
|
def add_entry(type, name, value, origin)
|
87
|
-
set_entry(
|
82
|
+
set_entry(TypedName.new(type, name), value, origin)
|
88
83
|
end
|
89
84
|
|
90
85
|
# Promotes an already created entry (typically from another loader) to this loader
|
@@ -141,3 +136,5 @@ class Puppet::Pops::Loader::BaseLoader < Puppet::Pops::Loader::Loader
|
|
141
136
|
end
|
142
137
|
|
143
138
|
end
|
139
|
+
end
|
140
|
+
end
|