puppet 4.5.3-universal-darwin → 4.6.1-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 +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 +89 -34
- 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
@@ -480,7 +480,6 @@ EOS
|
|
480
480
|
end
|
481
481
|
end
|
482
482
|
|
483
|
-
|
484
483
|
describe "in the environment catalog" do
|
485
484
|
it "does not fail if there is no site expression" do
|
486
485
|
expect {
|
@@ -490,6 +489,18 @@ EOS
|
|
490
489
|
}.to_not raise_error()
|
491
490
|
end
|
492
491
|
|
492
|
+
it "ignores usage of hiera_include() at topscope for classification" do
|
493
|
+
Puppet.expects(:debug).with(regexp_matches /Ignoring hiera_include/)
|
494
|
+
|
495
|
+
expect {
|
496
|
+
catalog = compile_to_env_catalog(<<-EOC).to_resource
|
497
|
+
hiera_include('classes')
|
498
|
+
site { }
|
499
|
+
EOC
|
500
|
+
}.to_not raise_error()
|
501
|
+
|
502
|
+
end
|
503
|
+
|
493
504
|
it "includes components and capability resources" do
|
494
505
|
catalog = compile_to_env_catalog(MANIFEST).to_resource
|
495
506
|
apps = catalog.resources.select do |res|
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'puppet'
|
2
2
|
require 'spec_helper'
|
3
3
|
require 'puppet_spec/compiler'
|
4
|
+
require 'puppet_spec/files'
|
4
5
|
|
5
6
|
describe 'function for dynamically creating resources' do
|
6
7
|
include PuppetSpec::Compiler
|
8
|
+
include PuppetSpec::Files
|
7
9
|
|
8
10
|
before :each do
|
9
11
|
node = Puppet::Node.new("floppy", :environment => 'production')
|
@@ -31,6 +33,35 @@ describe 'function for dynamically creating resources' do
|
|
31
33
|
expect { @scope.function_create_resources(['foo',{},'foo']) }.to raise_error(ArgumentError, 'create_resources(): third argument, if provided, must be a hash')
|
32
34
|
end
|
33
35
|
|
36
|
+
context 'when being called from a manifest in a file' do
|
37
|
+
let(:dir) do
|
38
|
+
dir_containing('manifests', {
|
39
|
+
'site.pp' => <<-EOF
|
40
|
+
# comment here to make the call be on a particular
|
41
|
+
# source line (3)
|
42
|
+
create_resources('notify', {
|
43
|
+
'a' => { 'message'=>'message a'},
|
44
|
+
'b' => { 'message'=>'message b'},
|
45
|
+
}
|
46
|
+
)
|
47
|
+
EOF
|
48
|
+
}
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'file and line information where call originates is written to all resources created in one call' do
|
53
|
+
node = Puppet::Node.new('test')
|
54
|
+
file = File.join(dir, 'site.pp')
|
55
|
+
Puppet[:manifest] = file
|
56
|
+
catalog = Puppet::Parser::Compiler.compile(node).filter { |r| r.virtual? }
|
57
|
+
|
58
|
+
expect(catalog.resource(:notify, 'a').file).to eq(file)
|
59
|
+
expect(catalog.resource(:notify, 'a').line).to eq(3)
|
60
|
+
expect(catalog.resource(:notify, 'b').file).to eq(file)
|
61
|
+
expect(catalog.resource(:notify, 'b').line).to eq(3)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
34
65
|
describe 'when creating native types' do
|
35
66
|
it 'empty hash should not cause resources to be added' do
|
36
67
|
noop_catalog = compile_to_catalog("create_resources('file', {})")
|
@@ -43,6 +74,16 @@ describe 'function for dynamically creating resources' do
|
|
43
74
|
expect(catalog.resource(:file, "/etc/foo")['ensure']).to eq('present')
|
44
75
|
end
|
45
76
|
|
77
|
+
it 'should pick up and pass on file and line information' do
|
78
|
+
# mock location as the compile_to_catalog sets Puppet[:code} which does not
|
79
|
+
# have file/line support.
|
80
|
+
Puppet::Pops::PuppetStack.expects(:stacktrace).once.returns([['test.pp', 1234]])
|
81
|
+
catalog = compile_to_catalog("create_resources('file', {'/etc/foo'=>{'ensure'=>'present'}})")
|
82
|
+
r = catalog.resource(:file, "/etc/foo")
|
83
|
+
expect(r.file).to eq('test.pp')
|
84
|
+
expect(r.line).to eq(1234)
|
85
|
+
end
|
86
|
+
|
46
87
|
it 'should be able to add virtual resources' do
|
47
88
|
catalog = compile_to_catalog("create_resources('@file', {'/etc/foo'=>{'ensure'=>'present'}})\nrealize(File['/etc/foo'])")
|
48
89
|
expect(catalog.resource(:file, "/etc/foo")['ensure']).to eq('present')
|
@@ -54,16 +95,16 @@ describe 'function for dynamically creating resources' do
|
|
54
95
|
expect(catalog.resource(:file, "/etc/foo").exported).to eq(true)
|
55
96
|
end
|
56
97
|
|
57
|
-
it 'should accept multiple
|
98
|
+
it 'should accept multiple resources' do
|
58
99
|
catalog = compile_to_catalog("create_resources('notify', {'foo'=>{'message'=>'one'}, 'bar'=>{'message'=>'two'}})")
|
59
100
|
expect(catalog.resource(:notify, "foo")['message']).to eq('one')
|
60
101
|
expect(catalog.resource(:notify, "bar")['message']).to eq('two')
|
61
102
|
end
|
62
103
|
|
63
|
-
it 'should fail to add non-existing type' do
|
104
|
+
it 'should fail to add non-existing resource type' do
|
64
105
|
expect do
|
65
106
|
@scope.function_create_resources(['create-resource-foo', { 'foo' => {} }])
|
66
|
-
end.to raise_error(/
|
107
|
+
end.to raise_error(/Unknown resource type: 'create-resource-foo'/)
|
67
108
|
end
|
68
109
|
|
69
110
|
it 'should be able to add edges' do
|
@@ -84,6 +125,15 @@ describe 'function for dynamically creating resources' do
|
|
84
125
|
expect(rg.path_between(foo,nil)).to_not be
|
85
126
|
end
|
86
127
|
|
128
|
+
it 'should filter out undefined edges in an array as they cause errors' do
|
129
|
+
rg = compile_to_relationship_graph("notify { test: }\n create_resources('notify', {'foo'=>{'require'=>[undef]}})")
|
130
|
+
test = rg.vertices.find { |v| v.title == 'test' }
|
131
|
+
foo = rg.vertices.find { |v| v.title == 'foo' }
|
132
|
+
expect(test).to be
|
133
|
+
expect(foo).to be
|
134
|
+
expect(rg.path_between(foo,nil)).to_not be
|
135
|
+
end
|
136
|
+
|
87
137
|
it 'should account for default values' do
|
88
138
|
catalog = compile_to_catalog("create_resources('file', {'/etc/foo'=>{'ensure'=>'present'}, '/etc/baz'=>{'group'=>'food'}}, {'group' => 'bar'})")
|
89
139
|
expect(catalog.resource(:file, "/etc/foo")['group']).to eq('bar')
|
@@ -112,7 +162,29 @@ describe 'function for dynamically creating resources' do
|
|
112
162
|
|
113
163
|
create_resources('foocreateresource', {'blah'=>{}})
|
114
164
|
MANIFEST
|
115
|
-
}.to raise_error(Puppet::Error, /Foocreateresource\[blah\]: expects a value for parameter 'one'
|
165
|
+
}.to raise_error(Puppet::Error, /Foocreateresource\[blah\]: expects a value for parameter 'one'/)
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'should accept undef as explicit value when parameter has no default value' do
|
169
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
170
|
+
define foocreateresource($one) {
|
171
|
+
notify { $name: message => "aaa${one}bbb" }
|
172
|
+
}
|
173
|
+
|
174
|
+
create_resources('foocreateresource', {'blah'=>{ one => undef}})
|
175
|
+
MANIFEST
|
176
|
+
expect(catalog.resource(:notify, "blah")['message']).to eq('aaabbb')
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'should use default value expression if given value is undef' do
|
180
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
181
|
+
define foocreateresource($one = 'xx') {
|
182
|
+
notify { $name: message => "aaa${one}bbb" }
|
183
|
+
}
|
184
|
+
|
185
|
+
create_resources('foocreateresource', {'blah'=>{ one => undef}})
|
186
|
+
MANIFEST
|
187
|
+
expect(catalog.resource(:notify, "blah")['message']).to eq('aaaxxbbb')
|
116
188
|
end
|
117
189
|
|
118
190
|
it 'should be able to add multiple defines' do
|
@@ -18,7 +18,7 @@ describe "the require function" do
|
|
18
18
|
|
19
19
|
@scope.stubs(:findresource)
|
20
20
|
@klass = stub 'class', :name => "myclass"
|
21
|
-
@scope.stubs(:find_hostclass).returns(@klass)
|
21
|
+
@scope.environment.known_resource_types.stubs(:find_hostclass).returns(@klass)
|
22
22
|
|
23
23
|
@resource = Puppet::Parser::Resource.new(:file, "/my/file", :scope => @scope, :source => "source")
|
24
24
|
@scope.stubs(:resource).returns @resource
|
@@ -45,7 +45,7 @@ describe "the require function" do
|
|
45
45
|
it "should lookup the absolute class path" do
|
46
46
|
@scope.compiler.stubs(:evaluate_classes)
|
47
47
|
|
48
|
-
@scope.expects(:find_hostclass).with("::myclass").returns(@klass)
|
48
|
+
@scope.environment.known_resource_types.expects(:find_hostclass).with("::myclass").returns(@klass)
|
49
49
|
@klass.expects(:name).returns("myclass")
|
50
50
|
|
51
51
|
@scope.function_require(["myclass"])
|
@@ -54,10 +54,6 @@ describe Puppet::Parser::Resource do
|
|
54
54
|
expect(Puppet::Parser::Resource.new("file", "whatever", :scope => scope).environment).to eq("foo")
|
55
55
|
end
|
56
56
|
|
57
|
-
it "should use the resource type collection helper module" do
|
58
|
-
expect(Puppet::Parser::Resource.ancestors).to be_include(Puppet::Resource::TypeCollectionHelper)
|
59
|
-
end
|
60
|
-
|
61
57
|
it "should use the scope's environment as its environment" do
|
62
58
|
@scope.expects(:environment).returns("myenv").at_least_once
|
63
59
|
expect(Puppet::Parser::Resource.new("file", "whatever", :scope => @scope).environment).to eq("myenv")
|
@@ -157,7 +153,7 @@ describe Puppet::Parser::Resource do
|
|
157
153
|
end
|
158
154
|
|
159
155
|
it "should add an edge to any specified stage for class resources" do
|
160
|
-
@compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
156
|
+
@compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
161
157
|
|
162
158
|
other_stage = Puppet::Parser::Resource.new(:stage, "other", :scope => @scope, :catalog => @catalog)
|
163
159
|
@compiler.add_resource(@scope, other_stage)
|
@@ -171,7 +167,7 @@ describe Puppet::Parser::Resource do
|
|
171
167
|
end
|
172
168
|
|
173
169
|
it "should fail if an unknown stage is specified" do
|
174
|
-
@compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
170
|
+
@compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
175
171
|
|
176
172
|
resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
|
177
173
|
resource[:stage] = 'other'
|
@@ -183,7 +179,7 @@ describe Puppet::Parser::Resource do
|
|
183
179
|
main = @compiler.catalog.resource(:stage, :main)
|
184
180
|
foo_stage = Puppet::Parser::Resource.new(:stage, :foo_stage, :scope => @scope, :catalog => @catalog)
|
185
181
|
@compiler.add_resource(@scope, foo_stage)
|
186
|
-
@compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
182
|
+
@compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
187
183
|
resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
|
188
184
|
resource[:stage] = 'foo_stage'
|
189
185
|
@compiler.add_resource(@scope, resource)
|
@@ -200,6 +196,16 @@ describe Puppet::Parser::Resource do
|
|
200
196
|
expect(edges).to include(['Class[main]', 'Notify[hello]'])
|
201
197
|
end
|
202
198
|
|
199
|
+
it 'should evaluate class in the same file without include' do
|
200
|
+
Puppet[:code] = <<-MANIFEST
|
201
|
+
class a($myvar = 'hello') {}
|
202
|
+
class { 'a': myvar => 'goodbye' }
|
203
|
+
notify { $a::myvar: }
|
204
|
+
MANIFEST
|
205
|
+
catalog = Puppet::Parser::Compiler.compile(Puppet::Node.new 'anyone')
|
206
|
+
expect(catalog.resource('Notify[goodbye]')).to be_a(Puppet::Resource)
|
207
|
+
end
|
208
|
+
|
203
209
|
it "should allow edges to propagate multiple levels down the scope hierarchy" do
|
204
210
|
Puppet[:code] = <<-MANIFEST
|
205
211
|
stage { before: before => Stage[main] }
|
@@ -246,7 +252,7 @@ describe Puppet::Parser::Resource do
|
|
246
252
|
|
247
253
|
it "should add edges from top-level class resources to the main stage if no stage is specified" do
|
248
254
|
main = @compiler.catalog.resource(:stage, :main)
|
249
|
-
@compiler.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
255
|
+
@compiler.environment.known_resource_types.add Puppet::Resource::Type.new(:hostclass, "foo", {})
|
250
256
|
resource = Puppet::Parser::Resource.new(:class, "foo", :scope => @scope, :catalog => @catalog)
|
251
257
|
@compiler.add_resource(@scope, resource)
|
252
258
|
|
@@ -258,9 +264,6 @@ describe Puppet::Parser::Resource do
|
|
258
264
|
|
259
265
|
describe "when finishing" do
|
260
266
|
before do
|
261
|
-
@class = newclass "myclass"
|
262
|
-
@nodedef = newnode("mynode")
|
263
|
-
|
264
267
|
@resource = Puppet::Parser::Resource.new("file", "whatever", :scope => @scope, :source => @source)
|
265
268
|
end
|
266
269
|
|
@@ -295,6 +298,13 @@ describe Puppet::Parser::Resource do
|
|
295
298
|
|
296
299
|
expect(@resource[:owner]).to eq("other")
|
297
300
|
end
|
301
|
+
|
302
|
+
it "converts parameters with Sensitive values to unwrapped values and metadata" do
|
303
|
+
@resource[:content] = Puppet::Pops::Types::PSensitiveType::Sensitive.new("hunter2")
|
304
|
+
@resource.finish
|
305
|
+
expect(@resource[:content]).to eq "hunter2"
|
306
|
+
expect(@resource.sensitive_parameters).to eq [:content]
|
307
|
+
end
|
298
308
|
end
|
299
309
|
|
300
310
|
describe "when being tagged" do
|
@@ -91,10 +91,6 @@ describe Puppet::Parser::Scope do
|
|
91
91
|
}.to raise_error(Puppet::DevError, /you must pass a compiler instance/)
|
92
92
|
end
|
93
93
|
|
94
|
-
it "should use the resource type collection helper to find its known resource types" do
|
95
|
-
expect(Puppet::Parser::Scope.ancestors).to include(Puppet::Resource::TypeCollectionHelper)
|
96
|
-
end
|
97
|
-
|
98
94
|
describe "when custom functions are called" do
|
99
95
|
let(:env) { Puppet::Node::Environment.create(:testing, []) }
|
100
96
|
let(:compiler) { Puppet::Parser::Compiler.new(Puppet::Node.new('foo', :environment => env)) }
|
@@ -230,7 +226,7 @@ describe Puppet::Parser::Scope do
|
|
230
226
|
|
231
227
|
describe "and the variable is qualified" do
|
232
228
|
before :each do
|
233
|
-
@known_resource_types = @scope.known_resource_types
|
229
|
+
@known_resource_types = @scope.environment.known_resource_types
|
234
230
|
|
235
231
|
node = Puppet::Node.new('localhost')
|
236
232
|
@compiler = Puppet::Parser::Compiler.new(node)
|
@@ -792,7 +792,7 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl' do
|
|
792
792
|
Puppet.override({:global_scope => scope,
|
793
793
|
:environments => Puppet::Environments::Static.new(@node.environment)
|
794
794
|
}, "gets class parameter test") do
|
795
|
-
scope.known_resource_types.import_ast(ast, '')
|
795
|
+
scope.environment.known_resource_types.import_ast(ast, '')
|
796
796
|
expect(ast.code.safeevaluate(scope)).to eq('chocolate')
|
797
797
|
end
|
798
798
|
end
|
@@ -7,7 +7,7 @@ describe 'loader paths' do
|
|
7
7
|
include PuppetSpec::Files
|
8
8
|
|
9
9
|
let(:static_loader) { Puppet::Pops::Loader::StaticLoader.new() }
|
10
|
-
let(:unused_loaders) {
|
10
|
+
let(:unused_loaders) { Puppet::Pops::Loaders.new(Puppet::Node::Environment.create(:'*test*', [])) }
|
11
11
|
|
12
12
|
it 'module loader has smart-paths that prunes unavailable paths' do
|
13
13
|
module_dir = dir_containing('testmodule', {'lib' => {'puppet' => {'functions' =>
|
@@ -15,7 +15,7 @@ describe 'loader helper classes' do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'TypedName holds values and is frozen' do
|
18
|
-
tn = Puppet::Pops::Loader::
|
18
|
+
tn = Puppet::Pops::Loader::TypedName.new(:function, '::foo::bar')
|
19
19
|
expect(tn.frozen?).to be_truthy
|
20
20
|
expect(tn.type).to eq(:function)
|
21
21
|
expect(tn.name_parts).to eq(['foo', 'bar'])
|
@@ -33,6 +33,7 @@ describe 'loaders' do
|
|
33
33
|
let(:mix_4x_and_3x_functions) { config_dir('mix_4x_and_3x_functions') }
|
34
34
|
let(:module_with_metadata) { File.join(config_dir('single_module'), 'modules') }
|
35
35
|
let(:dependent_modules_with_metadata) { config_dir('dependent_modules_with_metadata') }
|
36
|
+
let(:no_modules) { config_dir('no_modules') }
|
36
37
|
let(:user_metadata_path) { File.join(dependent_modules_with_metadata, 'modules/user/metadata.json') }
|
37
38
|
|
38
39
|
let(:empty_test_env) { environment_for() }
|
@@ -40,6 +41,42 @@ describe 'loaders' do
|
|
40
41
|
# Loaders caches the puppet_system_loader, must reset between tests
|
41
42
|
before(:each) { Puppet::Pops::Loaders.clear() }
|
42
43
|
|
44
|
+
context 'when loading pp resource types using auto loading' do
|
45
|
+
let(:pp_resources) { config_dir('pp_resources') }
|
46
|
+
let(:environments) { Puppet::Environments::Directories.new(my_fixture_dir, []) }
|
47
|
+
let(:env) { Puppet::Node::Environment.create(:'pp_resources', [File.join(pp_resources, 'modules')]) }
|
48
|
+
let(:scope) { Puppet::Parser::Compiler.new(Puppet::Node.new("test", :environment => env)).newscope(nil) }
|
49
|
+
let(:loader) { Puppet::Pops::Loaders.loaders.find_loader(nil) }
|
50
|
+
around(:each) do |example|
|
51
|
+
Puppet.override(:environments => environments, :current_environment => scope.environment, :global_scope => scope) do
|
52
|
+
Puppet.override(:loaders => Puppet::Pops::Loaders.new(env)) do
|
53
|
+
example.run
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'finds a resource type that resides under <environment root>/.resource_types' do
|
59
|
+
rt = loader.load(:resource_type_pp, 'myresource')
|
60
|
+
expect(rt).to be_a(Puppet::Pops::Resource::ResourceTypeImpl)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'does not allow additional logic in the file' do
|
64
|
+
expect{loader.load(:resource_type_pp, 'addlogic')}.to raise_error(ArgumentError, /it has additional logic/)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'does not allow creation of classes other than Puppet::Resource::ResourceType3' do
|
68
|
+
expect{loader.load(:resource_type_pp, 'badcall')}.to raise_error(ArgumentError, /no call to Puppet::Resource::ResourceType3.new found/)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'does not allow creation of other types' do
|
72
|
+
expect{loader.load(:resource_type_pp, 'wrongname')}.to raise_error(ArgumentError, /produced resource type with the wrong name, expected 'wrongname', actual 'notwrongname'/)
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'errors with message about empty file for files that contain no logic' do
|
76
|
+
expect{loader.load(:resource_type_pp, 'empty')}.to raise_error(ArgumentError, /it is empty/)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
43
80
|
it 'creates a puppet_system loader' do
|
44
81
|
loaders = Puppet::Pops::Loaders.new(empty_test_env)
|
45
82
|
expect(loaders.puppet_system_loader()).to be_a(Puppet::Pops::Loader::ModuleLoaders::FileBased)
|
@@ -51,7 +88,7 @@ describe 'loaders' do
|
|
51
88
|
expect(loaders.public_environment_loader()).to be_a(Puppet::Pops::Loader::SimpleEnvironmentLoader)
|
52
89
|
expect(loaders.public_environment_loader().to_s).to eql("(SimpleEnvironmentLoader 'environment:*test*')")
|
53
90
|
expect(loaders.private_environment_loader()).to be_a(Puppet::Pops::Loader::DependencyLoader)
|
54
|
-
expect(loaders.private_environment_loader().to_s).to eql("(DependencyLoader 'environment' [])")
|
91
|
+
expect(loaders.private_environment_loader().to_s).to eql("(DependencyLoader 'environment private' [])")
|
55
92
|
end
|
56
93
|
|
57
94
|
context 'when loading from a module' do
|
@@ -200,7 +237,7 @@ describe 'loaders' do
|
|
200
237
|
expect(resource['message']).to eq(desc[:expects])
|
201
238
|
end
|
202
239
|
|
203
|
-
it
|
240
|
+
it "can not call #{desc[:called]} from #{desc[:from]} if dependency is missing in existing metadata.json" do
|
204
241
|
File.stubs(:read).with(user_metadata_path, {:encoding => 'utf-8'}).returns user_metadata.merge('dependencies' => []).to_pson
|
205
242
|
Puppet[:code] = "$case_number = #{case_number}\ninclude ::user"
|
206
243
|
expect { catalog = compiler.compile }.to raise_error(Puppet::Error, /Unknown function/)
|
@@ -274,6 +311,28 @@ describe 'loaders' do
|
|
274
311
|
end
|
275
312
|
end
|
276
313
|
|
314
|
+
context 'when loading from an environment without modules' do
|
315
|
+
let(:node) { Puppet::Node.new('test', :facts => Puppet::Node::Facts.new('facts', {}), :environment => 'no_modules') }
|
316
|
+
|
317
|
+
it 'can load the same function twice with two different compilations and produce different values' do
|
318
|
+
Puppet.settings.initialize_global_settings
|
319
|
+
environments = Puppet::Environments::Directories.new(my_fixture_dir, [])
|
320
|
+
Puppet.override(:environments => environments) do
|
321
|
+
compiler = Puppet::Parser::Compiler.new(node)
|
322
|
+
compiler.topscope['value_from_scope'] = 'first'
|
323
|
+
catalog = compiler.compile
|
324
|
+
expect(catalog.resource('Notify[first]')).to be_a(Puppet::Resource)
|
325
|
+
|
326
|
+
Puppet::Pops::Loader::RubyFunctionInstantiator.expects(:create).never
|
327
|
+
compiler = Puppet::Parser::Compiler.new(node)
|
328
|
+
compiler.topscope['value_from_scope'] = 'second'
|
329
|
+
catalog = compiler.compile
|
330
|
+
expect(catalog.resource('Notify[first]')).to be_nil
|
331
|
+
expect(catalog.resource('Notify[second]')).to be_a(Puppet::Resource)
|
332
|
+
end
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
277
336
|
context 'when calling' do
|
278
337
|
let(:env) { environment_for(mix_4x_and_3x_functions) }
|
279
338
|
let(:scope) { Puppet::Parser::Compiler.new(Puppet::Node.new("test", :environment => env)).newscope(nil) }
|
@@ -314,13 +373,12 @@ describe 'loaders' do
|
|
314
373
|
end
|
315
374
|
end
|
316
375
|
|
317
|
-
|
318
376
|
def environment_for(*module_paths)
|
319
377
|
Puppet::Node::Environment.create(:'*test*', module_paths)
|
320
378
|
end
|
321
379
|
|
322
380
|
def typed_name(type, name)
|
323
|
-
Puppet::Pops::Loader::
|
381
|
+
Puppet::Pops::Loader::TypedName.new(type, name)
|
324
382
|
end
|
325
383
|
|
326
384
|
def config_dir(config_name)
|
@@ -58,7 +58,7 @@ describe 'FileBased module loader' do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it 'system loader has itself as private loader' do
|
61
|
-
module_loader =
|
61
|
+
module_loader = loaders.puppet_system_loader
|
62
62
|
expect(module_loader.private_loader).to be(module_loader)
|
63
63
|
end
|
64
64
|
|
@@ -90,6 +90,6 @@ describe 'FileBased module loader' do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def typed_name(type, name)
|
93
|
-
Puppet::Pops::Loader::
|
93
|
+
Puppet::Pops::Loader::TypedName.new(type, name)
|
94
94
|
end
|
95
95
|
end
|