puppet 6.16.0-universal-darwin → 6.20.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +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
@@ -23,6 +23,19 @@ describe "Puppet defaults" do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
describe "when setting the :masterport" do
|
27
|
+
it "should also set :serverport to the same value" do
|
28
|
+
Puppet.settings[:masterport] = 3939
|
29
|
+
expect(Puppet.settings[:serverport]).to eq(3939)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not overwrite :serverport if explicitly set" do
|
33
|
+
Puppet.settings[:serverport] = 9000
|
34
|
+
Puppet.settings[:masterport] = 9001
|
35
|
+
expect(Puppet.settings[:serverport]).to eq(9000)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
26
39
|
describe "when setting the :factpath" do
|
27
40
|
it "should add the :factpath to Facter's search paths" do
|
28
41
|
expect(Facter).to receive(:search).with("/my/fact/path")
|
@@ -130,8 +143,7 @@ describe "Puppet defaults" do
|
|
130
143
|
Puppet::Util.withenv( {"PATH" => path }, :windows) do
|
131
144
|
Puppet.settings[:path] = "none" # this causes it to ignore the setting
|
132
145
|
|
133
|
-
|
134
|
-
expect(envhash['Path']).to eq(path)
|
146
|
+
expect(Puppet::Util.get_env('Path')).to eq(path)
|
135
147
|
end
|
136
148
|
end
|
137
149
|
end
|
@@ -150,13 +162,18 @@ describe "Puppet defaults" do
|
|
150
162
|
expect(Puppet.settings[:report_server]).to eq("server")
|
151
163
|
end
|
152
164
|
|
165
|
+
it "should use the default serverport value when report port is unspecified" do
|
166
|
+
Puppet.settings[:serverport] = "1234"
|
167
|
+
expect(Puppet.settings[:report_port]).to eq("1234")
|
168
|
+
end
|
169
|
+
|
153
170
|
it "should use the default masterport value when report port is unspecified" do
|
154
171
|
Puppet.settings[:masterport] = "1234"
|
155
172
|
expect(Puppet.settings[:report_port]).to eq("1234")
|
156
173
|
end
|
157
174
|
|
158
175
|
it "should use report_port when set" do
|
159
|
-
Puppet.settings[:
|
176
|
+
Puppet.settings[:serverport] = "1234"
|
160
177
|
Puppet.settings[:report_port] = "5678"
|
161
178
|
expect(Puppet.settings[:report_port]).to eq("5678")
|
162
179
|
end
|
@@ -2,11 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "directory environments" do
|
4
4
|
let(:args) { ['--configprint', 'modulepath', '--environment', 'direnv'] }
|
5
|
-
let(:puppet)
|
6
|
-
app = Puppet::Application[:apply]
|
7
|
-
allow(app).to receive(:command_line).and_return(double('command_line', :args => []))
|
8
|
-
app
|
9
|
-
end
|
5
|
+
let(:puppet) { Puppet::Application[:apply] }
|
10
6
|
|
11
7
|
context "with a single directory environmentpath" do
|
12
8
|
before(:each) do
|
@@ -17,17 +13,19 @@ describe "directory environments" do
|
|
17
13
|
|
18
14
|
it "config prints the environments modulepath" do
|
19
15
|
Puppet.settings.initialize_global_settings(args)
|
20
|
-
expect
|
21
|
-
|
22
|
-
|
16
|
+
expect {
|
17
|
+
puppet.run
|
18
|
+
}.to exit_with(0)
|
19
|
+
.and output(%r{/direnv/modules}).to_stdout
|
23
20
|
end
|
24
21
|
|
25
22
|
it "config prints the cli --modulepath despite environment" do
|
26
23
|
args << '--modulepath' << '/completely/different'
|
27
24
|
Puppet.settings.initialize_global_settings(args)
|
28
|
-
expect
|
29
|
-
|
30
|
-
|
25
|
+
expect {
|
26
|
+
puppet.run
|
27
|
+
}.to exit_with(0)
|
28
|
+
.and output(%r{/completely/different}).to_stdout
|
31
29
|
end
|
32
30
|
|
33
31
|
it 'given an 8.3 style path on Windows, will config print an expanded path',
|
@@ -41,9 +39,10 @@ describe "directory environments" do
|
|
41
39
|
expect(Puppet[:environmentpath]).to match(/~/)
|
42
40
|
|
43
41
|
Puppet.settings.initialize_global_settings(args)
|
44
|
-
expect
|
45
|
-
|
46
|
-
|
42
|
+
expect {
|
43
|
+
puppet.run
|
44
|
+
}.to exit_with(0)
|
45
|
+
.and output(a_string_matching(expanded)).to_stdout
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
@@ -59,9 +58,10 @@ describe "directory environments" do
|
|
59
58
|
|
60
59
|
it "config prints a directory environment modulepath" do
|
61
60
|
Puppet.settings.initialize_global_settings(args)
|
62
|
-
expect
|
63
|
-
|
64
|
-
|
61
|
+
expect {
|
62
|
+
puppet.run
|
63
|
+
}.to exit_with(0)
|
64
|
+
.and output(%r{otherdirenv/modules}).to_stdout
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -12,7 +12,7 @@ describe "setting hooks" do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
it "accesses correct directory environment settings after initializing a setting with an on_write hook" do
|
15
|
-
expect(Puppet.settings.setting(:
|
15
|
+
expect(Puppet.settings.setting(:strict).call_hook).to eq(:on_write_only)
|
16
16
|
|
17
17
|
File.open(File.join(confdir, "puppet.conf"), "w:UTF-8") do |f|
|
18
18
|
f.puts("environmentpath=#{environmentpath}")
|
@@ -43,9 +43,10 @@ describe Puppet::Node::Facts::Facter do
|
|
43
43
|
Puppet.initialize_settings(['--modulepath', factdir])
|
44
44
|
apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => ['--modulepath', factdir, '-e', 'notify { $custom: }']))
|
45
45
|
|
46
|
-
expect
|
47
|
-
|
48
|
-
|
46
|
+
expect {
|
47
|
+
apply.run
|
48
|
+
}.to exit_with(0)
|
49
|
+
.and output(/defined 'message' as '#{Puppet.version}'/).to_stdout
|
49
50
|
end
|
50
51
|
|
51
52
|
it "should resolve external facts" do
|
@@ -58,9 +59,10 @@ describe Puppet::Node::Facts::Facter do
|
|
58
59
|
Puppet.initialize_settings(['--pluginfactdest', factdir])
|
59
60
|
apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => ['--pluginfactdest', factdir, '-e', 'notify { $foo: }']))
|
60
61
|
|
61
|
-
expect
|
62
|
-
|
63
|
-
|
62
|
+
expect {
|
63
|
+
apply.run
|
64
|
+
}.to exit_with(0)
|
65
|
+
.and output(/defined 'message' as 'bar'/).to_stdout
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
@@ -122,7 +122,7 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
122
122
|
Puppet::Network::HttpPool.http_client_class = klass
|
123
123
|
end
|
124
124
|
|
125
|
-
it "connects using the scheme, host and port from the http instance" do
|
125
|
+
it "connects using the scheme, host and port from the http instance preserving the URL path and query" do
|
126
126
|
request_line = nil
|
127
127
|
|
128
128
|
response_proc = -> (req, res) {
|
@@ -131,20 +131,20 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
131
131
|
|
132
132
|
server.start_server(response_proc: response_proc) do |port|
|
133
133
|
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
134
|
-
path = "http://bogus.example.com:443/foo"
|
134
|
+
path = "http://bogus.example.com:443/foo?q=a"
|
135
135
|
http.get(path)
|
136
136
|
|
137
137
|
if legacy_api
|
138
|
-
# The old API
|
139
|
-
# the host we connected to.
|
140
|
-
expect(request_line).to eq("GET http://bogus.example.com:443/foo HTTP/1.1\r\n")
|
138
|
+
# The old API uses 'absolute-form' and passes the bogus hostname
|
139
|
+
# which isn't the host we connected to.
|
140
|
+
expect(request_line).to eq("GET http://bogus.example.com:443/foo?q=a HTTP/1.1\r\n")
|
141
141
|
else
|
142
|
-
expect(request_line).to eq("GET /foo HTTP/1.1\r\n")
|
142
|
+
expect(request_line).to eq("GET /foo?q=a HTTP/1.1\r\n")
|
143
143
|
end
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
-
it "requires the caller to URL encode the path" do
|
147
|
+
it "requires the caller to URL encode the path and query when using absolute form" do
|
148
148
|
request_line = nil
|
149
149
|
|
150
150
|
response_proc = -> (req, res) {
|
@@ -153,16 +153,33 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
153
153
|
|
154
154
|
server.start_server(response_proc: response_proc) do |port|
|
155
155
|
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
156
|
-
|
156
|
+
params = { 'key' => 'a value' }
|
157
|
+
encoded_url = "https://#{hostname}:#{port}/foo%20bar?q=#{Puppet::Util.uri_query_encode(params.to_json)}"
|
157
158
|
http.get(encoded_url)
|
158
159
|
|
159
160
|
if legacy_api
|
160
161
|
expect(request_line).to eq("GET #{encoded_url} HTTP/1.1\r\n")
|
161
162
|
else
|
162
|
-
expect(request_line).to eq("GET /foo%20bar HTTP/1.1\r\n")
|
163
|
+
expect(request_line).to eq("GET /foo%20bar?q=%7B%22key%22%3A%22a%20value%22%7D HTTP/1.1\r\n")
|
163
164
|
end
|
164
165
|
end
|
165
166
|
end
|
167
|
+
|
168
|
+
it "requires the caller to URL encode the path and query when using a path" do
|
169
|
+
request_line = nil
|
170
|
+
|
171
|
+
response_proc = -> (req, res) {
|
172
|
+
request_line = req.request_line
|
173
|
+
}
|
174
|
+
|
175
|
+
server.start_server(response_proc: response_proc) do |port|
|
176
|
+
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
177
|
+
params = { 'key' => 'a value' }
|
178
|
+
http.get("/foo%20bar?q=#{Puppet::Util.uri_query_encode(params.to_json)}")
|
179
|
+
|
180
|
+
expect(request_line).to eq("GET /foo%20bar?q=%7B%22key%22%3A%22a%20value%22%7D HTTP/1.1\r\n")
|
181
|
+
end
|
182
|
+
end
|
166
183
|
end
|
167
184
|
|
168
185
|
describe Puppet::Network::HTTP::Connection do
|
@@ -79,7 +79,7 @@ describe Puppet::Node::Environment do
|
|
79
79
|
it "should not yield a module with the same name as a defined Bolt project" do
|
80
80
|
project_path = File.join(tmpfile('project'), 'bolt_project')
|
81
81
|
FileUtils.mkdir_p(project_path)
|
82
|
-
project = Struct.new("Project", :name, :path).new('project', project_path)
|
82
|
+
project = Struct.new("Project", :name, :path, :load_as_module?).new('project', project_path, true)
|
83
83
|
|
84
84
|
Puppet.override(bolt_project: project) do
|
85
85
|
base = tmpfile("base")
|
@@ -834,6 +834,17 @@ describe Puppet::Parser::Compiler do
|
|
834
834
|
MANIFEST
|
835
835
|
end.to raise_error(/Foo\[bar\]:\s+parameter 'a' expects a value for key 'd'\s+parameter 'a' unrecognized key 'c'/m)
|
836
836
|
end
|
837
|
+
|
838
|
+
it 'handles Sensitive type in resource array' do
|
839
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
840
|
+
define foo(Sensitive[String] $password) {
|
841
|
+
notify{ "${title}": message => "${password}" }
|
842
|
+
}
|
843
|
+
foo { ['testA', 'testB']: password =>Sensitive('some password') }
|
844
|
+
MANIFEST
|
845
|
+
expect(catalog).to have_resource("Notify[testA]").with_parameter(:message, 'Sensitive [value redacted]')
|
846
|
+
expect(catalog).to have_resource("Notify[testB]").with_parameter(:message, 'Sensitive [value redacted]')
|
847
|
+
end
|
837
848
|
end
|
838
849
|
|
839
850
|
context 'when using typed parameters in class' do
|
@@ -11,12 +11,8 @@ describe Puppet::Resource::TypeCollection do
|
|
11
11
|
@dir = tmpfile("autoload_testing")
|
12
12
|
FileUtils.mkdir_p @dir
|
13
13
|
|
14
|
-
loader =
|
15
|
-
|
16
|
-
allow(loader).to receive(:set_entry)
|
17
|
-
|
18
|
-
loaders = Object.new
|
19
|
-
expect(loaders).to receive(:runtime3_type_loader).at_most(:once).and_return(loader)
|
14
|
+
loader = double('loader', load: nil, set_entry: nil)
|
15
|
+
loaders = double('loaders', runtime3_type_loader: loader)
|
20
16
|
expect(Puppet::Pops::Loaders).to receive(:loaders).at_most(:once).and_return(loaders)
|
21
17
|
|
22
18
|
environment = Puppet::Node::Environment.create(:env, [@dir])
|
@@ -61,7 +61,7 @@ describe Puppet::Transaction do
|
|
61
61
|
|
62
62
|
transaction = Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new)
|
63
63
|
|
64
|
-
expect(resource).not_to receive(:
|
64
|
+
expect(resource).not_to receive(:retrieve)
|
65
65
|
|
66
66
|
transaction.evaluate
|
67
67
|
end
|
@@ -86,7 +86,7 @@ describe Puppet::Transaction do
|
|
86
86
|
|
87
87
|
transaction = Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new)
|
88
88
|
|
89
|
-
expect(resource).not_to receive(:
|
89
|
+
expect(resource).not_to receive(:retrieve)
|
90
90
|
|
91
91
|
transaction.evaluate
|
92
92
|
end
|
@@ -315,16 +315,14 @@ describe Puppet::Transaction do
|
|
315
315
|
file1 = tmpfile("file1")
|
316
316
|
file2 = tmpfile("file2")
|
317
317
|
|
318
|
+
expect(Puppet::FileSystem).to_not be_exist(file2)
|
319
|
+
|
318
320
|
exec1 = Puppet::Type.type(:exec).new(
|
319
321
|
:name => "exec1",
|
320
322
|
:path => ENV["PATH"],
|
321
323
|
:command => touch(file1),
|
322
324
|
)
|
323
325
|
|
324
|
-
allow(exec1).to receive(:eval_generate).and_return(
|
325
|
-
[ Puppet::Type.type(:notify).new(:name => "eval1_notify") ]
|
326
|
-
)
|
327
|
-
|
328
326
|
exec2 = Puppet::Type.type(:exec).new(
|
329
327
|
:name => "exec2",
|
330
328
|
:path => ENV["PATH"],
|
@@ -332,9 +330,6 @@ describe Puppet::Transaction do
|
|
332
330
|
:refreshonly => true,
|
333
331
|
:subscribe => exec1,
|
334
332
|
)
|
335
|
-
allow(exec2).to receive(:eval_generate).and_return(
|
336
|
-
[ Puppet::Type.type(:notify).new(:name => "eval2_notify") ]
|
337
|
-
)
|
338
333
|
|
339
334
|
Puppet[:tags] = "exec"
|
340
335
|
catalog = mk_catalog(exec1, exec2)
|
@@ -1160,7 +1160,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1160
1160
|
source_prefix = Puppet::Util::Platform.windows? ? '/' : ''
|
1161
1161
|
|
1162
1162
|
# the URI can be round-tripped through unescape
|
1163
|
-
expect(
|
1163
|
+
expect(Puppet::Util.uri_unescape(uri_path)).to eq(source_prefix + source)
|
1164
1164
|
# and is properly UTF-8
|
1165
1165
|
expect(uri_path.encoding).to eq (Encoding::UTF_8)
|
1166
1166
|
|
@@ -50,6 +50,28 @@ describe Puppet::Util::Execution, unless: Puppet::Util::Platform.jruby? do
|
|
50
50
|
Puppet::Util::Execution.execute(str, sensitive: true)
|
51
51
|
expect(@logs).to include(an_object_having_attributes(level: :debug, message: "Executing: '[redacted]'"))
|
52
52
|
end
|
53
|
+
|
54
|
+
it "allows stdout and stderr to share a file" do
|
55
|
+
command = "ruby -e '(1..10).each {|i| (i%2==0) ? $stdout.puts(i) : $stderr.puts(i)}'"
|
56
|
+
|
57
|
+
expect(Puppet::Util::Execution.execute(command, :combine => true).split).to match_array([*'1'..'10'])
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns output and set $CHILD_STATUS" do
|
61
|
+
command = "ruby -e 'puts \"foo\"; exit 42'"
|
62
|
+
|
63
|
+
output = Puppet::Util::Execution.execute(command, {:failonfail => false})
|
64
|
+
|
65
|
+
expect(output).to eq("foo\n")
|
66
|
+
expect($CHILD_STATUS.exitstatus).to eq(42)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "raises an error if non-zero exit status is returned" do
|
70
|
+
command = "ruby -e 'exit 43'"
|
71
|
+
|
72
|
+
expect { Puppet::Util::Execution.execute(command) }.to raise_error(Puppet::ExecutionFailure, /Execution of '#{command}' returned 43: /)
|
73
|
+
expect($CHILD_STATUS.exitstatus).to eq(43)
|
74
|
+
end
|
53
75
|
end
|
54
76
|
|
55
77
|
describe "#execute (non-Windows)", :if => !Puppet::Util::Platform.windows? do
|
@@ -33,8 +33,8 @@ describe Puppet::Util::Windows::ADSI::User,
|
|
33
33
|
|
34
34
|
describe '.[]' do
|
35
35
|
it 'should return string attributes as UTF-8' do
|
36
|
-
|
37
|
-
expect(
|
36
|
+
user = Puppet::Util::Windows::ADSI::User.new('Guest')
|
37
|
+
expect(user['Description'].encoding).to eq(Encoding::UTF_8)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -157,7 +157,9 @@ describe Puppet::Util::Windows::ADSI::Group,
|
|
157
157
|
|
158
158
|
# touch the native_object member to have it lazily loaded, so COM objects can be stubbed
|
159
159
|
admins.native_object
|
160
|
-
|
160
|
+
without_partial_double_verification do
|
161
|
+
allow(admins.native_object).to receive(:Members).and_return(members)
|
162
|
+
end
|
161
163
|
|
162
164
|
# well-known NULL SID
|
163
165
|
expect(admins.members[0].sid).to eq('S-1-0-0')
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dir, :if => Puppet::Util::Platform.windows? do
|
4
|
+
it "should always have the PERSONAL constant defined" do
|
5
|
+
expect(described_class).to be_const_defined(:PERSONAL)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should not raise any errors when accessing the PERSONAL constant" do
|
9
|
+
expect { described_class::PERSONAL }.not_to raise_error
|
10
|
+
end
|
11
|
+
end
|
@@ -33,17 +33,7 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "when reading environment variables" do
|
36
|
-
after :each do
|
37
|
-
# spec\integration\test\test_helper_spec.rb calls set_environment_strings
|
38
|
-
# after :all and thus needs access to the real APIs once again
|
39
|
-
allow(Puppet::Util::Windows::Process).to receive(:GetEnvironmentStringsW).and_call_original
|
40
|
-
allow(Puppet::Util::Windows::Process).to receive(:FreeEnvironmentStringsW).and_call_original
|
41
|
-
end
|
42
|
-
|
43
36
|
it "will ignore only keys or values with corrupt byte sequences" do
|
44
|
-
arraydest = []
|
45
|
-
Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(arraydest))
|
46
|
-
|
47
37
|
env_vars = {}
|
48
38
|
|
49
39
|
# Create a UTF-16LE version of the below null separated environment string
|
@@ -61,9 +51,9 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
61
51
|
ptr.put_array_of_uchar(0, env_var_block_bytes)
|
62
52
|
|
63
53
|
# stub the block of memory that the Win32 API would typically return via pointer
|
64
|
-
|
54
|
+
allow(Puppet::Util::Windows::Process).to receive(:GetEnvironmentStringsW).and_return(ptr)
|
65
55
|
# stub out the real API call to free memory, else process crashes
|
66
|
-
|
56
|
+
allow(Puppet::Util::Windows::Process).to receive(:FreeEnvironmentStringsW)
|
67
57
|
|
68
58
|
env_vars = Puppet::Util::Windows::Process.get_environment_strings
|
69
59
|
end
|
@@ -72,39 +62,43 @@ describe "Puppet::Util::Windows::Process", :if => Puppet::Util::Platform.windows
|
|
72
62
|
expect(env_vars).to eq({'a' => 'b', 'c' => 'd', 'f' => 'g'})
|
73
63
|
|
74
64
|
# and Puppet should emit a warning about it
|
75
|
-
expect(
|
76
|
-
expect(
|
65
|
+
expect(@logs.last.level).to eq(:warning)
|
66
|
+
expect(@logs.last.message).to eq("Discarding environment variable e=\uFFFD which contains invalid bytes")
|
77
67
|
end
|
78
68
|
end
|
79
69
|
|
80
70
|
describe "when setting environment variables" do
|
81
|
-
|
82
|
-
begin
|
83
|
-
name = SecureRandom.uuid
|
84
|
-
value = 'foo=bar'
|
71
|
+
let(:name) { SecureRandom.uuid }
|
85
72
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
expect(env[name]).to eq(value)
|
73
|
+
around :each do |example|
|
74
|
+
begin
|
75
|
+
example.run
|
91
76
|
ensure
|
92
77
|
Puppet::Util::Windows::Process.set_environment_variable(name, nil)
|
93
78
|
end
|
94
79
|
end
|
95
80
|
|
96
|
-
it "
|
97
|
-
|
98
|
-
|
81
|
+
it "sets environment variables containing '='" do
|
82
|
+
value = 'foo=bar'
|
83
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, value)
|
84
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
99
85
|
|
100
|
-
|
86
|
+
expect(env[name]).to eq(value)
|
87
|
+
end
|
101
88
|
|
102
|
-
|
89
|
+
it "sets environment variables contains spaces" do
|
90
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, '')
|
91
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
103
92
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
93
|
+
expect(env[name]).to eq('')
|
94
|
+
end
|
95
|
+
|
96
|
+
it "sets environment variables containing UTF-8" do
|
97
|
+
rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
|
98
|
+
Puppet::Util::Windows::Process.set_environment_variable(name, rune_utf8)
|
99
|
+
env = Puppet::Util::Windows::Process.get_environment_strings
|
100
|
+
|
101
|
+
expect(env[name]).to eq(rune_utf8)
|
108
102
|
end
|
109
103
|
end
|
110
104
|
end
|