puppet 6.16.0-universal-darwin → 6.20.0-universal-darwin
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +6 -2
- data/Gemfile.lock +40 -36
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +23 -6
- 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 +70 -20
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +113 -46
- 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/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -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_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -7
- 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 +6 -1
- data/lib/puppet/http/redirector.rb +9 -7
- 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/response.rb +19 -0
- 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.rb +1 -1
- 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_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
- 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 +5 -5
- 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/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection_adapter.rb +6 -4
- 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 +7 -6
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- 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 +27 -8
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/issues.rb +5 -0
- 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/resource/resource_type_impl.rb +2 -0
- 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 +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +38 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- 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 +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/windows.rb +23 -7
- 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 +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +10 -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/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +18 -13
- 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 +29 -1
- data/lib/puppet/type.rb +15 -7
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +32 -12
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -15
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- 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/fileparsing.rb +2 -2
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- 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 +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +501 -443
- data/man/man5/puppet.conf.5 +70 -24
- data/man/man8/puppet-agent.8 +8 -5
- 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 +263 -54
- 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 +20 -3
- 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/network/http_pool_spec.rb +26 -9
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/type/file_spec.rb +1 -1
- 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 +7 -17
- data/spec/integration/util/windows/user_spec.rb +47 -5
- 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/fact_handler_spec.rb +4 -4
- 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/context/trusted_information_spec.rb +10 -4
- 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/http_metadata_spec.rb +37 -14
- 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_serving/terminus_selector_spec.rb +45 -26
- 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 +64 -9
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/response_spec.rb +6 -0
- 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/file_metadata/http_spec.rb +27 -0
- 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 +5 -5
- 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/interface_spec.rb +3 -3
- 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 +2 -10
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +42 -32
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +76 -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 +50 -14
- 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/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +23 -16
- 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 +14 -13
- 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 +82 -50
- data/spec/unit/test/test_helper_spec.rb +17 -0
- 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 +3 -1
- 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 +4 -4
- data/spec/unit/type/file_spec.rb +122 -102
- 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 +210 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +52 -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/checksums_spec.rb +16 -0
- 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/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +16 -9
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +52 -53
- 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/integration/test/test_helper_spec.rb +0 -31
- 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
data/lib/puppet/face/node.rb
CHANGED
@@ -32,11 +32,11 @@ Puppet::Indirector::Face.define(:node, '0.0.1') do
|
|
32
32
|
|
33
33
|
$ puppet node find somenode.puppetlabs.lan --terminus plain --render-as yaml
|
34
34
|
|
35
|
-
Retrieve a node using the
|
35
|
+
Retrieve a node using the Puppet Server's configured ENC:
|
36
36
|
|
37
|
-
$ puppet node find somenode.puppetlabs.lan --terminus exec --run_mode
|
37
|
+
$ puppet node find somenode.puppetlabs.lan --terminus exec --run_mode server --render-as yaml
|
38
38
|
|
39
|
-
Retrieve the same node from the
|
39
|
+
Retrieve the same node from the Puppet Server:
|
40
40
|
|
41
41
|
$ puppet node find somenode.puppetlabs.lan --terminus rest --render-as yaml
|
42
42
|
EOT
|
@@ -26,9 +26,9 @@ Puppet::Face.define(:node, '0.0.1') do
|
|
26
26
|
# definition, and should not be modifiable beyond that. This is one of
|
27
27
|
# the only places left in the code that tries to manipulate it. Other
|
28
28
|
# parts of code that handle certificates behave differently if the
|
29
|
-
# run_mode is
|
29
|
+
# run_mode is server. Those other behaviors are needed for cleaning the
|
30
30
|
# certificates correctly.
|
31
|
-
Puppet.settings.preferred_run_mode = "
|
31
|
+
Puppet.settings.preferred_run_mode = "server"
|
32
32
|
|
33
33
|
Puppet::Node::Facts.indirection.terminus_class = :yaml
|
34
34
|
Puppet::Node::Facts.indirection.cache_class = :yaml
|
data/lib/puppet/face/status.rb
CHANGED
@@ -26,7 +26,7 @@ Puppet::Indirector::Face.define(:status, '0.0.1') do
|
|
26
26
|
|
27
27
|
Over REST, this action will query the configured puppet master by default.
|
28
28
|
To query other servers, including puppet agent nodes started with the
|
29
|
-
<--listen> option, you can set the global <--server> and <--
|
29
|
+
<--listen> option, you can set the global <--server> and <--serverport>
|
30
30
|
options on the command line; note that agent nodes listen on port 8139.
|
31
31
|
EOT
|
32
32
|
find.short_description <<-EOT
|
data/lib/puppet/feature/base.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'puppet/ffi/posix'
|
2
|
+
|
3
|
+
module Puppet::FFI::POSIX
|
4
|
+
module Constants
|
5
|
+
extend FFI::Library
|
6
|
+
|
7
|
+
# Maximum number of supplementary groups (groups
|
8
|
+
# that a user can be in plus its primary group)
|
9
|
+
# (64 + 1 primary group)
|
10
|
+
# Chosen a reasonable middle number from the list
|
11
|
+
# https://www.j3e.de/ngroups.html
|
12
|
+
MAXIMUM_NUMBER_OF_GROUPS = 65
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'puppet/ffi/posix'
|
2
|
+
|
3
|
+
module Puppet::FFI::POSIX
|
4
|
+
module Functions
|
5
|
+
|
6
|
+
extend FFI::Library
|
7
|
+
|
8
|
+
ffi_convention :stdcall
|
9
|
+
|
10
|
+
# https://man7.org/linux/man-pages/man3/getgrouplist.3.html
|
11
|
+
# int getgrouplist (
|
12
|
+
# const char *user,
|
13
|
+
# gid_t group,
|
14
|
+
# gid_t *groups,
|
15
|
+
# int *ngroups
|
16
|
+
# );
|
17
|
+
begin
|
18
|
+
ffi_lib FFI::Library::LIBC
|
19
|
+
attach_function :getgrouplist, [:string, :uint, :pointer, :pointer], :int
|
20
|
+
rescue FFI::NotFoundError
|
21
|
+
# Do nothing
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -16,7 +16,7 @@ class Puppet::FileBucket::Dipper
|
|
16
16
|
def initialize(hash = {})
|
17
17
|
# Emulate the XMLRPC client
|
18
18
|
server = hash[:Server]
|
19
|
-
port = hash[:Port] || Puppet[:
|
19
|
+
port = hash[:Port] || Puppet[:serverport]
|
20
20
|
|
21
21
|
if hash.include?(:Path)
|
22
22
|
@local_path = hash[:Path]
|
@@ -15,6 +15,7 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
15
15
|
# use a default mtime in case there is no usable HTTP header
|
16
16
|
@checksums[:mtime] = "{mtime}#{Time.now}"
|
17
17
|
|
18
|
+
# RFC-1864, deprecated in HTTP/1.1 due to partial responses
|
18
19
|
checksum = http_response['content-md5']
|
19
20
|
if checksum
|
20
21
|
# convert base64 digest to hex
|
@@ -22,6 +23,17 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
22
23
|
@checksums[:md5] = "{md5}#{checksum}"
|
23
24
|
end
|
24
25
|
|
26
|
+
{
|
27
|
+
md5: 'X-Checksum-Md5',
|
28
|
+
sha1: 'X-Checksum-Sha1',
|
29
|
+
sha256: 'X-Checksum-Sha256'
|
30
|
+
}.each_pair do |checksum_type, header|
|
31
|
+
checksum = http_response[header]
|
32
|
+
if checksum
|
33
|
+
@checksums[checksum_type] = "{#{checksum_type}}#{checksum}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
25
37
|
last_modified = http_response['last-modified']
|
26
38
|
if last_modified
|
27
39
|
mtime = DateTime.httpdate(last_modified).to_time
|
@@ -39,7 +51,7 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
39
51
|
def collect
|
40
52
|
# Prefer the checksum_type from the indirector request options
|
41
53
|
# but fall back to the alternative otherwise
|
42
|
-
[ @checksum_type, :md5, :sha256, :
|
54
|
+
[ @checksum_type, :md5, :sha256, :sha1, :mtime ].each do |type|
|
43
55
|
@checksum_type = type
|
44
56
|
@checksum = @checksums[type]
|
45
57
|
break if @checksum
|
@@ -138,7 +138,10 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
138
138
|
@source = data.delete('source')
|
139
139
|
@content_uri = data.delete('content_uri')
|
140
140
|
|
141
|
-
|
141
|
+
links = data.fetch('links', nil) || data.fetch(:links, nil)
|
142
|
+
relative_path = data.fetch('relative_path', nil) || data.fetch(:relative_path, nil)
|
143
|
+
source = @source || data.fetch(:source, nil)
|
144
|
+
super(path, links: links, relative_path: relative_path, source: source)
|
142
145
|
end
|
143
146
|
|
144
147
|
def to_data_hash
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Locales < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on locales - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Locales.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.locales? }.collect { |mod| mod.locale_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::PluginFacts < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on plugins - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.pluginfacts? }.collect { |mod| mod.plugin_fact_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on plugins - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.plugins? }.collect { |mod| mod.plugin_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -7,11 +7,6 @@ module Puppet::FileServing::TerminusSelector
|
|
7
7
|
def select(request)
|
8
8
|
# We rely on the request's parsing of the URI.
|
9
9
|
|
10
|
-
# Short-circuit to :file if it's a fully-qualified path or specifies a 'file' protocol.
|
11
|
-
if Puppet::Util.absolute_path?(request.key)
|
12
|
-
return :file
|
13
|
-
end
|
14
|
-
|
15
10
|
case request.protocol
|
16
11
|
when "file"
|
17
12
|
:file
|
@@ -21,10 +16,14 @@ module Puppet::FileServing::TerminusSelector
|
|
21
16
|
else
|
22
17
|
Puppet[:default_file_terminus]
|
23
18
|
end
|
24
|
-
|
25
|
-
|
19
|
+
when "http","https"
|
20
|
+
:http
|
26
21
|
when nil
|
27
|
-
|
22
|
+
if Puppet::Util.absolute_path?(request.key)
|
23
|
+
:file
|
24
|
+
else
|
25
|
+
:file_server
|
26
|
+
end
|
28
27
|
else
|
29
28
|
raise ArgumentError, _("URI protocol '%{protocol}' is not currently supported for file serving") % { protocol: request.protocol }
|
30
29
|
end
|
@@ -54,12 +54,12 @@ class Puppet::FileSystem::FileImpl
|
|
54
54
|
while !written
|
55
55
|
::File.open(path, options, mode) do |rf|
|
56
56
|
if rf.flock(::File::LOCK_EX|::File::LOCK_NB)
|
57
|
-
Puppet.debug
|
57
|
+
Puppet.debug{ _("Locked '%{path}'") % { path: path } }
|
58
58
|
yield rf
|
59
59
|
written = true
|
60
|
-
Puppet.debug
|
60
|
+
Puppet.debug{ _("Unlocked '%{path}'") % { path: path } }
|
61
61
|
else
|
62
|
-
Puppet.debug
|
62
|
+
Puppet.debug{ "Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000] }
|
63
63
|
sleep wait
|
64
64
|
timeout -= wait
|
65
65
|
wait *= 2
|
@@ -124,7 +124,7 @@ class Puppet::FileSystem::FileImpl
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def symlink(path, dest, options = {})
|
127
|
-
FileUtils.symlink(path, dest, options)
|
127
|
+
FileUtils.symlink(path, dest, **options)
|
128
128
|
end
|
129
129
|
|
130
130
|
def symlink?(path)
|
@@ -124,11 +124,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
124
124
|
opts = []
|
125
125
|
end
|
126
126
|
tmpdir, = *rest
|
127
|
-
|
128
|
-
tmpdir = '/tmp'
|
129
|
-
else
|
130
|
-
tmpdir ||= tmpdir()
|
131
|
-
end
|
127
|
+
tmpdir ||= tmpdir()
|
132
128
|
n = nil
|
133
129
|
begin
|
134
130
|
path = File.expand_path(make_tmpname(basename, n), tmpdir)
|
@@ -154,18 +150,14 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
154
150
|
|
155
151
|
def tmpdir
|
156
152
|
tmp = '.'
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
tmp = dir
|
164
|
-
break
|
165
|
-
end rescue nil
|
166
|
-
end
|
167
|
-
File.expand_path(tmp)
|
153
|
+
for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
|
154
|
+
stat = File.stat(dir) if dir
|
155
|
+
if stat && stat.directory? && stat.writable?
|
156
|
+
tmp = dir
|
157
|
+
break
|
158
|
+
end rescue nil
|
168
159
|
end
|
160
|
+
File.expand_path(tmp)
|
169
161
|
end
|
170
162
|
|
171
163
|
|
data/lib/puppet/forge.rb
CHANGED
data/lib/puppet/forge/cache.rb
CHANGED
@@ -25,7 +25,7 @@ class Puppet::Forge
|
|
25
25
|
unless cached_file.file?
|
26
26
|
if uri.scheme == 'file'
|
27
27
|
# CGI.unescape butchers Uris that are escaped properly
|
28
|
-
FileUtils.cp(
|
28
|
+
FileUtils.cp(Puppet::Util.uri_unescape(uri.path), cached_file)
|
29
29
|
else
|
30
30
|
# TODO: Handle HTTPS; probably should use repository.contact
|
31
31
|
data = read_retrieve(uri)
|
@@ -37,19 +37,15 @@ class Puppet::Forge
|
|
37
37
|
uri = URI(str)
|
38
38
|
|
39
39
|
headers = { "User-Agent" => user_agent }
|
40
|
-
basic_auth = nil
|
41
40
|
|
42
41
|
if forge_authorization
|
42
|
+
uri.user = nil
|
43
|
+
uri.password = nil
|
43
44
|
headers["Authorization"] = forge_authorization
|
44
|
-
elsif @uri.user && @uri.password
|
45
|
-
basic_auth = {
|
46
|
-
user: @uri.user,
|
47
|
-
password: @uri.password
|
48
|
-
}
|
49
45
|
end
|
50
46
|
|
51
47
|
http = Puppet.runtime[:http]
|
52
|
-
response = http.get(uri, headers: headers, options: {
|
48
|
+
response = http.get(uri, headers: headers, options: {ssl_context: @ssl_context})
|
53
49
|
io.write(response.body) if io.respond_to?(:write)
|
54
50
|
response
|
55
51
|
rescue Puppet::SSL::CertVerifyError => e
|
data/lib/puppet/functions/epp.rb
CHANGED
@@ -40,6 +40,7 @@ Puppet::Functions.create_function(:epp, Puppet::Functions::InternalFunction) do
|
|
40
40
|
scope_param
|
41
41
|
param 'String', :path
|
42
42
|
optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
|
43
|
+
return_type 'Variant[String, Sensitive[String]]'
|
43
44
|
end
|
44
45
|
|
45
46
|
def epp(scope, path, parameters = nil)
|
@@ -51,6 +51,7 @@ Puppet::Functions.create_function(:inline_epp, Puppet::Functions::InternalFuncti
|
|
51
51
|
scope_param()
|
52
52
|
param 'String', :template
|
53
53
|
optional_param 'Hash[Pattern[/^\w+$/], Any]', :parameters
|
54
|
+
return_type 'Variant[String, Sensitive[String]]'
|
54
55
|
end
|
55
56
|
|
56
57
|
def inline_epp(scope, template, parameters = nil)
|
@@ -12,15 +12,15 @@
|
|
12
12
|
#
|
13
13
|
# @example Removing leading space from a String
|
14
14
|
# ```puppet
|
15
|
-
# "\n\thello".lstrip()
|
16
|
-
#
|
15
|
+
# "\n\thello ".lstrip()
|
16
|
+
# lstrip("\n\thello ")
|
17
17
|
# ```
|
18
18
|
# Would both result in `"hello"`
|
19
19
|
#
|
20
20
|
# @example Removing leading space from strings in an Array
|
21
21
|
# ```puppet
|
22
|
-
# ["\n\thello", "\n\thi"].lstrip()
|
23
|
-
# lstrip(["\n\thello", "\n\thi"])
|
22
|
+
# ["\n\thello ", "\n\thi "].lstrip()
|
23
|
+
# lstrip(["\n\thello ", "\n\thi "])
|
24
24
|
# ```
|
25
25
|
# Would both result in `['hello', 'hi']`
|
26
26
|
#
|
data/lib/puppet/functions/new.rb
CHANGED
@@ -991,12 +991,17 @@ Puppet::Functions.create_function(:new, Puppet::Functions::InternalFunction) do
|
|
991
991
|
|
992
992
|
def new_instance(scope, t, *args)
|
993
993
|
return args[0] if args.size == 1 && !t.is_a?(Puppet::Pops::Types::PInitType) && t.instance?(args[0])
|
994
|
-
result = assert_type(t, new_function_for_type(t
|
994
|
+
result = assert_type(t, new_function_for_type(t).call(scope, *args))
|
995
995
|
return block_given? ? yield(result) : result
|
996
996
|
end
|
997
997
|
|
998
|
-
def new_function_for_type(t
|
999
|
-
@new_function_cache ||=
|
998
|
+
def new_function_for_type(t)
|
999
|
+
@new_function_cache ||= {}
|
1000
|
+
|
1001
|
+
unless @new_function_cache.key?(t)
|
1002
|
+
@new_function_cache[t] = t.new_function.new(nil, loader)
|
1003
|
+
end
|
1004
|
+
|
1000
1005
|
@new_function_cache[t]
|
1001
1006
|
end
|
1002
1007
|
|
@@ -84,7 +84,7 @@ Puppet::Functions.create_function(:reverse_each) do
|
|
84
84
|
|
85
85
|
def reverse_each(iterable)
|
86
86
|
# produces an Iterable
|
87
|
-
Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).reverse_each
|
87
|
+
Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).reverse_each
|
88
88
|
end
|
89
89
|
|
90
90
|
def reverse_each_block(iterable, &block)
|
@@ -12,15 +12,15 @@
|
|
12
12
|
#
|
13
13
|
# @example Removing trailing space from a String
|
14
14
|
# ```puppet
|
15
|
-
# "hello\n\t".
|
16
|
-
#
|
15
|
+
# " hello\n\t".rstrip()
|
16
|
+
# rstrip(" hello\n\t")
|
17
17
|
# ```
|
18
18
|
# Would both result in `"hello"`
|
19
19
|
#
|
20
20
|
# @example Removing trailing space from strings in an Array
|
21
21
|
# ```puppet
|
22
|
-
# ["hello\n\t", "hi\n\t"].
|
23
|
-
#
|
22
|
+
# [" hello\n\t", " hi\n\t"].rstrip()
|
23
|
+
# rstrip([" hello\n\t", " hi\n\t"])
|
24
24
|
# ```
|
25
25
|
# Would both result in `['hello', 'hi']`
|
26
26
|
#
|
@@ -88,7 +88,7 @@ Puppet::Functions.create_function(:step) do
|
|
88
88
|
|
89
89
|
def step(iterable, step)
|
90
90
|
# produces an Iterable
|
91
|
-
Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable).step(step)
|
91
|
+
Puppet::Pops::Types::Iterable.asserted_iterable(self, iterable, true).step(step)
|
92
92
|
end
|
93
93
|
|
94
94
|
def step_block(iterable, step, &block)
|