puppet 6.17.0-x64-mingw32 → 6.21.0-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 +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +2 -0
- data/Gemfile.lock +38 -34
- data/README.md +1 -2
- data/Rakefile +4 -12
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +9 -3
- data/lib/puppet/application/apply.rb +20 -21
- data/lib/puppet/application/device.rb +1 -0
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +50 -8
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +88 -38
- data/lib/puppet/environments.rb +84 -59
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +60 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/resolver.rb +5 -8
- data/lib/puppet/http/resolver/server_list.rb +18 -36
- data/lib/puppet/http/resolver/settings.rb +4 -4
- data/lib/puppet/http/resolver/srv.rb +5 -5
- data/lib/puppet/http/service.rb +3 -1
- data/lib/puppet/http/service/compiler.rb +1 -1
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/session.rb +5 -4
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/pal_impl.rb +90 -13
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +19 -15
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/package/apt.rb +67 -1
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +1 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/resource/type.rb +2 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/settings.rb +63 -21
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +10 -3
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +12 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -3
- data/lib/puppet/type/file.rb +2 -2
- data/lib/puppet/type/file/source.rb +28 -8
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +10 -15
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fact_dif.rb +62 -0
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +15 -1
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +342 -312
- data/man/man5/puppet.conf.5 +53 -18
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +32 -1
- data/man/man8/puppet-filebucket.8 +3 -3
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +208 -55
- data/spec/integration/application/apply_spec.rb +168 -149
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +70 -21
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +53 -3
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +19 -1
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/lib/puppet_spec/settings.rb +6 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +3 -5
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/filebucket_spec.rb +0 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +60 -13
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +10 -3
- data/spec/unit/defaults_spec.rb +20 -1
- data/spec/unit/environments_spec.rb +176 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/node_spec.rb +2 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/http/client_spec.rb +0 -1
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -3
- data/spec/unit/http/service/file_server_spec.rb +2 -3
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +0 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/key/file_spec.rb +0 -1
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +4 -4
- data/spec/unit/indirector/rest_spec.rb +1 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +0 -3
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +85 -3
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +28 -0
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +56 -3
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +8 -10
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/capability_finder_spec.rb +6 -1
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -10
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +576 -239
- data/spec/unit/ssl/base_spec.rb +0 -1
- data/spec/unit/ssl/host_spec.rb +0 -5
- data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -0
- data/spec/unit/transaction_spec.rb +13 -4
- data/spec/unit/type/file/content_spec.rb +0 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +1 -1
- data/spec/unit/type/file_spec.rb +0 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +36 -3
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +15 -11
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util_spec.rb +13 -6
- metadata +49 -50
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/man_spec.rb +0 -31
@@ -112,8 +112,8 @@ describe Puppet::Indirector, "when registering an indirection" do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
it "should pass any provided options to the indirection during initialization" do
|
115
|
-
expect(Puppet::Indirector::Indirection).to receive(:new).with(@thingie, :first, {:
|
116
|
-
@indirection = @thingie.indirects :first, :
|
115
|
+
expect(Puppet::Indirector::Indirection).to receive(:new).with(@thingie, :first, {:doc => 'some docs', :indirected_class => 'Thingie'})
|
116
|
+
@indirection = @thingie.indirects :first, :doc => 'some docs'
|
117
117
|
end
|
118
118
|
|
119
119
|
it "should extend the class to handle serialization" do
|
@@ -247,6 +247,21 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
247
247
|
expect(subject).to include :result => :success
|
248
248
|
graph_should_include 'pmtacceptance-mysql', nil => v('0.8.0')
|
249
249
|
end
|
250
|
+
|
251
|
+
context 'with an already installed dependency' do
|
252
|
+
before { preinstall('pmtacceptance-stdlib', '2.6.0') }
|
253
|
+
|
254
|
+
def options
|
255
|
+
super.merge(:version => '0.7.0')
|
256
|
+
end
|
257
|
+
|
258
|
+
it 'installs given version without errors and does not change version of dependency' do
|
259
|
+
expect(subject).to include :result => :success
|
260
|
+
graph_should_include 'pmtacceptance-mysql', nil => v('0.7.0')
|
261
|
+
expect(subject[:error]).to be_nil
|
262
|
+
graph_should_include 'pmtacceptance-stdlib', v('2.6.0') => v('2.6.0')
|
263
|
+
end
|
264
|
+
end
|
250
265
|
end
|
251
266
|
|
252
267
|
context 'with a --version that cannot satisfy' do
|
@@ -258,6 +273,20 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
258
273
|
expect(subject).to include :result => :failure
|
259
274
|
end
|
260
275
|
|
276
|
+
it 'prints a detailed error containing the modules that would not be satisfied' do
|
277
|
+
graph = double(SemanticPuppet::Dependency::Graph, :modules => ['pmtacceptance-mysql'])
|
278
|
+
exception = SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph)
|
279
|
+
allow(exception).to receive(:respond_to?).and_return(true)
|
280
|
+
allow(exception).to receive(:unsatisfied).and_return('pmtacceptance-mysql')
|
281
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(exception)
|
282
|
+
|
283
|
+
expect(subject[:error]).to include(:multiline)
|
284
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
285
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
286
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-keystone, expects 'pmtacceptance-mysql': >=0.6.1 <1.0.0")
|
287
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
288
|
+
end
|
289
|
+
|
261
290
|
context 'with --ignore-dependencies' do
|
262
291
|
def options
|
263
292
|
super.merge(:ignore_dependencies => true)
|
@@ -278,6 +307,43 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
278
307
|
graph_should_include 'pmtacceptance-mysql', nil => v('2.1.0')
|
279
308
|
end
|
280
309
|
end
|
310
|
+
|
311
|
+
context 'with an already installed dependency' do
|
312
|
+
let(:graph) {
|
313
|
+
double(SemanticPuppet::Dependency::Graph,
|
314
|
+
:dependencies => {
|
315
|
+
'pmtacceptance-mysql' => {
|
316
|
+
:version => '2.1.0'
|
317
|
+
}
|
318
|
+
},
|
319
|
+
:modules => ['pmtacceptance-mysql'],
|
320
|
+
:unsatisfied => 'pmtacceptance-stdlib'
|
321
|
+
)
|
322
|
+
}
|
323
|
+
|
324
|
+
let(:unsatisfiable_graph_exception) { SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph) }
|
325
|
+
|
326
|
+
before do
|
327
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(unsatisfiable_graph_exception)
|
328
|
+
allow(unsatisfiable_graph_exception).to receive(:respond_to?).and_return(true)
|
329
|
+
allow(unsatisfiable_graph_exception).to receive(:unsatisfied).and_return(graph.unsatisfied)
|
330
|
+
|
331
|
+
preinstall('pmtacceptance-stdlib', '2.6.0')
|
332
|
+
end
|
333
|
+
|
334
|
+
def options
|
335
|
+
super.merge(:version => '2.1.0')
|
336
|
+
end
|
337
|
+
|
338
|
+
it 'fails to install and outputs a multiline error containing the versions, expectations and workaround' do
|
339
|
+
expect(subject).to include :result => :failure
|
340
|
+
expect(subject[:error]).to include(:multiline)
|
341
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (v2.1.0)")
|
342
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
343
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-stdlib, installed: 2.6.0, expected: >= 2.2.1")
|
344
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
345
|
+
end
|
346
|
+
end
|
281
347
|
end
|
282
348
|
end
|
283
349
|
|
@@ -86,4 +86,24 @@ describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? and Pup
|
|
86
86
|
and_yield(type, name, {:entry => entry})
|
87
87
|
entry
|
88
88
|
end
|
89
|
+
|
90
|
+
describe "Extracts tars with long and short pathnames" do
|
91
|
+
let (:sourcetar) { fixtures('module.tar.gz') }
|
92
|
+
let (:longfilepath) { "puppetlabs-dsc-1.0.0/lib/puppet_x/dsc_resources/xWebAdministration/DSCResources/MSFT_xWebAppPoolDefaults/MSFT_xWebAppPoolDefaults.schema.mof" }
|
93
|
+
let (:shortfilepath) { "puppetlabs-dsc-1.0.0/README.md" }
|
94
|
+
|
95
|
+
it "unpacks a tar with a short path length" do
|
96
|
+
extractdir = PuppetSpec::Files.tmpdir('minitar')
|
97
|
+
|
98
|
+
minitar.unpack(sourcetar,extractdir,'module')
|
99
|
+
expect(File).to exist(File.expand_path("#{extractdir}/#{shortfilepath}"))
|
100
|
+
end
|
101
|
+
|
102
|
+
it "unpacks a tar with a long path length" do
|
103
|
+
extractdir = PuppetSpec::Files.tmpdir('minitar')
|
104
|
+
|
105
|
+
minitar.unpack(sourcetar,extractdir,'module')
|
106
|
+
expect(File).to exist(File.expand_path("#{extractdir}/#{longfilepath}"))
|
107
|
+
end
|
108
|
+
end
|
89
109
|
end
|
@@ -6,9 +6,6 @@ describe Puppet::Network::DefaultAuthProvider do
|
|
6
6
|
before :each do
|
7
7
|
allow(Puppet::FileSystem).to receive(:stat).and_return(double('stat', :ctime => :now))
|
8
8
|
allow(Time).to receive(:now).and_return(Time.now)
|
9
|
-
|
10
|
-
allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:exists?).and_return(true)
|
11
|
-
# FIXME @authprovider = Puppet::Network::DefaultAuthProvider.new("dummy")
|
12
9
|
end
|
13
10
|
|
14
11
|
describe "when initializing" do
|
@@ -67,8 +67,9 @@ describe Puppet::Network::FormatHandler do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should log a debug message" do
|
70
|
-
|
71
|
-
expect(Puppet).to receive(:debug).
|
70
|
+
Puppet[:log_level] = 'debug'
|
71
|
+
expect(Puppet).to receive(:debug) { |&b| expect(b.call).to eq("Value of 'preferred_serialization_format' (unsupported) is invalid for FormatTester, using default (two)") }
|
72
|
+
expect(Puppet).to receive(:debug) { |&b| expect(b.call).to eq("FormatTester supports formats: two one") }
|
72
73
|
FormatTester.supported_formats
|
73
74
|
end
|
74
75
|
end
|
@@ -17,7 +17,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
17
17
|
before do
|
18
18
|
Puppet::IndirectorTesting.indirection.terminus_class = :memory
|
19
19
|
Puppet::IndirectorTesting.indirection.terminus.clear
|
20
|
-
allow(handler).to receive(:warn_if_near_expiration)
|
21
20
|
end
|
22
21
|
|
23
22
|
describe "when converting a URI into a request" do
|
@@ -25,10 +24,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
25
24
|
let(:env_loaders) { Puppet::Environments::Static.new(environment) }
|
26
25
|
let(:params) { { :environment => "env" } }
|
27
26
|
|
28
|
-
before do
|
29
|
-
allow(handler).to receive(:handler).and_return("foo")
|
30
|
-
end
|
31
|
-
|
32
27
|
around do |example|
|
33
28
|
Puppet.override(:environments => env_loaders) do
|
34
29
|
example.run
|
@@ -180,10 +175,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
180
175
|
let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
|
181
176
|
let(:request) { Puppet::Indirector::Request.new(:foo, :find, "with spaces", nil, :foo => :bar, :environment => environment) }
|
182
177
|
|
183
|
-
before do
|
184
|
-
allow(handler).to receive(:handler).and_return("foo")
|
185
|
-
end
|
186
|
-
|
187
178
|
it "should include the environment in the query string of the URI" do
|
188
179
|
expect(handler.class.request_to_uri(request)).to eq("#{master_url_prefix}/foo/with%20spaces?environment=myenv&foo=bar")
|
189
180
|
end
|
@@ -7,13 +7,14 @@ require 'matchers/json'
|
|
7
7
|
describe Puppet::Network::HTTP::API::Master::V3::Environments do
|
8
8
|
include JSONMatchers
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
let(:environment) { Puppet::Node::Environment.create(:production, ["/first", "/second"], '/manifests') }
|
11
|
+
let(:loader) { Puppet::Environments::Static.new(environment) }
|
12
|
+
let(:handler) { Puppet::Network::HTTP::API::Master::V3::Environments.new(loader) }
|
13
|
+
let(:request) { Puppet::Network::HTTP::Request.from_hash(:headers => { 'accept' => 'application/json' }) }
|
14
|
+
let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
|
15
15
|
|
16
|
-
|
16
|
+
it "responds with all of the available environments" do
|
17
|
+
handler.call(request, response)
|
17
18
|
|
18
19
|
expect(response.code).to eq(200)
|
19
20
|
expect(response.type).to eq("application/json")
|
@@ -33,29 +34,17 @@ describe Puppet::Network::HTTP::API::Master::V3::Environments do
|
|
33
34
|
end
|
34
35
|
|
35
36
|
it "the response conforms to the environments schema for unlimited timeout" do
|
36
|
-
|
37
|
-
expect(conf_stub).to receive(:environment_timeout).and_return(Float::INFINITY)
|
38
|
-
environment = Puppet::Node::Environment.create(:production, [])
|
39
|
-
env_loader = Puppet::Environments::Static.new(environment)
|
40
|
-
expect(env_loader).to receive(:get_conf).with(:production).and_return(conf_stub)
|
41
|
-
handler = Puppet::Network::HTTP::API::Master::V3::Environments.new(env_loader)
|
42
|
-
response = Puppet::Network::HTTP::MemoryResponse.new
|
37
|
+
Puppet[:environment_timeout] = 'unlimited'
|
43
38
|
|
44
|
-
handler.call(
|
39
|
+
handler.call(request, response)
|
45
40
|
|
46
41
|
expect(response.body).to validate_against('api/schemas/environments.json')
|
47
42
|
end
|
48
43
|
|
49
44
|
it "the response conforms to the environments schema for integer timeout" do
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
env_loader = Puppet::Environments::Static.new(environment)
|
54
|
-
expect(env_loader).to receive(:get_conf).with(:production).and_return(conf_stub)
|
55
|
-
handler = Puppet::Network::HTTP::API::Master::V3::Environments.new(env_loader)
|
56
|
-
response = Puppet::Network::HTTP::MemoryResponse.new
|
57
|
-
|
58
|
-
handler.call(Puppet::Network::HTTP::Request.from_hash(:headers => { 'accept' => 'application/json' }), response)
|
45
|
+
Puppet[:environment_timeout] = 1
|
46
|
+
|
47
|
+
handler.call(request, response)
|
59
48
|
|
60
49
|
expect(response.body).to validate_against('api/schemas/environments.json')
|
61
50
|
end
|
@@ -102,11 +102,6 @@ describe Puppet::Network::HTTP::Handler do
|
|
102
102
|
{ :status => 200 }
|
103
103
|
end
|
104
104
|
|
105
|
-
before do
|
106
|
-
allow(handler).to receive(:check_authorization)
|
107
|
-
allow(handler).to receive(:warn_if_near_expiration)
|
108
|
-
end
|
109
|
-
|
110
105
|
it "should setup a profiler when the puppet-profiling header exists" do
|
111
106
|
request = a_request
|
112
107
|
request[:headers][Puppet::Network::HTTP::HEADER_ENABLE_PROFILING.downcase] = "true"
|
@@ -426,7 +426,7 @@ describe Puppet::Node::Environment do
|
|
426
426
|
it "includes the Bolt project in modules if it's defined" do
|
427
427
|
path = tmpdir('project')
|
428
428
|
PuppetSpec::Modules.generate_files('bolt_project', path)
|
429
|
-
project = Struct.new("Project", :name, :path).new('bolt_project', path)
|
429
|
+
project = Struct.new("Project", :name, :path, :load_as_module?).new('bolt_project', path, true)
|
430
430
|
|
431
431
|
Puppet.override(bolt_project: project) do
|
432
432
|
%w{foo bar}.each do |mod_name|
|
@@ -438,6 +438,23 @@ describe Puppet::Node::Environment do
|
|
438
438
|
expect(env.modules.collect{|mod| mod.name}.sort).to eq(%w{bolt_project foo bar bee baz}.sort)
|
439
439
|
end
|
440
440
|
end
|
441
|
+
|
442
|
+
it "does not include the Bolt project in modules if load_as_module? is false" do
|
443
|
+
path = tmpdir('project')
|
444
|
+
PuppetSpec::Modules.generate_files('bolt_project', path)
|
445
|
+
project = Struct.new("Project", :name, :path, :load_as_module?).new('bolt_project', path, false)
|
446
|
+
|
447
|
+
Puppet.override(bolt_project: project) do
|
448
|
+
%w{foo bar}.each do |mod_name|
|
449
|
+
PuppetSpec::Modules.generate_files(mod_name, first_modulepath)
|
450
|
+
end
|
451
|
+
%w{bee baz}.each do |mod_name|
|
452
|
+
PuppetSpec::Modules.generate_files(mod_name, second_modulepath)
|
453
|
+
end
|
454
|
+
expect(env.modules.collect{|mod| mod.name}.sort).to eq(%w{foo bar bee baz}.sort)
|
455
|
+
end
|
456
|
+
|
457
|
+
end
|
441
458
|
end
|
442
459
|
end
|
443
460
|
end
|
@@ -240,20 +240,9 @@ describe Puppet::Parser::Compiler do
|
|
240
240
|
end
|
241
241
|
|
242
242
|
describe "when compiling" do
|
243
|
-
def compile_methods
|
244
|
-
[:set_node_parameters, :evaluate_main, :evaluate_ast_node, :evaluate_node_classes, :evaluate_generators, :fail_on_unevaluated,
|
245
|
-
:finish, :store, :extract, :evaluate_relationships]
|
246
|
-
end
|
247
|
-
|
248
|
-
# Stub all of the main compile methods except the ones we're specifically interested in.
|
249
|
-
def compile_stub(*except)
|
250
|
-
(compile_methods - except).each { |m| allow(@compiler).to receive(m) }
|
251
|
-
end
|
252
|
-
|
253
243
|
it "should set node parameters as variables in the top scope" do
|
254
244
|
params = {"a" => "b", "c" => "d"}
|
255
245
|
allow(@node).to receive(:parameters).and_return(params)
|
256
|
-
compile_stub(:set_node_parameters)
|
257
246
|
@compiler.compile
|
258
247
|
expect(@compiler.topscope['a']).to eq("b")
|
259
248
|
expect(@compiler.topscope['c']).to eq("d")
|
@@ -262,13 +251,11 @@ describe Puppet::Parser::Compiler do
|
|
262
251
|
it "should set node parameters that are of Symbol type as String variables in the top scope" do
|
263
252
|
params = {"a" => :b}
|
264
253
|
allow(@node).to receive(:parameters).and_return(params)
|
265
|
-
compile_stub(:set_node_parameters)
|
266
254
|
@compiler.compile
|
267
255
|
expect(@compiler.topscope['a']).to eq("b")
|
268
256
|
end
|
269
257
|
|
270
258
|
it "should set the node's environment as a string variable in top scope" do
|
271
|
-
compile_stub(:set_node_parameters)
|
272
259
|
@node.merge({'wat' => 'this is how the sausage is made'})
|
273
260
|
@compiler.compile
|
274
261
|
expect(@compiler.topscope['environment']).to eq("testing")
|
@@ -276,7 +263,6 @@ describe Puppet::Parser::Compiler do
|
|
276
263
|
end
|
277
264
|
|
278
265
|
it "sets the environment based on node.environment instead of the parameters" do
|
279
|
-
compile_stub(:set_node_parameters)
|
280
266
|
@node.parameters['environment'] = "Not actually #{@node.environment.name}"
|
281
267
|
|
282
268
|
@compiler.compile
|
@@ -286,23 +272,21 @@ describe Puppet::Parser::Compiler do
|
|
286
272
|
it "should set the client and server versions on the catalog" do
|
287
273
|
params = {"clientversion" => "2", "serverversion" => "3"}
|
288
274
|
allow(@node).to receive(:parameters).and_return(params)
|
289
|
-
compile_stub(:set_node_parameters)
|
290
275
|
@compiler.compile
|
291
276
|
expect(@compiler.catalog.client_version).to eq("2")
|
292
277
|
expect(@compiler.catalog.server_version).to eq("3")
|
293
278
|
end
|
294
279
|
|
295
280
|
it "should evaluate the main class if it exists" do
|
296
|
-
compile_stub(:evaluate_main)
|
297
281
|
main_class = @known_resource_types.add Puppet::Resource::Type.new(:hostclass, "")
|
282
|
+
@compiler.topscope.source = main_class
|
283
|
+
|
298
284
|
expect(main_class).to receive(:evaluate_code).with(be_a(Puppet::Parser::Resource))
|
299
|
-
expect(@compiler.topscope).to receive(:source=).with(main_class)
|
300
285
|
|
301
286
|
@compiler.compile
|
302
287
|
end
|
303
288
|
|
304
289
|
it "should create a new, empty 'main' if no main class exists" do
|
305
|
-
compile_stub(:evaluate_main)
|
306
290
|
@compiler.compile
|
307
291
|
expect(@known_resource_types.find_hostclass("")).to be_instance_of(Puppet::Resource::Type)
|
308
292
|
end
|
@@ -325,7 +309,7 @@ describe Puppet::Parser::Compiler do
|
|
325
309
|
@compiler.add_collection(colls[0])
|
326
310
|
@compiler.add_collection(colls[1])
|
327
311
|
|
328
|
-
|
312
|
+
allow(@compiler).to receive(:fail_on_unevaluated)
|
329
313
|
@compiler.compile
|
330
314
|
end
|
331
315
|
|
@@ -418,22 +418,27 @@ describe Puppet::Parser::Resource do
|
|
418
418
|
end
|
419
419
|
|
420
420
|
describe "when merging overrides" do
|
421
|
+
def resource_type(name)
|
422
|
+
double(name, :child_of? => false)
|
423
|
+
end
|
424
|
+
|
421
425
|
before do
|
422
|
-
@source = "source1"
|
426
|
+
@source = resource_type("source1")
|
423
427
|
@resource = mkresource :source => @source
|
424
428
|
@override = mkresource :source => @source
|
425
429
|
end
|
426
430
|
|
427
431
|
it "should fail when the override was not created by a parent class" do
|
428
|
-
@override.source = "source2"
|
429
|
-
expect(@override.source).to receive(:child_of?).with(
|
432
|
+
@override.source = resource_type("source2")
|
433
|
+
expect(@override.source).to receive(:child_of?).with(@source).and_return(false)
|
430
434
|
expect { @resource.merge(@override) }.to raise_error(Puppet::ParseError)
|
431
435
|
end
|
432
436
|
|
433
437
|
it "should succeed when the override was created in the current scope" do
|
434
|
-
@
|
438
|
+
@source3 = resource_type("source3")
|
439
|
+
@resource.source = @source3
|
435
440
|
@override.source = @resource.source
|
436
|
-
expect(@override.source).not_to receive(:child_of?).with(
|
441
|
+
expect(@override.source).not_to receive(:child_of?).with(@source3)
|
437
442
|
params = {:a => :b, :c => :d}
|
438
443
|
expect(@override).to receive(:parameters).and_return(params)
|
439
444
|
expect(@resource).to receive(:override_parameter).with(:b)
|
@@ -442,9 +447,10 @@ describe Puppet::Parser::Resource do
|
|
442
447
|
end
|
443
448
|
|
444
449
|
it "should succeed when a parent class created the override" do
|
445
|
-
@
|
446
|
-
@
|
447
|
-
|
450
|
+
@source3 = resource_type("source3")
|
451
|
+
@resource.source = @source3
|
452
|
+
@override.source = resource_type("source4")
|
453
|
+
expect(@override.source).to receive(:child_of?).with(@source3).and_return(true)
|
448
454
|
params = {:a => :b, :c => :d}
|
449
455
|
expect(@override).to receive(:parameters).and_return(params)
|
450
456
|
expect(@resource).to receive(:override_parameter).with(:b)
|
@@ -57,9 +57,10 @@ describe Puppet::Parser::TemplateWrapper do
|
|
57
57
|
expect(tw.all_tags).to eq(["tag1","tag2"])
|
58
58
|
end
|
59
59
|
|
60
|
-
it "
|
61
|
-
expect
|
62
|
-
|
60
|
+
it "raises not implemented error" do
|
61
|
+
expect {
|
62
|
+
tw.tags
|
63
|
+
}.to raise_error(NotImplementedError, /Call 'all_tags' instead/)
|
63
64
|
end
|
64
65
|
|
65
66
|
it "raises error on access to removed in-scope variables via method calls" do
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet_spec/compiler'
|
3
|
+
|
4
|
+
describe Puppet::Pops::Evaluator::DeferredResolver do
|
5
|
+
include PuppetSpec::Compiler
|
6
|
+
|
7
|
+
let(:environment) { Puppet::Node::Environment.create(:testing, []) }
|
8
|
+
let(:facts) { Puppet::Node::Facts.new('node.example.com') }
|
9
|
+
|
10
|
+
it 'resolves deferred values in a catalog' do
|
11
|
+
catalog = compile_to_catalog(<<~END)
|
12
|
+
notify { "deferred":
|
13
|
+
message => Deferred("join", [[1,2,3], ":"])
|
14
|
+
}
|
15
|
+
END
|
16
|
+
described_class.resolve_and_replace(facts, catalog)
|
17
|
+
|
18
|
+
expect(catalog.resource(:notify, 'deferred')[:message]).to eq('1:2:3')
|
19
|
+
end
|
20
|
+
end
|
@@ -92,6 +92,35 @@ describe 'loaders' do
|
|
92
92
|
it 'errors with message about empty file for files that contain no logic' do
|
93
93
|
expect{loader.load(:resource_type_pp, 'empty')}.to raise_error(ArgumentError, /it is empty/)
|
94
94
|
end
|
95
|
+
|
96
|
+
it 'creates a pcore resource type loader' do
|
97
|
+
pcore_loader = env.loaders.runtime3_type_loader.resource_3x_loader
|
98
|
+
expect(pcore_loader.loader_name).to eq('pcore_resource_types')
|
99
|
+
expect(pcore_loader).to be_a(Puppet::Pops::Loader::ModuleLoaders::FileBased)
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'does not create a pcore resource type loader if requested not to' do
|
103
|
+
env.loaders = nil # clear cached loaders
|
104
|
+
loaders = Puppet::Pops::Loaders.new(env, false, false)
|
105
|
+
expect(loaders.runtime3_type_loader.resource_3x_loader).to be_nil
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'does not create a pcore resource type loader for an empty environment' do
|
109
|
+
loaders = Puppet::Pops::Loaders.new(empty_test_env)
|
110
|
+
expect(loaders.runtime3_type_loader.resource_3x_loader).to be_nil
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def expect_loader_hierarchy(loaders, expected_loaders)
|
115
|
+
actual_loaders = []
|
116
|
+
|
117
|
+
loader = loaders.private_environment_loader
|
118
|
+
while loader
|
119
|
+
actual_loaders << [loader.loader_name, loader]
|
120
|
+
loader = loader.parent
|
121
|
+
end
|
122
|
+
|
123
|
+
expect(actual_loaders).to contain_exactly(*expected_loaders)
|
95
124
|
end
|
96
125
|
|
97
126
|
it 'creates a puppet_system loader' do
|
@@ -123,6 +152,47 @@ describe 'loaders' do
|
|
123
152
|
expect(loaders.private_environment_loader().to_s).to eql("(DependencyLoader 'environment private' [])")
|
124
153
|
end
|
125
154
|
|
155
|
+
it 'creates a hierarchy of loaders' do
|
156
|
+
expect_loader_hierarchy(
|
157
|
+
Puppet::Pops::Loaders.new(empty_test_env),
|
158
|
+
[
|
159
|
+
[nil, Puppet::Pops::Loader::StaticLoader],
|
160
|
+
['puppet_system', Puppet::Pops::Loader::ModuleLoaders::LibRootedFileBased],
|
161
|
+
[empty_test_env.name, Puppet::Pops::Loader::Runtime3TypeLoader],
|
162
|
+
['environment', Puppet::Pops::Loader::SimpleEnvironmentLoader],
|
163
|
+
['environment private', Puppet::Pops::Loader::DependencyLoader],
|
164
|
+
]
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'excludes the Runtime3TypeLoader when tasks are enabled' do
|
169
|
+
Puppet[:tasks] = true
|
170
|
+
|
171
|
+
expect_loader_hierarchy(
|
172
|
+
Puppet::Pops::Loaders.new(empty_test_env),
|
173
|
+
[
|
174
|
+
[nil, Puppet::Pops::Loader::StaticLoader],
|
175
|
+
['puppet_system', Puppet::Pops::Loader::ModuleLoaders::LibRootedFileBased],
|
176
|
+
['environment', Puppet::Pops::Loader::ModuleLoaders::EmptyLoader],
|
177
|
+
['environment private', Puppet::Pops::Loader::DependencyLoader],
|
178
|
+
]
|
179
|
+
)
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'includes the agent cache loader when for_agent is true' do
|
183
|
+
expect_loader_hierarchy(
|
184
|
+
Puppet::Pops::Loaders.new(empty_test_env, true),
|
185
|
+
[
|
186
|
+
[nil, Puppet::Pops::Loader::StaticLoader],
|
187
|
+
['puppet_system', Puppet::Pops::Loader::ModuleLoaders::LibRootedFileBased],
|
188
|
+
['cached_puppet_lib', Puppet::Pops::Loader::ModuleLoaders::LibRootedFileBased],
|
189
|
+
[empty_test_env.name, Puppet::Pops::Loader::Runtime3TypeLoader],
|
190
|
+
['environment', Puppet::Pops::Loader::SimpleEnvironmentLoader],
|
191
|
+
['environment private', Puppet::Pops::Loader::DependencyLoader],
|
192
|
+
],
|
193
|
+
)
|
194
|
+
end
|
195
|
+
|
126
196
|
context 'when loading from a module' do
|
127
197
|
it 'loads a ruby function using a qualified or unqualified name' do
|
128
198
|
loaders = Puppet::Pops::Loaders.new(environment_for(module_with_metadata))
|