puppet 6.17.0-x86-mingw32 → 7.1.0-x86-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 +3 -4
- data/Gemfile.lock +32 -30
- data/README.md +2 -3
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +8 -3
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +46 -19
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +116 -162
- data/lib/puppet/environments.rb +72 -62
- 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 +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +10 -2
- data/lib/puppet/face/plugin.rb +5 -8
- 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/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- 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/forge/repository.rb +0 -1
- 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/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +165 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- 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/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +1 -102
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +0 -69
- 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/evaluator_impl.rb +22 -8
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- 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.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- 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/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -52
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- 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/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -120
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +11 -6
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -79
- data/lib/puppet/type/file.rb +7 -9
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +29 -9
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +19 -4
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +53 -4
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +656 -1351
- data/man/man5/puppet.conf.5 +72 -97
- data/man/man8/puppet-agent.8 +6 -3
- data/man/man8/puppet-apply.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- 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 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- 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/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +70 -61
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -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 +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +32 -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 +3 -21
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/security_spec.rb +1 -1
- 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 +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- 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 +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +43 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +26 -32
- data/spec/unit/environments_spec.rb +173 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +16 -4
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -9
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- 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/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- 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/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +2 -266
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -97
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +76 -21
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- 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 +402 -166
- 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 -1
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- 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/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +11 -8
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +1 -2
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +35 -2
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -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 +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +357 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +0 -18
- metadata +84 -261
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -295
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- 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/network/authconfig_spec.rb +0 -256
- 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/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
data/spec/unit/resource_spec.rb
CHANGED
@@ -286,39 +286,6 @@ describe Puppet::Resource do
|
|
286
286
|
Puppet::Parser::AST::Leaf.new(value: value)
|
287
287
|
end
|
288
288
|
|
289
|
-
it "should fail when asked to set default values and it is not a parser resource" do
|
290
|
-
environment.known_resource_types.add(
|
291
|
-
Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("default")})
|
292
|
-
)
|
293
|
-
resource = Puppet::Resource.new("default_param", "name", :environment => environment)
|
294
|
-
expect { resource.set_default_parameters(scope) }.to raise_error(Puppet::DevError)
|
295
|
-
end
|
296
|
-
|
297
|
-
it "should evaluate and set any default values when no value is provided" do
|
298
|
-
environment.known_resource_types.add(
|
299
|
-
Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("a_default_value")})
|
300
|
-
)
|
301
|
-
resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
|
302
|
-
resource.set_default_parameters(scope)
|
303
|
-
expect(resource["a"]).to eq("a_default_value")
|
304
|
-
end
|
305
|
-
|
306
|
-
it "should skip attributes with no default value" do
|
307
|
-
environment.known_resource_types.add(
|
308
|
-
Puppet::Resource::Type.new(:definition, "no_default_param", :arguments => {"a" => ast_leaf("a_default_value")})
|
309
|
-
)
|
310
|
-
resource = Puppet::Parser::Resource.new("no_default_param", "name", :scope => scope)
|
311
|
-
expect { resource.set_default_parameters(scope) }.not_to raise_error
|
312
|
-
end
|
313
|
-
|
314
|
-
it "should return the list of default parameters set" do
|
315
|
-
environment.known_resource_types.add(
|
316
|
-
Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("a_default_value")})
|
317
|
-
)
|
318
|
-
resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
|
319
|
-
expect(resource.set_default_parameters(scope)).to eq(["a"])
|
320
|
-
end
|
321
|
-
|
322
289
|
describe "when the resource type is :hostclass" do
|
323
290
|
let(:environment_name) { "testing env" }
|
324
291
|
let(:fact_values) { { :a => 1 } }
|
@@ -405,7 +372,6 @@ describe Puppet::Resource do
|
|
405
372
|
|
406
373
|
it "should use the value provided" do
|
407
374
|
expect(Puppet::DataBinding.indirection).not_to receive(:find)
|
408
|
-
expect(resource.set_default_parameters(scope)).to eq([])
|
409
375
|
expect(resource[:port]).to eq('8080')
|
410
376
|
end
|
411
377
|
|
@@ -447,28 +413,6 @@ describe Puppet::Resource do
|
|
447
413
|
end
|
448
414
|
end
|
449
415
|
|
450
|
-
describe "when validating all required parameters are present" do
|
451
|
-
it "should be able to validate that all required parameters are present" do
|
452
|
-
environment.known_resource_types.add(
|
453
|
-
Puppet::Resource::Type.new(:definition, "required_param", :arguments => {"a" => nil})
|
454
|
-
)
|
455
|
-
expect { Puppet::Resource.new("required_param", "name", :environment => environment).validate_complete }.to raise_error(Puppet::ParseError)
|
456
|
-
end
|
457
|
-
|
458
|
-
it "should not fail when all required parameters are present" do
|
459
|
-
environment.known_resource_types.add(
|
460
|
-
Puppet::Resource::Type.new(:definition, "no_required_param")
|
461
|
-
)
|
462
|
-
resource = Puppet::Resource.new("no_required_param", "name", :environment => environment)
|
463
|
-
resource["a"] = "meh"
|
464
|
-
expect { resource.validate_complete }.not_to raise_error
|
465
|
-
end
|
466
|
-
|
467
|
-
it "should not validate against builtin types" do
|
468
|
-
expect { Puppet::Resource.new("file", "/bar").validate_complete }.not_to raise_error
|
469
|
-
end
|
470
|
-
end
|
471
|
-
|
472
416
|
describe "when referring to a resource with name canonicalization" do
|
473
417
|
it "should canonicalize its own name" do
|
474
418
|
res = Puppet::Resource.new("file", "/path/")
|
@@ -46,18 +46,16 @@ describe Puppet::Settings::HttpExtraHeadersSetting do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
describe 'raises an error when' do
|
49
|
-
|
50
|
-
# Ruby 2.3 reports the class of these objects as Fixnum, whereas later ruby versions report them as Integer
|
51
49
|
it 'is given an unexpected object type' do
|
52
50
|
expect {
|
53
51
|
subject.munge(65)
|
54
|
-
}.to raise_error(ArgumentError, /^Expected an Array, String, or Hash, got a
|
52
|
+
}.to raise_error(ArgumentError, /^Expected an Array, String, or Hash, got a Integer/)
|
55
53
|
end
|
56
54
|
|
57
55
|
it 'is given an array of unexpected object types' do
|
58
56
|
expect {
|
59
57
|
subject.munge([65, 82])
|
60
|
-
}.to raise_error(ArgumentError, /^Expected an Array or String, got a
|
58
|
+
}.to raise_error(ArgumentError, /^Expected an Array or String, got a Integer/)
|
61
59
|
end
|
62
60
|
end
|
63
61
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'puppet/settings'
|
4
|
+
require 'puppet/settings/integer_setting'
|
5
|
+
|
6
|
+
describe Puppet::Settings::IntegerSetting do
|
7
|
+
let(:setting) { described_class.new(:settings => double('settings'), :desc => "test") }
|
8
|
+
|
9
|
+
it "is of type :integer" do
|
10
|
+
expect(setting.type).to eq(:integer)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when munging the setting" do
|
14
|
+
it "returns the same value if given a positive integer" do
|
15
|
+
expect(setting.munge(5)).to eq(5)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns the same value if given a negative integer" do
|
19
|
+
expect(setting.munge(-25)).to eq(-25)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns an integer if given a valid integer as string" do
|
23
|
+
expect(setting.munge('12')).to eq(12)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns an integer if given a valid negative integer as string" do
|
27
|
+
expect(setting.munge('-12')).to eq(-12)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "returns an integer if given a valid positive integer as string" do
|
31
|
+
expect(setting.munge('+12')).to eq(12)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises if given an invalid value" do
|
35
|
+
expect { setting.munge('a5') }.to raise_error(Puppet::Settings::ValidationError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "raises if given nil" do
|
39
|
+
expect { setting.munge(nil) }.to raise_error(Puppet::Settings::ValidationError)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'puppet/settings'
|
4
|
+
require 'puppet/settings/port_setting'
|
5
|
+
|
6
|
+
describe Puppet::Settings::PortSetting do
|
7
|
+
let(:setting) { described_class.new(:settings => double('settings'), :desc => "test") }
|
8
|
+
|
9
|
+
it "is of type :port" do
|
10
|
+
expect(setting.type).to eq(:port)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "when munging the setting" do
|
14
|
+
it "returns the same value if given a valid port as integer" do
|
15
|
+
expect(setting.munge(5)).to eq(5)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns an integer if given valid port as string" do
|
19
|
+
expect(setting.munge('12')).to eq(12)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "raises if given a negative port number" do
|
23
|
+
expect { setting.munge('-5') }.to raise_error(Puppet::Settings::ValidationError)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "raises if the port number is too high" do
|
27
|
+
expect { setting.munge(65536) }.to raise_error(Puppet::Settings::ValidationError)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -52,10 +52,10 @@ describe Puppet::Settings::PrioritySetting do
|
|
52
52
|
describe "on a Windows-like platform it", :if => Puppet::Util::Platform.windows? do
|
53
53
|
it "parses high, normal, low, and idle priorities" do
|
54
54
|
{
|
55
|
-
'high' => Puppet::
|
56
|
-
'normal' => Puppet::
|
57
|
-
'low' => Puppet::
|
58
|
-
'idle' => Puppet::
|
55
|
+
'high' => Puppet::FFI::Windows::Constants::HIGH_PRIORITY_CLASS,
|
56
|
+
'normal' => Puppet::FFI::Windows::Constants::NORMAL_PRIORITY_CLASS,
|
57
|
+
'low' => Puppet::FFI::Windows::Constants::BELOW_NORMAL_PRIORITY_CLASS,
|
58
|
+
'idle' => Puppet::FFI::Windows::Constants::IDLE_PRIORITY_CLASS
|
59
59
|
}.each do |value, converted_value|
|
60
60
|
expect(setting.munge(value)).to eq(converted_value)
|
61
61
|
end
|
data/spec/unit/settings_spec.rb
CHANGED
@@ -9,7 +9,7 @@ describe Puppet::Settings do
|
|
9
9
|
include Matchers::Resource
|
10
10
|
|
11
11
|
let(:main_config_file_default_location) do
|
12
|
-
File.join(Puppet::Util::RunMode[:
|
12
|
+
File.join(Puppet::Util::RunMode[:server].conf_dir, "puppet.conf")
|
13
13
|
end
|
14
14
|
|
15
15
|
let(:user_config_file_default_location) do
|
@@ -87,16 +87,7 @@ describe Puppet::Settings do
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
|
91
90
|
describe "when initializing application defaults do" do
|
92
|
-
let(:default_values) do
|
93
|
-
values = {}
|
94
|
-
PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
|
95
|
-
values[key] = 'default value'
|
96
|
-
end
|
97
|
-
values
|
98
|
-
end
|
99
|
-
|
100
91
|
before do
|
101
92
|
@settings = Puppet::Settings.new
|
102
93
|
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
@@ -104,7 +95,7 @@ describe Puppet::Settings do
|
|
104
95
|
|
105
96
|
it "should fail if the app defaults hash is missing any required values" do
|
106
97
|
expect {
|
107
|
-
@settings.initialize_app_defaults(
|
98
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.reject { |key, _| key == :confdir })
|
108
99
|
}.to raise_error(Puppet::Settings::SettingsError)
|
109
100
|
end
|
110
101
|
|
@@ -112,16 +103,16 @@ describe Puppet::Settings do
|
|
112
103
|
# case behaviors / uses. However, until that time... we need to make sure that our private run_mode=
|
113
104
|
# setter method gets properly called during app initialization.
|
114
105
|
it "sets the preferred run mode when initializing the app defaults" do
|
115
|
-
@settings.initialize_app_defaults(
|
106
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
|
116
107
|
|
117
|
-
expect(@settings.preferred_run_mode).to eq(:
|
108
|
+
expect(@settings.preferred_run_mode).to eq(:server)
|
118
109
|
end
|
119
110
|
|
120
111
|
it "creates ancestor directories for all required app settings" do
|
121
112
|
# initialize_app_defaults is called in spec_helper, before we even
|
122
113
|
# get here, but call it here to make it explicit what we're trying
|
123
114
|
# to do.
|
124
|
-
@settings.initialize_app_defaults(
|
115
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
125
116
|
|
126
117
|
Puppet::Settings::REQUIRED_APP_SETTINGS.each do |key|
|
127
118
|
expect(File).to exist(File.dirname(Puppet[key]))
|
@@ -148,6 +139,7 @@ describe Puppet::Settings do
|
|
148
139
|
end.to_not raise_error
|
149
140
|
end
|
150
141
|
end
|
142
|
+
|
151
143
|
describe "if no interpolation error" do
|
152
144
|
it "should not raise an error" do
|
153
145
|
hook_values = []
|
@@ -177,6 +169,7 @@ describe Puppet::Settings do
|
|
177
169
|
@settings.send(:call_hooks_deferred_to_application_initialization, options)
|
178
170
|
end.to raise_error(Puppet::Settings::InterpolationError)
|
179
171
|
end
|
172
|
+
|
180
173
|
it "should contain the setting name in error message" do
|
181
174
|
hook_values = []
|
182
175
|
@settings.define_settings(
|
@@ -193,6 +186,7 @@ describe Puppet::Settings do
|
|
193
186
|
end.to raise_error(Puppet::Settings::InterpolationError, /badhook/)
|
194
187
|
end
|
195
188
|
end
|
189
|
+
|
196
190
|
describe "if no interpolation error" do
|
197
191
|
it "should not raise an error" do
|
198
192
|
hook_values = []
|
@@ -326,7 +320,7 @@ describe Puppet::Settings do
|
|
326
320
|
end
|
327
321
|
|
328
322
|
it "should identify configured settings from the specified run mode" do
|
329
|
-
user_config_text = "[
|
323
|
+
user_config_text = "[server]\nmyval = foo"
|
330
324
|
|
331
325
|
allow(Puppet.features).to receive(:root?).and_return(false)
|
332
326
|
expect(Puppet::FileSystem).to receive(:exist?).
|
@@ -337,7 +331,7 @@ describe Puppet::Settings do
|
|
337
331
|
and_return(user_config_text).ordered
|
338
332
|
|
339
333
|
@settings.send(:parse_config_files)
|
340
|
-
expect(@settings.set_by_config?(:myval, nil, :
|
334
|
+
expect(@settings.set_by_config?(:myval, nil, :server)).to be_truthy
|
341
335
|
end
|
342
336
|
|
343
337
|
it "should not identify configured settings from an unspecified run mode" do
|
@@ -382,7 +376,7 @@ describe Puppet::Settings do
|
|
382
376
|
|
383
377
|
it "should clear the cache when the preferred_run_mode is changed" do
|
384
378
|
expect(@settings).to receive(:flush_cache)
|
385
|
-
@settings.preferred_run_mode = :
|
379
|
+
@settings.preferred_run_mode = :server
|
386
380
|
end
|
387
381
|
|
388
382
|
it "should not clear other values when setting getopt-specific values" do
|
@@ -397,122 +391,320 @@ describe Puppet::Settings do
|
|
397
391
|
end
|
398
392
|
|
399
393
|
describe "call_hook" do
|
394
|
+
let(:config_file) { tmpfile('config') }
|
395
|
+
|
396
|
+
before :each do
|
397
|
+
# We can't specify the config file to read from using `Puppet[:config] =`
|
398
|
+
# or pass it as an arg to Puppet.initialize_global_settings, because
|
399
|
+
# both of those will set the value on the `Puppet.settings` instance
|
400
|
+
# which is different from the `@settings` instance created in the test.
|
401
|
+
# Instead, we define a `:config` setting and set its default value to
|
402
|
+
# the `config_file` temp file, and then access the `config_file` within
|
403
|
+
# each test.
|
404
|
+
@settings.define_settings(:main, :config => { :type => :file, :desc => "config file", :default => config_file })
|
405
|
+
end
|
406
|
+
|
400
407
|
Puppet::Settings::StringSetting.available_call_hook_values.each do |val|
|
401
408
|
describe "when :#{val}" do
|
402
409
|
describe "and definition invalid" do
|
403
410
|
it "should raise error if no hook defined" do
|
404
411
|
expect do
|
405
|
-
@settings.define_settings(:section, :
|
412
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val})
|
406
413
|
end.to raise_error(ArgumentError, /no :hook/)
|
407
414
|
end
|
415
|
+
|
408
416
|
it "should include the setting name in the error message" do
|
409
417
|
expect do
|
410
|
-
@settings.define_settings(:section, :
|
411
|
-
end.to raise_error(ArgumentError, /for :
|
418
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val})
|
419
|
+
end.to raise_error(ArgumentError, /for :setting/)
|
412
420
|
end
|
413
421
|
end
|
422
|
+
|
414
423
|
describe "and definition valid" do
|
415
424
|
before(:each) do
|
416
425
|
hook_values = []
|
417
|
-
@settings.define_settings(:section, :
|
426
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => val, :hook => lambda { |v| hook_values << v }})
|
418
427
|
end
|
419
428
|
|
420
429
|
it "should call the hook when value written" do
|
421
|
-
expect(@settings.setting(:
|
422
|
-
@settings[:
|
430
|
+
expect(@settings.setting(:setting)).to receive(:handle).with("something").once
|
431
|
+
@settings[:setting] = "something"
|
423
432
|
end
|
424
433
|
end
|
425
434
|
end
|
426
435
|
end
|
427
436
|
|
428
437
|
it "should have a default value of :on_write_only" do
|
429
|
-
@settings.define_settings(:section, :
|
430
|
-
expect(@settings.setting(:
|
438
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
|
439
|
+
expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
|
431
440
|
end
|
432
441
|
|
433
442
|
describe "when nil" do
|
434
443
|
it "should generate a warning" do
|
435
444
|
expect(Puppet).to receive(:warning)
|
436
|
-
@settings.define_settings(:section, :
|
445
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
|
437
446
|
end
|
447
|
+
|
438
448
|
it "should use default" do
|
439
|
-
@settings.define_settings(:section, :
|
440
|
-
expect(@settings.setting(:
|
449
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => nil, :hook => lambda { |v| hook_values << v }})
|
450
|
+
expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
|
441
451
|
end
|
442
452
|
end
|
443
453
|
|
444
454
|
describe "when invalid" do
|
445
455
|
it "should raise an error" do
|
446
456
|
expect do
|
447
|
-
@settings.define_settings(:section, :
|
457
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => :foo, :hook => lambda { |v| hook_values << v }})
|
448
458
|
end.to raise_error(ArgumentError, /invalid.*call_hook/i)
|
449
459
|
end
|
450
460
|
end
|
451
461
|
|
462
|
+
describe "when :on_write_only" do
|
463
|
+
it "returns its hook type" do
|
464
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |_| }})
|
465
|
+
|
466
|
+
expect(@settings.setting(:setting).call_hook).to eq(:on_write_only)
|
467
|
+
end
|
468
|
+
|
469
|
+
it "should not call the hook at definition" do
|
470
|
+
hook_values = []
|
471
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
|
472
|
+
|
473
|
+
expect(hook_values).to eq(%w[])
|
474
|
+
end
|
475
|
+
|
476
|
+
it "calls the hook when initializing global defaults with the value from the `main` section" do
|
477
|
+
hook_values = []
|
478
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
|
479
|
+
|
480
|
+
File.write(config_file, <<~END)
|
481
|
+
[main]
|
482
|
+
setting=in_main
|
483
|
+
END
|
484
|
+
@settings.initialize_global_settings
|
485
|
+
|
486
|
+
expect(@settings[:setting]).to eq('in_main')
|
487
|
+
expect(hook_values).to eq(%w[in_main])
|
488
|
+
end
|
489
|
+
|
490
|
+
it "doesn't call the hook when initializing app defaults" do
|
491
|
+
hook_values = []
|
492
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
493
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
|
494
|
+
|
495
|
+
File.write(config_file, <<~END)
|
496
|
+
[main]
|
497
|
+
setting=in_main
|
498
|
+
[agent]
|
499
|
+
setting=in_agent
|
500
|
+
END
|
501
|
+
@settings.initialize_global_settings
|
502
|
+
|
503
|
+
hook_values.clear
|
504
|
+
|
505
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
506
|
+
|
507
|
+
expect(@settings[:setting]).to eq('in_main')
|
508
|
+
expect(hook_values).to eq(%w[])
|
509
|
+
end
|
510
|
+
|
511
|
+
it "doesn't call the hook with value from a section that matches the run_mode" do
|
512
|
+
hook_values = []
|
513
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
514
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| hook_values << v }})
|
515
|
+
|
516
|
+
File.write(config_file, <<~END)
|
517
|
+
[main]
|
518
|
+
setting=in_main
|
519
|
+
[agent]
|
520
|
+
setting=in_agent
|
521
|
+
END
|
522
|
+
@settings.initialize_global_settings
|
523
|
+
|
524
|
+
hook_values.clear
|
525
|
+
|
526
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
|
527
|
+
|
528
|
+
expect(@settings[:setting]).to eq('in_agent')
|
529
|
+
expect(hook_values).to eq(%w[])
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
452
533
|
describe "when :on_define_and_write" do
|
453
|
-
it "
|
534
|
+
it "returns its hook type" do
|
535
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |_| }})
|
536
|
+
|
537
|
+
expect(@settings.setting(:setting).call_hook).to eq(:on_define_and_write)
|
538
|
+
end
|
539
|
+
|
540
|
+
it "should call the hook at definition with the default value" do
|
541
|
+
hook_values = []
|
542
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
|
543
|
+
|
544
|
+
expect(hook_values).to eq(%w[yay])
|
545
|
+
end
|
546
|
+
|
547
|
+
it "calls the hook when initializing global defaults with the value from the `main` section" do
|
548
|
+
hook_values = []
|
549
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
|
550
|
+
|
551
|
+
File.write(config_file, <<~END)
|
552
|
+
[main]
|
553
|
+
setting=in_main
|
554
|
+
END
|
555
|
+
@settings.initialize_global_settings
|
556
|
+
|
557
|
+
expect(@settings[:setting]).to eq('in_main')
|
558
|
+
expect(hook_values).to eq(%w[yay in_main])
|
559
|
+
end
|
560
|
+
|
561
|
+
it "doesn't call the hook when initializing app defaults" do
|
562
|
+
hook_values = []
|
563
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
564
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
|
565
|
+
|
566
|
+
File.write(config_file, <<~END)
|
567
|
+
[main]
|
568
|
+
setting=in_main
|
569
|
+
[agent]
|
570
|
+
setting=in_agent
|
571
|
+
END
|
572
|
+
@settings.initialize_global_settings
|
573
|
+
|
574
|
+
hook_values.clear
|
575
|
+
|
576
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
577
|
+
|
578
|
+
expect(@settings[:setting]).to eq('in_main')
|
579
|
+
expect(hook_values).to eq([])
|
580
|
+
end
|
581
|
+
|
582
|
+
it "doesn't call the hook with value from a section that matches the run_mode" do
|
454
583
|
hook_values = []
|
455
|
-
@settings.define_settings(:
|
456
|
-
|
457
|
-
|
584
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
585
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| hook_values << v }})
|
586
|
+
|
587
|
+
File.write(config_file, <<~END)
|
588
|
+
[main]
|
589
|
+
setting=in_main
|
590
|
+
[agent]
|
591
|
+
setting=in_agent
|
592
|
+
END
|
593
|
+
|
594
|
+
@settings.initialize_global_settings
|
595
|
+
|
596
|
+
hook_values.clear
|
597
|
+
|
598
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
|
599
|
+
|
600
|
+
# The correct value is returned
|
601
|
+
expect(@settings[:setting]).to eq('in_agent')
|
602
|
+
|
603
|
+
# but the hook is never called, seems like a bug!
|
604
|
+
expect(hook_values).to eq([])
|
458
605
|
end
|
459
606
|
end
|
460
607
|
|
461
608
|
describe "when :on_initialize_and_write" do
|
462
|
-
|
463
|
-
@
|
464
|
-
|
609
|
+
it "returns its hook type" do
|
610
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |_| }})
|
611
|
+
|
612
|
+
expect(@settings.setting(:setting).call_hook).to eq(:on_initialize_and_write)
|
465
613
|
end
|
466
614
|
|
467
615
|
it "should not call the hook at definition" do
|
468
|
-
|
469
|
-
|
616
|
+
hook_values = []
|
617
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
|
618
|
+
expect(hook_values).to eq([])
|
470
619
|
end
|
471
620
|
|
472
|
-
it "
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
621
|
+
it "calls the hook when initializing global defaults with the value from the `main` section" do
|
622
|
+
hook_values = []
|
623
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
|
624
|
+
|
625
|
+
File.write(config_file, <<~END)
|
626
|
+
[main]
|
627
|
+
setting=in_main
|
628
|
+
END
|
629
|
+
@settings.initialize_global_settings
|
630
|
+
|
631
|
+
expect(@settings[:setting]).to eq('in_main')
|
632
|
+
expect(hook_values).to eq(%w[in_main])
|
633
|
+
end
|
634
|
+
|
635
|
+
it "calls the hook when initializing app defaults" do
|
636
|
+
hook_values = []
|
478
637
|
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
638
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
|
479
639
|
|
480
|
-
|
640
|
+
File.write(config_file, <<~END)
|
641
|
+
[main]
|
642
|
+
setting=in_main
|
643
|
+
[agent]
|
644
|
+
setting=in_agent
|
645
|
+
END
|
646
|
+
@settings.initialize_global_settings
|
481
647
|
|
482
|
-
|
648
|
+
hook_values.clear
|
649
|
+
|
650
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
651
|
+
|
652
|
+
expect(@settings[:setting]).to eq('in_main')
|
653
|
+
expect(hook_values).to eq(%w[in_main])
|
654
|
+
end
|
655
|
+
|
656
|
+
it "calls the hook with the overridden value from a section that matches the run_mode" do
|
657
|
+
hook_values = []
|
658
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
659
|
+
@settings.define_settings(:main, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_initialize_and_write, :hook => lambda { |v| hook_values << v }})
|
660
|
+
|
661
|
+
File.write(config_file, <<~END)
|
662
|
+
[main]
|
663
|
+
setting=in_main
|
664
|
+
[agent]
|
665
|
+
setting=in_agent
|
666
|
+
END
|
667
|
+
@settings.initialize_global_settings
|
668
|
+
|
669
|
+
hook_values.clear
|
670
|
+
|
671
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
|
672
|
+
|
673
|
+
expect(@settings[:setting]).to eq('in_agent')
|
674
|
+
expect(hook_values).to eq(%w[in_agent])
|
483
675
|
end
|
484
676
|
end
|
485
677
|
end
|
486
678
|
|
487
679
|
it "should call passed blocks when values are set" do
|
488
680
|
values = []
|
489
|
-
@settings.define_settings(:section, :
|
681
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
|
490
682
|
expect(values).to eq([])
|
491
683
|
|
492
|
-
@settings[:
|
684
|
+
@settings[:setting] = "something"
|
493
685
|
expect(values).to eq(%w{something})
|
494
686
|
end
|
495
687
|
|
496
688
|
it "should call passed blocks when values are set via the command line" do
|
497
689
|
values = []
|
498
|
-
@settings.define_settings(:section, :
|
690
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :hook => lambda { |v| values << v }})
|
499
691
|
expect(values).to eq([])
|
500
692
|
|
501
|
-
@settings.handlearg("--
|
693
|
+
@settings.handlearg("--setting", "yay")
|
502
694
|
|
503
695
|
expect(values).to eq(%w{yay})
|
504
696
|
end
|
505
697
|
|
506
698
|
it "should provide an option to call passed blocks during definition" do
|
507
699
|
values = []
|
508
|
-
@settings.define_settings(:section, :
|
700
|
+
@settings.define_settings(:section, :setting => {:default => "yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
|
509
701
|
expect(values).to eq(%w{yay})
|
510
702
|
end
|
511
703
|
|
512
704
|
it "should pass the fully interpolated value to the hook when called on definition" do
|
513
705
|
values = []
|
514
706
|
@settings.define_settings(:section, :one => { :default => "test", :desc => "a" })
|
515
|
-
@settings.define_settings(:section, :
|
707
|
+
@settings.define_settings(:section, :setting => {:default => "$one/yay", :desc => "boo", :call_hook => :on_define_and_write, :hook => lambda { |v| values << v }})
|
516
708
|
expect(values).to eq(%w{test/yay})
|
517
709
|
end
|
518
710
|
|
@@ -561,12 +753,8 @@ describe Puppet::Settings do
|
|
561
753
|
end
|
562
754
|
|
563
755
|
it "setting a value to nil causes it to return to its default" do
|
564
|
-
default_values = { :one => "skipped value" }
|
565
|
-
[:logdir, :confdir, :codedir, :vardir].each do |key|
|
566
|
-
default_values[key] = 'default value'
|
567
|
-
end
|
568
756
|
@settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
|
569
|
-
@settings.initialize_app_defaults(
|
757
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:one => "skipped value"))
|
570
758
|
@settings[:one] = "value will disappear"
|
571
759
|
|
572
760
|
@settings[:one] = nil
|
@@ -627,13 +815,14 @@ describe Puppet::Settings do
|
|
627
815
|
end
|
628
816
|
|
629
817
|
describe "when choosing which value to return" do
|
818
|
+
let(:config_file) { tmpfile('settings') }
|
819
|
+
|
630
820
|
before do
|
631
821
|
@settings = Puppet::Settings.new
|
632
822
|
@settings.define_settings :section,
|
633
|
-
:config => { :type => :file, :default =>
|
823
|
+
:config => { :type => :file, :default => config_file, :desc => "a" },
|
634
824
|
:one => { :default => "ONE", :desc => "a" },
|
635
825
|
:two => { :default => "TWO", :desc => "b" }
|
636
|
-
allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
|
637
826
|
@settings.preferred_run_mode = :agent
|
638
827
|
end
|
639
828
|
|
@@ -642,26 +831,44 @@ describe Puppet::Settings do
|
|
642
831
|
end
|
643
832
|
|
644
833
|
it "should return values set on the cli before values set in the configuration file" do
|
645
|
-
|
646
|
-
allow(@settings).to receive(:read_file).and_return(text)
|
834
|
+
File.write(config_file, "[main]\none = fileval\n")
|
647
835
|
@settings.handlearg("--one", "clival")
|
648
|
-
@settings.
|
836
|
+
@settings.initialize_global_settings
|
649
837
|
|
650
838
|
expect(@settings[:one]).to eq("clival")
|
651
839
|
end
|
652
840
|
|
653
841
|
it "should return values set in the mode-specific section before values set in the main section" do
|
654
|
-
|
655
|
-
|
656
|
-
@settings.send(:parse_config_files)
|
842
|
+
File.write(config_file, "[main]\none = mainval\n[agent]\none = modeval\n")
|
843
|
+
@settings.initialize_global_settings
|
657
844
|
|
658
845
|
expect(@settings[:one]).to eq("modeval")
|
659
846
|
end
|
660
847
|
|
848
|
+
[:master, :server].each do |run_mode|
|
849
|
+
describe "when run mode is '#{run_mode}'" do
|
850
|
+
before(:each) { @settings.preferred_run_mode = run_mode }
|
851
|
+
|
852
|
+
it "returns values set in the 'master' section if the 'server' section does not exist" do
|
853
|
+
File.write(config_file, "[main]\none = mainval\n[master]\none = modeval\n")
|
854
|
+
@settings.initialize_global_settings
|
855
|
+
|
856
|
+
expect(@settings[:one]).to eq("modeval")
|
857
|
+
end
|
858
|
+
|
859
|
+
it "prioritizes values set in the 'server' section if set" do
|
860
|
+
File.write(config_file, "[main]\none = mainval\n[server]\none = serverval\n[master]\none = masterval\n")
|
861
|
+
@settings.initialize_global_settings
|
862
|
+
|
863
|
+
expect(@settings[:one]).to eq("serverval")
|
864
|
+
end
|
865
|
+
end
|
866
|
+
end
|
867
|
+
|
661
868
|
it "should not return values outside of its search path" do
|
662
|
-
|
663
|
-
|
664
|
-
|
869
|
+
File.write(config_file, "[other]\none = oval\n")
|
870
|
+
@settings.initialize_global_settings
|
871
|
+
|
665
872
|
expect(@settings[:one]).to eq("ONE")
|
666
873
|
end
|
667
874
|
|
@@ -683,7 +890,7 @@ describe Puppet::Settings do
|
|
683
890
|
expect(Puppet::FileSystem).to receive(:exist?).with(main_config_file_default_location).and_return(false)
|
684
891
|
expect(Puppet::FileSystem).not_to receive(:exist?).with(user_config_file_default_location)
|
685
892
|
|
686
|
-
@settings.
|
893
|
+
@settings.initialize_global_settings
|
687
894
|
end
|
688
895
|
end
|
689
896
|
|
@@ -693,7 +900,7 @@ describe Puppet::Settings do
|
|
693
900
|
|
694
901
|
expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(false)
|
695
902
|
|
696
|
-
@settings.
|
903
|
+
@settings.initialize_global_settings
|
697
904
|
end
|
698
905
|
end
|
699
906
|
|
@@ -702,7 +909,7 @@ describe Puppet::Settings do
|
|
702
909
|
expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(true)
|
703
910
|
expect(@settings).to receive(:read_file).and_raise('Permission denied')
|
704
911
|
|
705
|
-
expect{ @settings.
|
912
|
+
expect{ @settings.initialize_global_settings }.to raise_error(RuntimeError, /Could not load #{user_config_file_default_location}: Permission denied/)
|
706
913
|
end
|
707
914
|
|
708
915
|
it "does not fail if the file is not readable and when `require_config` is false" do
|
@@ -712,7 +919,7 @@ describe Puppet::Settings do
|
|
712
919
|
expect(@settings).not_to receive(:parse_config)
|
713
920
|
expect(Puppet).to receive(:log_exception)
|
714
921
|
|
715
|
-
expect{ @settings.
|
922
|
+
expect{ @settings.initialize_global_settings([], false) }.not_to raise_error
|
716
923
|
end
|
717
924
|
|
718
925
|
it "reads the file if it is readable" do
|
@@ -720,7 +927,7 @@ describe Puppet::Settings do
|
|
720
927
|
expect(@settings).to receive(:read_file).and_return('server = host.string')
|
721
928
|
expect(@settings).to receive(:parse_config)
|
722
929
|
|
723
|
-
@settings.
|
930
|
+
@settings.initialize_global_settings
|
724
931
|
end
|
725
932
|
end
|
726
933
|
|
@@ -729,7 +936,7 @@ describe Puppet::Settings do
|
|
729
936
|
expect(Puppet::FileSystem).to receive(:exist?).with(user_config_file_default_location).and_return(false)
|
730
937
|
expect(@settings).not_to receive(:parse_config)
|
731
938
|
|
732
|
-
@settings.
|
939
|
+
@settings.initialize_global_settings
|
733
940
|
end
|
734
941
|
end
|
735
942
|
end
|
@@ -739,43 +946,41 @@ describe Puppet::Settings do
|
|
739
946
|
@settings = Puppet::Settings.new
|
740
947
|
allow(@settings).to receive(:service_user_available?).and_return(true)
|
741
948
|
allow(@settings).to receive(:service_group_available?).and_return(true)
|
742
|
-
@file =
|
743
|
-
@userconfig = make_absolute("/test/userconfigfile")
|
949
|
+
@file = tmpfile("somefile")
|
744
950
|
@settings.define_settings :section, :user => { :default => "suser", :desc => "doc" }, :group => { :default => "sgroup", :desc => "doc" }
|
745
951
|
@settings.define_settings :section,
|
746
952
|
:config => { :type => :file, :default => @file, :desc => "eh" },
|
747
953
|
:one => { :default => "ONE", :desc => "a" },
|
748
954
|
:two => { :default => "$one TWO", :desc => "b" },
|
749
955
|
:three => { :default => "$one $two THREE", :desc => "c" }
|
750
|
-
|
751
|
-
|
752
|
-
allow(
|
956
|
+
|
957
|
+
userconfig = tmpfile("userconfig")
|
958
|
+
allow(@settings).to receive(:user_config_file).and_return(userconfig)
|
753
959
|
end
|
754
960
|
|
755
961
|
it "should not ignore the report setting" do
|
756
962
|
@settings.define_settings :section, :report => { :default => "false", :desc => "a" }
|
757
|
-
|
758
|
-
myfile = File.expand_path(@file)
|
759
|
-
@settings[:config] = myfile
|
760
|
-
text = <<-CONF
|
963
|
+
File.write(@file, <<~CONF)
|
761
964
|
[puppetd]
|
762
|
-
|
965
|
+
report=true
|
763
966
|
CONF
|
764
|
-
|
765
|
-
|
766
|
-
|
967
|
+
|
968
|
+
@settings.initialize_global_settings
|
969
|
+
|
767
970
|
expect(@settings[:report]).to be_truthy
|
768
971
|
end
|
769
972
|
|
770
973
|
it "should use its current ':config' value for the file to parse" do
|
771
|
-
myfile =
|
772
|
-
|
773
|
-
|
774
|
-
|
974
|
+
myfile = tmpfile('myfile')
|
975
|
+
File.write(myfile, <<~CONF)
|
976
|
+
[main]
|
977
|
+
one=myfile
|
978
|
+
CONF
|
775
979
|
|
776
|
-
|
980
|
+
@settings[:config] = myfile
|
981
|
+
@settings.initialize_global_settings
|
777
982
|
|
778
|
-
@settings.
|
983
|
+
expect(@settings[:one]).to eq('myfile')
|
779
984
|
end
|
780
985
|
|
781
986
|
it "should not try to parse non-existent files" do
|
@@ -783,42 +988,50 @@ describe Puppet::Settings do
|
|
783
988
|
|
784
989
|
expect(File).not_to receive(:read).with(@file)
|
785
990
|
|
786
|
-
@settings.
|
991
|
+
@settings.initialize_global_settings
|
787
992
|
end
|
788
993
|
|
789
994
|
it "should return values set in the configuration file" do
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
995
|
+
File.write(@file, <<~CONF)
|
996
|
+
[main]
|
997
|
+
one = fileval
|
998
|
+
CONF
|
999
|
+
|
1000
|
+
@settings.initialize_global_settings
|
795
1001
|
expect(@settings[:one]).to eq("fileval")
|
796
1002
|
end
|
797
1003
|
|
798
1004
|
#484 - this should probably be in the regression area
|
799
1005
|
it "should not throw an exception on unknown parameters" do
|
800
|
-
|
801
|
-
|
802
|
-
|
1006
|
+
File.write(@file, <<~CONF)
|
1007
|
+
[main]
|
1008
|
+
nosuchparam = mval
|
1009
|
+
CONF
|
1010
|
+
|
1011
|
+
expect { @settings.initialize_global_settings }.not_to raise_error
|
803
1012
|
end
|
804
1013
|
|
805
1014
|
it "should convert booleans in the configuration file into Ruby booleans" do
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
1015
|
+
File.write(@file, <<~CONF)
|
1016
|
+
[main]
|
1017
|
+
one = true
|
1018
|
+
two = false
|
1019
|
+
CONF
|
1020
|
+
|
1021
|
+
@settings.initialize_global_settings
|
1022
|
+
|
812
1023
|
expect(@settings[:one]).to eq(true)
|
813
1024
|
expect(@settings[:two]).to eq(false)
|
814
1025
|
end
|
815
1026
|
|
816
1027
|
it "should convert integers in the configuration file into Ruby Integers" do
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
1028
|
+
File.write(@file, <<~CONF)
|
1029
|
+
[main]
|
1030
|
+
one = 65
|
1031
|
+
CONF
|
1032
|
+
|
1033
|
+
@settings.initialize_global_settings
|
1034
|
+
|
822
1035
|
expect(@settings[:one]).to eq(65)
|
823
1036
|
end
|
824
1037
|
|
@@ -849,57 +1062,186 @@ describe Puppet::Settings do
|
|
849
1062
|
end
|
850
1063
|
|
851
1064
|
it "should support loading metadata (owner, group, or mode) from a run_mode section in the configuration file" do
|
852
|
-
default_values = {}
|
853
|
-
PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.keys.each do |key|
|
854
|
-
default_values[key] = 'default value'
|
855
|
-
end
|
856
1065
|
@settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
|
857
|
-
@settings.define_settings :
|
1066
|
+
@settings.define_settings :server, :myfile => { :type => :file, :default => make_absolute("/myfile"), :desc => "a" }
|
858
1067
|
|
859
1068
|
otherfile = make_absolute("/other/file")
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
1069
|
+
File.write(@file, <<~CONF)
|
1070
|
+
[server]
|
1071
|
+
myfile = #{otherfile} {mode = 664}
|
1072
|
+
CONF
|
864
1073
|
|
865
1074
|
# will start initialization as user
|
866
1075
|
expect(@settings.preferred_run_mode).to eq(:user)
|
867
|
-
@settings.
|
1076
|
+
@settings.initialize_global_settings
|
868
1077
|
|
869
|
-
# change app run_mode to
|
870
|
-
@settings.initialize_app_defaults(
|
871
|
-
expect(@settings.preferred_run_mode).to eq(:
|
1078
|
+
# change app run_mode to server
|
1079
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
|
1080
|
+
expect(@settings.preferred_run_mode).to eq(:server)
|
872
1081
|
|
873
1082
|
# initializing the app should have reloaded the metadata based on run_mode
|
874
1083
|
expect(@settings[:myfile]).to eq(otherfile)
|
875
1084
|
expect(metadata(@settings.setting(:myfile))).to eq({:mode => "664"})
|
876
1085
|
end
|
877
1086
|
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
1087
|
+
context "when setting serverport and masterport" do
|
1088
|
+
before(:each) do
|
1089
|
+
@settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
|
1090
|
+
@settings.define_settings :server, :masterport => { :desc => "a", :default => 1000 }
|
1091
|
+
@settings.define_settings :server, :serverport => { :desc => "a", :default => 1000 }
|
1092
|
+
@settings.define_settings :server, :ca_port => { :desc => "a", :default => "$serverport" }
|
1093
|
+
@settings.define_settings :server, :report_port => { :desc => "a", :default => "$serverport" }
|
1094
|
+
|
1095
|
+
config_file = tmpfile('config')
|
1096
|
+
@settings[:config] = config_file
|
1097
|
+
File.write(config_file, text)
|
1098
|
+
|
1099
|
+
@settings.initialize_global_settings
|
1100
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :agent))
|
1101
|
+
expect(@settings.preferred_run_mode).to eq(:agent)
|
1102
|
+
end
|
1103
|
+
|
1104
|
+
context 'with serverport in main and masterport in agent' do
|
1105
|
+
let(:text) do
|
1106
|
+
"[main]
|
1107
|
+
serverport = 444
|
1108
|
+
[agent]
|
1109
|
+
masterport = 445
|
1110
|
+
"
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1114
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1115
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1116
|
+
end
|
1117
|
+
|
1118
|
+
context 'with serverport and masterport in main' do
|
1119
|
+
let(:text) do
|
1120
|
+
"[main]
|
1121
|
+
serverport = 445
|
1122
|
+
masterport = 444
|
1123
|
+
"
|
1124
|
+
end
|
1125
|
+
|
1126
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1127
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1128
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
context 'with serverport and masterport in agent' do
|
1132
|
+
let(:text) do
|
1133
|
+
"[agent]
|
1134
|
+
serverport = 445
|
1135
|
+
masterport = 444
|
1136
|
+
"
|
1137
|
+
end
|
1138
|
+
|
1139
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1140
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1141
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1142
|
+
end
|
1143
|
+
|
1144
|
+
context 'with both serverport and masterport in main and agent' do
|
1145
|
+
let(:text) do
|
1146
|
+
"[main]
|
1147
|
+
serverport = 447
|
1148
|
+
masterport = 442
|
1149
|
+
[agent]
|
1150
|
+
serverport = 445
|
1151
|
+
masterport = 444
|
1152
|
+
"
|
1153
|
+
end
|
1154
|
+
|
1155
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1156
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1157
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1158
|
+
end
|
1159
|
+
|
1160
|
+
context 'with serverport in agent and masterport in main' do
|
1161
|
+
let(:text) do
|
1162
|
+
"[agent]
|
1163
|
+
serverport = 444
|
1164
|
+
[main]
|
1165
|
+
masterport = 445
|
1166
|
+
"
|
1167
|
+
end
|
1168
|
+
|
1169
|
+
it { expect(@settings[:serverport]).to eq(444) }
|
1170
|
+
it { expect(@settings[:ca_port]).to eq("444") }
|
1171
|
+
it { expect(@settings[:report_port]).to eq("444") }
|
1172
|
+
end
|
1173
|
+
|
1174
|
+
context 'with masterport in main' do
|
1175
|
+
let(:text) do
|
1176
|
+
"[main]
|
1177
|
+
masterport = 445
|
1178
|
+
"
|
1179
|
+
end
|
1180
|
+
|
1181
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1182
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1183
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
882
1184
|
end
|
883
1185
|
|
1186
|
+
context 'with masterport in agent' do
|
1187
|
+
let(:text) do
|
1188
|
+
"[agent]
|
1189
|
+
masterport = 445
|
1190
|
+
"
|
1191
|
+
end
|
1192
|
+
|
1193
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1194
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1195
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1196
|
+
end
|
1197
|
+
|
1198
|
+
context 'with serverport in agent' do
|
1199
|
+
let(:text) do
|
1200
|
+
"[agent]
|
1201
|
+
serverport = 445
|
1202
|
+
"
|
1203
|
+
end
|
1204
|
+
|
1205
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1206
|
+
it { expect(@settings[:masterport]).to eq(445) }
|
1207
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1208
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1209
|
+
end
|
1210
|
+
|
1211
|
+
context 'with serverport in main' do
|
1212
|
+
let(:text) do
|
1213
|
+
"[main]
|
1214
|
+
serverport = 445
|
1215
|
+
"
|
1216
|
+
end
|
1217
|
+
|
1218
|
+
it { expect(@settings[:serverport]).to eq(445) }
|
1219
|
+
it { expect(@settings[:masterport]).to eq(445) }
|
1220
|
+
it { expect(@settings[:ca_port]).to eq("445") }
|
1221
|
+
it { expect(@settings[:report_port]).to eq("445") }
|
1222
|
+
end
|
1223
|
+
end
|
1224
|
+
|
1225
|
+
it "does not use the metadata from the same setting in a different section" do
|
884
1226
|
file = make_absolute("/file")
|
885
1227
|
default_mode = "0600"
|
886
1228
|
@settings.define_settings :main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS
|
887
|
-
@settings.define_settings :
|
1229
|
+
@settings.define_settings :server, :myfile => { :type => :file, :default => file, :desc => "a", :mode => default_mode }
|
888
1230
|
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
1231
|
+
File.write(@file, <<~CONF)
|
1232
|
+
[server]
|
1233
|
+
myfile = #{file}/foo
|
1234
|
+
[agent]
|
1235
|
+
myfile = #{file} {mode = 664}
|
1236
|
+
CONF
|
895
1237
|
|
896
1238
|
# will start initialization as user
|
897
1239
|
expect(@settings.preferred_run_mode).to eq(:user)
|
898
|
-
@settings.
|
1240
|
+
@settings.initialize_global_settings
|
899
1241
|
|
900
|
-
# change app run_mode to
|
901
|
-
@settings.initialize_app_defaults(
|
902
|
-
expect(@settings.preferred_run_mode).to eq(:
|
1242
|
+
# change app run_mode to server
|
1243
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:run_mode => :server))
|
1244
|
+
expect(@settings.preferred_run_mode).to eq(:server)
|
903
1245
|
|
904
1246
|
# initializing the app should have reloaded the metadata based on run_mode
|
905
1247
|
expect(@settings[:myfile]).to eq("#{file}/foo")
|
@@ -910,11 +1252,12 @@ describe Puppet::Settings do
|
|
910
1252
|
values = []
|
911
1253
|
@settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
|
912
1254
|
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
@settings.
|
1255
|
+
File.write(@file, <<~CONF)
|
1256
|
+
[main]
|
1257
|
+
mysetting = setval
|
1258
|
+
CONF
|
1259
|
+
@settings.initialize_global_settings
|
1260
|
+
|
918
1261
|
expect(values).to eq(["setval"])
|
919
1262
|
end
|
920
1263
|
|
@@ -922,13 +1265,14 @@ describe Puppet::Settings do
|
|
922
1265
|
values = []
|
923
1266
|
@settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
|
924
1267
|
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
@settings.
|
1268
|
+
File.write(@file, <<~CONF)
|
1269
|
+
[user]
|
1270
|
+
mysetting = setval
|
1271
|
+
[main]
|
1272
|
+
mysetting = other
|
1273
|
+
CONF
|
1274
|
+
@settings.initialize_global_settings
|
1275
|
+
|
932
1276
|
expect(values).to eq(["setval"])
|
933
1277
|
end
|
934
1278
|
|
@@ -937,11 +1281,12 @@ describe Puppet::Settings do
|
|
937
1281
|
@settings.define_settings :section, :base => {:default => "yay", :desc => "a", :hook => proc { |v| values << v }}
|
938
1282
|
@settings.define_settings :section, :mysetting => {:default => "defval", :desc => "a", :hook => proc { |v| values << v }}
|
939
1283
|
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
@settings.
|
1284
|
+
File.write(@file, <<~CONF)
|
1285
|
+
[main]
|
1286
|
+
mysetting = $base/setval
|
1287
|
+
CONF
|
1288
|
+
@settings.initialize_global_settings
|
1289
|
+
|
945
1290
|
expect(values).to eq(["yay/setval"])
|
946
1291
|
end
|
947
1292
|
|
@@ -951,23 +1296,25 @@ describe Puppet::Settings do
|
|
951
1296
|
:hook => proc { |v| hook_invoked = true },
|
952
1297
|
:call_hook => :on_initialize_and_write, }
|
953
1298
|
|
1299
|
+
# This test relies on `confdir` defaulting to nil which causes the default
|
1300
|
+
# value of `deferred=$confdir/goose` to raise an interpolation error during
|
1301
|
+
# global initialization, and the hook to be skipped
|
954
1302
|
@settings.define_settings(:main,
|
955
|
-
|
956
|
-
|
957
|
-
:codedir => { :type => :directory, :default => nil, :desc => "codedir" },
|
958
|
-
:vardir => { :type => :directory, :default => nil, :desc => "vardir" })
|
1303
|
+
PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS.merge(
|
1304
|
+
:confdir => { :type => :directory, :default => nil, :desc => "confdir" }))
|
959
1305
|
|
960
|
-
|
961
|
-
|
962
|
-
|
1306
|
+
File.write(@file, <<~EOD)
|
1307
|
+
[main]
|
1308
|
+
deferred=$confdir/goose
|
963
1309
|
EOD
|
964
1310
|
|
965
|
-
allow(@settings).to receive(:read_file).and_return(text)
|
966
1311
|
@settings.initialize_global_settings
|
967
1312
|
|
968
1313
|
expect(hook_invoked).to be_falsey
|
969
1314
|
|
970
|
-
|
1315
|
+
# And now that we initialize app defaults with `confdir`, then `deferred`
|
1316
|
+
# can be interpolated and its hook called
|
1317
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:confdir => '/path/to/confdir'))
|
971
1318
|
|
972
1319
|
expect(hook_invoked).to be_truthy
|
973
1320
|
expect(@settings[:deferred]).to eq(File.expand_path('/path/to/confdir/goose'))
|
@@ -976,45 +1323,33 @@ describe Puppet::Settings do
|
|
976
1323
|
it "does not require the value for a setting without a hook to resolve during global setup" do
|
977
1324
|
@settings.define_settings :section, :can_cause_problems => {:desc => '' }
|
978
1325
|
|
979
|
-
@settings.define_settings(:main,
|
980
|
-
:logdir => { :type => :directory, :default => nil, :desc => "logdir" },
|
981
|
-
:confdir => { :type => :directory, :default => nil, :desc => "confdir" },
|
982
|
-
:codedir => { :type => :directory, :default => nil, :desc => "codedir" },
|
983
|
-
:vardir => { :type => :directory, :default => nil, :desc => "vardir" })
|
1326
|
+
@settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
984
1327
|
|
985
|
-
|
1328
|
+
File.write(@file, <<~EOD)
|
986
1329
|
[main]
|
987
1330
|
can_cause_problems=$confdir/goose
|
988
1331
|
EOD
|
989
1332
|
|
990
|
-
allow(@settings).to receive(:read_file).and_return(text)
|
991
1333
|
@settings.initialize_global_settings
|
992
|
-
@settings.initialize_app_defaults(:
|
1334
|
+
@settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES.merge(:confdir => '/path/to/confdir'))
|
993
1335
|
|
994
|
-
expect(@settings[:can_cause_problems]).to eq(
|
1336
|
+
expect(@settings[:can_cause_problems]).to eq('/path/to/confdir/goose')
|
995
1337
|
end
|
996
1338
|
|
997
1339
|
it "should allow empty values" do
|
998
1340
|
@settings.define_settings :section, :myarg => { :default => "myfile", :desc => "a" }
|
999
1341
|
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
@settings.
|
1342
|
+
File.write(@file, <<~CONF)
|
1343
|
+
[main]
|
1344
|
+
myarg =
|
1345
|
+
CONF
|
1346
|
+
@settings.initialize_global_settings
|
1347
|
+
|
1005
1348
|
expect(@settings[:myarg]).to eq("")
|
1006
1349
|
end
|
1007
1350
|
|
1008
1351
|
describe "deprecations" do
|
1009
1352
|
let(:settings) { Puppet::Settings.new }
|
1010
|
-
let(:app_defaults) {
|
1011
|
-
{
|
1012
|
-
:logdir => "/dev/null",
|
1013
|
-
:confdir => "/dev/null",
|
1014
|
-
:codedir => "/dev/null",
|
1015
|
-
:vardir => "/dev/null",
|
1016
|
-
}
|
1017
|
-
}
|
1018
1353
|
|
1019
1354
|
def assert_accessing_setting_is_deprecated(settings, setting)
|
1020
1355
|
expect(Puppet).to receive(:deprecation_warning).with("Accessing '#{setting}' as a setting is deprecated.")
|
@@ -1024,12 +1359,7 @@ describe Puppet::Settings do
|
|
1024
1359
|
end
|
1025
1360
|
|
1026
1361
|
before(:each) do
|
1027
|
-
settings.define_settings(:main,
|
1028
|
-
:logdir => { :default => 'a', :desc => 'a' },
|
1029
|
-
:confdir => { :default => 'b', :desc => 'b' },
|
1030
|
-
:vardir => { :default => 'c', :desc => 'c' },
|
1031
|
-
:codedir => { :default => 'd', :desc => 'd' },
|
1032
|
-
})
|
1362
|
+
settings.define_settings(:main, PuppetSpec::Settings::TEST_APP_DEFAULT_DEFINITIONS)
|
1033
1363
|
end
|
1034
1364
|
|
1035
1365
|
context "complete" do
|
@@ -1050,7 +1380,7 @@ describe Puppet::Settings do
|
|
1050
1380
|
completely_deprecated_settings.parse_config(<<-CONF)
|
1051
1381
|
completely_deprecated_setting='should warn'
|
1052
1382
|
CONF
|
1053
|
-
completely_deprecated_settings.initialize_app_defaults(
|
1383
|
+
completely_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
1054
1384
|
end
|
1055
1385
|
|
1056
1386
|
it "warns when set on the commandline" do
|
@@ -1058,7 +1388,7 @@ describe Puppet::Settings do
|
|
1058
1388
|
|
1059
1389
|
args = ["--completely_deprecated_setting", "/some/value"]
|
1060
1390
|
completely_deprecated_settings.send(:parse_global_options, args)
|
1061
|
-
completely_deprecated_settings.initialize_app_defaults(
|
1391
|
+
completely_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
1062
1392
|
end
|
1063
1393
|
|
1064
1394
|
it "warns when set in code" do
|
@@ -1083,7 +1413,7 @@ describe Puppet::Settings do
|
|
1083
1413
|
partially_deprecated_settings.parse_config(<<-CONF)
|
1084
1414
|
partially_deprecated_setting='should warn'
|
1085
1415
|
CONF
|
1086
|
-
partially_deprecated_settings.initialize_app_defaults(
|
1416
|
+
partially_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
1087
1417
|
end
|
1088
1418
|
|
1089
1419
|
it "does not warn when manifest is set on command line" do
|
@@ -1091,7 +1421,7 @@ describe Puppet::Settings do
|
|
1091
1421
|
|
1092
1422
|
args = ["--partially_deprecated_setting", "/some/value"]
|
1093
1423
|
partially_deprecated_settings.send(:parse_global_options, args)
|
1094
|
-
partially_deprecated_settings.initialize_app_defaults(
|
1424
|
+
partially_deprecated_settings.initialize_app_defaults(PuppetSpec::Settings::TEST_APP_DEFAULT_VALUES)
|
1095
1425
|
end
|
1096
1426
|
|
1097
1427
|
it "warns when set in code" do
|
@@ -1184,23 +1514,24 @@ describe Puppet::Settings do
|
|
1184
1514
|
|
1185
1515
|
describe "when reparsing its configuration" do
|
1186
1516
|
before do
|
1187
|
-
@file =
|
1188
|
-
@
|
1517
|
+
@file = tmpfile("testfile")
|
1518
|
+
Puppet::FileSystem.touch(@file)
|
1519
|
+
|
1189
1520
|
@settings = Puppet::Settings.new
|
1190
1521
|
@settings.define_settings :section,
|
1191
1522
|
:config => { :type => :file, :default => @file, :desc => "a" },
|
1192
1523
|
:one => { :default => "ONE", :desc => "a" },
|
1193
1524
|
:two => { :default => "$one TWO", :desc => "b" },
|
1194
1525
|
:three => { :default => "$one $two THREE", :desc => "c" }
|
1195
|
-
|
1196
|
-
|
1197
|
-
allow(@settings).to receive(:user_config_file).and_return(
|
1526
|
+
|
1527
|
+
userconfig = tmpfile("userconfig")
|
1528
|
+
allow(@settings).to receive(:user_config_file).and_return(userconfig)
|
1198
1529
|
end
|
1199
1530
|
|
1200
1531
|
it "does not create the WatchedFile instance and should not parse if the file does not exist" do
|
1201
|
-
|
1202
|
-
expect(Puppet::Util::WatchedFile).not_to receive(:new)
|
1532
|
+
Puppet::FileSystem.unlink(@file)
|
1203
1533
|
|
1534
|
+
expect(Puppet::Util::WatchedFile).not_to receive(:new)
|
1204
1535
|
expect(@settings).not_to receive(:parse_config_files)
|
1205
1536
|
|
1206
1537
|
@settings.reparse_config_files
|
@@ -1239,8 +1570,8 @@ describe Puppet::Settings do
|
|
1239
1570
|
@settings[:one] = "init"
|
1240
1571
|
|
1241
1572
|
# Now replace the value
|
1242
|
-
|
1243
|
-
|
1573
|
+
File.write(@file, "[main]\none = disk-replace\n")
|
1574
|
+
|
1244
1575
|
@settings.reparse_config_files
|
1245
1576
|
expect(@settings[:one]).to eq("disk-replace")
|
1246
1577
|
end
|
@@ -1249,23 +1580,20 @@ describe Puppet::Settings do
|
|
1249
1580
|
it "should retain parameters set by cli when configuration files are reparsed" do
|
1250
1581
|
@settings.handlearg("--one", "clival")
|
1251
1582
|
|
1252
|
-
|
1253
|
-
|
1254
|
-
@settings.send(:parse_config_files)
|
1583
|
+
File.write(@file, "[main]\none = on-disk\n")
|
1584
|
+
@settings.initialize_global_settings
|
1255
1585
|
|
1256
1586
|
expect(@settings[:one]).to eq("clival")
|
1257
1587
|
end
|
1258
1588
|
|
1259
1589
|
it "should remove in-memory values that are no longer set in the file" do
|
1260
1590
|
# Init the value
|
1261
|
-
|
1262
|
-
expect(@settings).to receive(:read_file).and_return(text)
|
1591
|
+
File.write(@file, "[main]\none = disk-init\n")
|
1263
1592
|
@settings.send(:parse_config_files)
|
1264
1593
|
expect(@settings[:one]).to eq("disk-init")
|
1265
1594
|
|
1266
1595
|
# Now replace the value
|
1267
|
-
|
1268
|
-
expect(@settings).to receive(:read_file).and_return(text)
|
1596
|
+
File.write(@file, "[main]\ntwo = disk-replace\n")
|
1269
1597
|
@settings.send(:parse_config_files)
|
1270
1598
|
|
1271
1599
|
# The originally-overridden value should be replaced with the default
|
@@ -1277,14 +1605,12 @@ describe Puppet::Settings do
|
|
1277
1605
|
|
1278
1606
|
it "should retain in-memory values if the file has a syntax error" do
|
1279
1607
|
# Init the value
|
1280
|
-
|
1281
|
-
|
1282
|
-
@settings.send(:parse_config_files)
|
1608
|
+
File.write(@file, "[main]\none = initial-value\n")
|
1609
|
+
@settings.initialize_global_settings
|
1283
1610
|
expect(@settings[:one]).to eq("initial-value")
|
1284
1611
|
|
1285
1612
|
# Now replace the value with something bogus
|
1286
|
-
|
1287
|
-
expect(@settings).to receive(:read_file).with(@file).and_return(text)
|
1613
|
+
File.write(@file, "[main]\nkenny = killed-by-what-follows\n1 is 2, blah blah florp\n")
|
1288
1614
|
@settings.send(:parse_config_files)
|
1289
1615
|
|
1290
1616
|
# The originally-overridden value should not be replaced with the default
|
@@ -1296,46 +1622,49 @@ describe Puppet::Settings do
|
|
1296
1622
|
end
|
1297
1623
|
|
1298
1624
|
it "should provide a method for creating a catalog of resources from its configuration" do
|
1299
|
-
expect(Puppet::Settings.new).to
|
1625
|
+
expect(Puppet::Settings.new.to_catalog).to be_an_instance_of(Puppet::Resource::Catalog)
|
1300
1626
|
end
|
1301
1627
|
|
1302
1628
|
describe "when creating a catalog" do
|
1629
|
+
let(:maindir) { make_absolute('/maindir') }
|
1630
|
+
let(:seconddir) { make_absolute('/seconddir') }
|
1631
|
+
let(:otherdir) { make_absolute('/otherdir') }
|
1632
|
+
|
1303
1633
|
before do
|
1304
1634
|
@settings = Puppet::Settings.new
|
1305
1635
|
allow(@settings).to receive(:service_user_available?).and_return(true)
|
1306
|
-
@prefix = Puppet.features.posix? ? "" : "C:"
|
1307
1636
|
end
|
1308
1637
|
|
1309
1638
|
it "should add all file resources to the catalog if no sections have been specified" do
|
1310
1639
|
@settings.define_settings :main,
|
1311
|
-
:maindir => { :type => :directory, :default =>
|
1312
|
-
:seconddir => { :type => :directory, :default =>
|
1640
|
+
:maindir => { :type => :directory, :default => maindir, :desc => "a"},
|
1641
|
+
:seconddir => { :type => :directory, :default => seconddir, :desc => "a"}
|
1313
1642
|
@settings.define_settings :other,
|
1314
|
-
:otherdir => { :type => :directory, :default =>
|
1643
|
+
:otherdir => { :type => :directory, :default => otherdir, :desc => "a" }
|
1315
1644
|
|
1316
1645
|
catalog = @settings.to_catalog
|
1317
1646
|
|
1318
|
-
[
|
1647
|
+
[maindir, seconddir, otherdir].each do |path|
|
1319
1648
|
expect(catalog.resource(:file, path)).to be_instance_of(Puppet::Resource)
|
1320
1649
|
end
|
1321
1650
|
end
|
1322
1651
|
|
1323
1652
|
it "should add only files in the specified sections if section names are provided" do
|
1324
|
-
@settings.define_settings :main, :maindir => { :type => :directory, :default =>
|
1325
|
-
@settings.define_settings :other, :otherdir => { :type => :directory, :default =>
|
1653
|
+
@settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
|
1654
|
+
@settings.define_settings :other, :otherdir => { :type => :directory, :default => otherdir, :desc => "a" }
|
1326
1655
|
catalog = @settings.to_catalog(:main)
|
1327
|
-
expect(catalog.resource(:file,
|
1328
|
-
expect(catalog.resource(:file,
|
1656
|
+
expect(catalog.resource(:file, otherdir)).to be_nil
|
1657
|
+
expect(catalog.resource(:file, maindir)).to be_instance_of(Puppet::Resource)
|
1329
1658
|
end
|
1330
1659
|
|
1331
1660
|
it "should not try to add the same file twice" do
|
1332
|
-
@settings.define_settings :main, :maindir => { :type => :directory, :default =>
|
1333
|
-
@settings.define_settings :other, :otherdir => { :type => :directory, :default =>
|
1661
|
+
@settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
|
1662
|
+
@settings.define_settings :other, :otherdir => { :type => :directory, :default => maindir, :desc => "a" }
|
1334
1663
|
expect { @settings.to_catalog }.not_to raise_error
|
1335
1664
|
end
|
1336
1665
|
|
1337
1666
|
it "should ignore files whose :to_resource method returns nil" do
|
1338
|
-
@settings.define_settings :main, :maindir => { :type => :directory, :default =>
|
1667
|
+
@settings.define_settings :main, :maindir => { :type => :directory, :default => maindir, :desc => "a" }
|
1339
1668
|
expect(@settings.setting(:maindir)).to receive(:to_resource).and_return(nil)
|
1340
1669
|
|
1341
1670
|
expect_any_instance_of(Puppet::Resource::Catalog).not_to receive(:add_resource)
|
@@ -1365,6 +1694,7 @@ describe Puppet::Settings do
|
|
1365
1694
|
describe "adding default directory environment to the catalog" do
|
1366
1695
|
let(:tmpenv) { tmpdir("envs") }
|
1367
1696
|
let(:default_path) { "#{tmpenv}/environments" }
|
1697
|
+
|
1368
1698
|
before(:each) do
|
1369
1699
|
@settings.define_settings :main,
|
1370
1700
|
:environment => { :default => "production", :desc => "env"},
|
@@ -1654,6 +1984,23 @@ describe Puppet::Settings do
|
|
1654
1984
|
end
|
1655
1985
|
end
|
1656
1986
|
|
1987
|
+
describe 'when settings_catalog is disabled' do
|
1988
|
+
let(:settings) { Puppet::Settings.new }
|
1989
|
+
before do
|
1990
|
+
allow(Puppet).to receive(:[]).with(:settings_catalog).and_return(false)
|
1991
|
+
end
|
1992
|
+
|
1993
|
+
it 'does not compile and apply settings catalog' do
|
1994
|
+
expect(settings).not_to receive(:to_catalog)
|
1995
|
+
settings.use(:main)
|
1996
|
+
end
|
1997
|
+
|
1998
|
+
it 'logs a message that settings catalog is skipped' do
|
1999
|
+
expect(Puppet).to receive(:debug).with('Skipping settings catalog for sections main')
|
2000
|
+
settings.use(:main)
|
2001
|
+
end
|
2002
|
+
end
|
2003
|
+
|
1657
2004
|
describe "when dealing with printing configs" do
|
1658
2005
|
before do
|
1659
2006
|
@settings = Puppet::Settings.new
|
@@ -1900,18 +2247,18 @@ describe Puppet::Settings do
|
|
1900
2247
|
end
|
1901
2248
|
|
1902
2249
|
it "should set preferred run mode from --run_mode <foo> string without error" do
|
1903
|
-
args = ["--run_mode", "
|
1904
|
-
expect(settings).not_to receive(:handlearg).with("--run_mode", "
|
2250
|
+
args = ["--run_mode", "server"]
|
2251
|
+
expect(settings).not_to receive(:handlearg).with("--run_mode", "server")
|
1905
2252
|
expect { settings.send(:parse_global_options, args) } .to_not raise_error
|
1906
|
-
expect(Puppet.settings.preferred_run_mode).to eq(:
|
2253
|
+
expect(Puppet.settings.preferred_run_mode).to eq(:server)
|
1907
2254
|
expect(args.empty?).to eq(true)
|
1908
2255
|
end
|
1909
2256
|
|
1910
2257
|
it "should set preferred run mode from --run_mode=<foo> string without error" do
|
1911
|
-
args = ["--run_mode=
|
1912
|
-
expect(settings).not_to receive(:handlearg).with("--run_mode", "
|
2258
|
+
args = ["--run_mode=server"]
|
2259
|
+
expect(settings).not_to receive(:handlearg).with("--run_mode", "server")
|
1913
2260
|
expect { settings.send(:parse_global_options, args) }.to_not raise_error
|
1914
|
-
expect(Puppet.settings.preferred_run_mode).to eq(:
|
2261
|
+
expect(Puppet.settings.preferred_run_mode).to eq(:server)
|
1915
2262
|
expect(args.empty?).to eq(true)
|
1916
2263
|
end
|
1917
2264
|
end
|