puppet 5.4.0 → 5.5.0
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.
- data/Gemfile +3 -3
- data/MAINTAINERS +0 -19
- data/README.md +5 -5
- data/Rakefile +26 -0
- data/conf/auth.conf +5 -0
- data/ext/project_data.yaml +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +3 -1
- data/lib/puppet/application/device.rb +100 -13
- data/lib/puppet/application/facts.rb +5 -0
- data/lib/puppet/application/lookup.rb +12 -2
- data/lib/puppet/configurer.rb +37 -17
- data/lib/puppet/confine.rb +4 -1
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +6 -3
- data/lib/puppet/external/dot.rb +0 -7
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face/config.rb +92 -10
- data/lib/puppet/face/epp.rb +31 -6
- data/lib/puppet/face/facts.rb +49 -0
- data/lib/puppet/face/help.rb +33 -35
- data/lib/puppet/face/help/action.erb +1 -1
- data/lib/puppet/face/help/face.erb +1 -1
- data/lib/puppet/face/man.rb +55 -12
- data/lib/puppet/face/parser.rb +30 -3
- data/lib/puppet/file_bucket/file.rb +0 -2
- data/lib/puppet/file_serving/base.rb +10 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/functions.rb +1 -3
- data/lib/puppet/functions/alert.rb +1 -1
- data/lib/puppet/functions/all.rb +6 -6
- data/lib/puppet/functions/annotate.rb +10 -10
- data/lib/puppet/functions/any.rb +6 -6
- data/lib/puppet/functions/assert_type.rb +4 -4
- data/lib/puppet/functions/binary_file.rb +14 -2
- data/lib/puppet/functions/break.rb +31 -2
- data/lib/puppet/functions/call.rb +4 -4
- data/lib/puppet/functions/contain.rb +19 -3
- data/lib/puppet/functions/convert_to.rb +6 -5
- data/lib/puppet/functions/crit.rb +1 -1
- data/lib/puppet/functions/debug.rb +1 -1
- data/lib/puppet/functions/defined.rb +11 -9
- data/lib/puppet/functions/dig.rb +26 -2
- data/lib/puppet/functions/each.rb +8 -8
- data/lib/puppet/functions/emerg.rb +1 -1
- data/lib/puppet/functions/empty.rb +79 -0
- data/lib/puppet/functions/err.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
- data/lib/puppet/functions/filter.rb +7 -7
- data/lib/puppet/functions/find_file.rb +15 -1
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/hiera.rb +6 -6
- data/lib/puppet/functions/hiera_array.rb +6 -6
- data/lib/puppet/functions/hiera_hash.rb +6 -6
- data/lib/puppet/functions/hiera_include.rb +8 -8
- data/lib/puppet/functions/include.rb +28 -2
- data/lib/puppet/functions/info.rb +1 -1
- data/lib/puppet/functions/inline_epp.rb +2 -2
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +2 -2
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +39 -1
- data/lib/puppet/functions/lookup.rb +2 -1
- data/lib/puppet/functions/map.rb +10 -9
- data/lib/puppet/functions/match.rb +6 -6
- data/lib/puppet/functions/new.rb +995 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/notice.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/regsubst.rb +9 -3
- data/lib/puppet/functions/require.rb +36 -2
- data/lib/puppet/functions/return.rb +1 -1
- data/lib/puppet/functions/reverse_each.rb +71 -2
- data/lib/puppet/functions/slice.rb +23 -9
- data/lib/puppet/functions/split.rb +12 -10
- data/lib/puppet/functions/step.rb +73 -1
- data/lib/puppet/functions/strftime.rb +176 -2
- data/lib/puppet/functions/then.rb +65 -2
- data/lib/puppet/functions/tree_each.rb +19 -19
- data/lib/puppet/functions/type.rb +42 -1
- data/lib/puppet/functions/unique.rb +13 -13
- data/lib/puppet/functions/unwrap.rb +8 -4
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/functions/warning.rb +1 -1
- data/lib/puppet/functions/with.rb +6 -4
- data/lib/puppet/functions/yaml_data.rb +3 -1
- data/lib/puppet/indirector/certificate_status/file.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +1 -3
- data/lib/puppet/indirector/facts/rest.rb +21 -0
- data/lib/puppet/indirector/facts/yaml.rb +0 -4
- data/lib/puppet/indirector/rest.rb +2 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module/task.rb +2 -3
- data/lib/puppet/module_tool/applications/application.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/network/authconfig.rb +1 -1
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +5 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
- data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/error.rb +3 -3
- data/lib/puppet/network/resolver.rb +1 -2
- data/lib/puppet/parser/compiler.rb +12 -5
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
- data/lib/puppet/parser/functions/new.rb +31 -46
- data/lib/puppet/parser/parser_factory.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +11 -11
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/issue_reporter.rb +18 -1
- data/lib/puppet/pops/issues.rb +6 -3
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
- data/lib/puppet/pops/loaders.rb +18 -7
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
- data/lib/puppet/pops/model/factory.rb +6 -3
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/model/pn_transformer.rb +400 -0
- data/lib/puppet/pops/parser/egrammar.ra +1 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer_support.rb +3 -2
- data/lib/puppet/pops/parser/locator.rb +0 -2
- data/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/lib/puppet/pops/pcore.rb +17 -17
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/serialization/json.rb +7 -7
- data/lib/puppet/pops/types/class_loader.rb +6 -3
- data/lib/puppet/pops/types/implementation_registry.rb +28 -35
- data/lib/puppet/pops/types/p_object_type.rb +3 -3
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
- data/lib/puppet/pops/types/ruby_generator.rb +3 -4
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_factory.rb +0 -4
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +14 -7
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +3 -1
- data/lib/puppet/provider/group/windows_adsi.rb +4 -7
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/package/pacman.rb +4 -4
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgutil.rb +2 -2
- data/lib/puppet/provider/package/portage.rb +9 -9
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +6 -2
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/type.rb +11 -11
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +5 -5
- data/lib/puppet/resource/catalog.rb +6 -3
- data/lib/puppet/resource/status.rb +9 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings.rb +31 -19
- data/lib/puppet/settings/base_setting.rb +5 -0
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +5 -0
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +0 -2
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +18 -12
- data/lib/puppet/type.rb +9 -13
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +11 -6
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file.rb +4 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/k5login.rb +30 -54
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +12 -12
- data/lib/puppet/type/scheduled_task.rb +2 -2
- data/lib/puppet/type/ssh_authorized_key.rb +5 -5
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +26 -5
- data/lib/puppet/util.rb +0 -4
- data/lib/puppet/util/backups.rb +1 -1
- data/lib/puppet/util/inifile.rb +3 -4
- data/lib/puppet/util/json.rb +68 -0
- data/lib/puppet/util/json_lockfile.rb +3 -3
- data/lib/puppet/util/log.rb +2 -5
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -8
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +0 -2
- data/lib/puppet/util/windows/adsi.rb +15 -18
- data/lib/puppet/util/windows/com.rb +2 -1
- data/lib/puppet/util/windows/file.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +7 -6
- data/lib/puppet/util/windows/sid.rb +60 -7
- data/lib/puppet/util/windows/taskscheduler.rb +0 -9
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +53 -48
- data/locales/ja/puppet.po +1357 -912
- data/locales/puppet.pot +549 -466
- data/man/man5/puppet.conf.5 +103 -20
- data/man/man8/puppet-agent.8 +6 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +35 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +33 -11
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +34 -12
- data/man/man8/puppet-facts.8 +50 -1
- data/man/man8/puppet-filebucket.8 +38 -11
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +10 -4
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +15 -6
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +31 -8
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +67 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +3 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
- data/spec/integration/application/apply_spec.rb +15 -15
- data/spec/integration/application/lookup_spec.rb +21 -0
- data/spec/integration/faces/config_spec.rb +16 -4
- data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +17 -18
- data/spec/integration/parser/pcore_resource_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +2 -2
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/key_spec.rb +1 -1
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +0 -1
- data/spec/integration/type/file_spec.rb +10 -11
- data/spec/integration/type_spec.rb +1 -2
- data/spec/integration/util/windows/adsi_spec.rb +86 -1
- data/spec/integration/util/windows/principal_spec.rb +11 -2
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/lib/matchers/json.rb +4 -4
- data/spec/lib/puppet_spec/language.rb +34 -35
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/shared_behaviours/file_server_terminus.rb +0 -2
- data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/application/cert_spec.rb +21 -9
- data/spec/unit/application/device_spec.rb +96 -2
- data/spec/unit/application/face_base_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +0 -1
- data/spec/unit/configurer_spec.rb +14 -0
- data/spec/unit/confine_spec.rb +16 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
- data/spec/unit/datatypes_spec.rb +49 -0
- data/spec/unit/environments_spec.rb +7 -0
- data/spec/unit/face/config_spec.rb +116 -12
- data/spec/unit/face/epp_face_spec.rb +53 -2
- data/spec/unit/face/facts_spec.rb +53 -0
- data/spec/unit/face/help_spec.rb +62 -69
- data/spec/unit/face/man_spec.rb +26 -0
- data/spec/unit/face/module/list_spec.rb +0 -1
- data/spec/unit/face/parser_spec.rb +78 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -4
- data/spec/unit/file_serving/content_spec.rb +0 -1
- data/spec/unit/file_serving/fileset_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +0 -1
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
- data/spec/unit/forge_spec.rb +1 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +77 -0
- data/spec/unit/functions/epp_spec.rb +1 -1
- data/spec/unit/functions/flatten_spec.rb +31 -0
- data/spec/unit/functions/include_spec.rb +2 -2
- data/spec/unit/functions/inline_epp_spec.rb +1 -1
- data/spec/unit/functions/join_spec.rb +33 -0
- data/spec/unit/functions/keys_spec.rb +31 -0
- data/spec/unit/functions/length_spec.rb +50 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
- data/spec/unit/functions/lookup_spec.rb +52 -0
- data/spec/unit/functions/shared.rb +1 -1
- data/spec/unit/functions/values_spec.rb +30 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +30 -32
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
- data/spec/unit/indirector/facts/rest_spec.rb +45 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +2 -2
- data/spec/unit/indirector/request_spec.rb +0 -2
- data/spec/unit/indirector/rest_spec.rb +2 -2
- data/spec/unit/indirector_spec.rb +0 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +1 -1
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/module_spec.rb +0 -5
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
- data/spec/unit/network/formats_spec.rb +5 -13
- data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/handler_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/node_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/environment_compiler_spec.rb +8 -8
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/fail_spec.rb +1 -1
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
- data/spec/unit/parser/functions/realize_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +0 -1
- data/spec/unit/parser/scope_spec.rb +3 -3
- data/spec/unit/parser/type_loader_spec.rb +1 -1
- data/spec/unit/pops/adaptable_spec.rb +0 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
- data/spec/unit/pops/factory_rspec_helper.rb +1 -1
- data/spec/unit/pops/factory_spec.rb +5 -5
- data/spec/unit/pops/issues_spec.rb +23 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
- data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
- data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
- data/spec/unit/pops/pn_spec.rb +148 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
- data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
- data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
- data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
- data/spec/unit/pops/types/string_converter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +3 -1
- data/spec/unit/property_spec.rb +2 -2
- data/spec/unit/provider/aixobject_spec.rb +1 -1
- data/spec/unit/provider/cron/crontab_spec.rb +3 -3
- data/spec/unit/provider/exec/posix_spec.rb +6 -6
- data/spec/unit/provider/group/groupadd_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
- data/spec/unit/provider/ldap_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +3 -4
- data/spec/unit/provider/package/yum_spec.rb +6 -2
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/init_spec.rb +2 -2
- data/spec/unit/provider/service/openrc_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_spec.rb +7 -7
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +15 -9
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/resource/catalog_spec.rb +8 -3
- data/spec/unit/resource/status_spec.rb +15 -4
- data/spec/unit/resource/type_spec.rb +2 -3
- data/spec/unit/settings_spec.rb +9 -4
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
- data/spec/unit/ssl/certificate_request_spec.rb +1 -2
- data/spec/unit/transaction/report_spec.rb +41 -0
- data/spec/unit/transaction_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +7 -9
- data/spec/unit/type/file/selinux_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +4 -3
- data/spec/unit/type/k5login_spec.rb +79 -10
- data/spec/unit/type/mount_spec.rb +1 -1
- data/spec/unit/type/nagios_spec.rb +6 -6
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +18 -0
- data/spec/unit/type/zfs_spec.rb +1 -1
- data/spec/unit/type_spec.rb +14 -15
- data/spec/unit/util/docs_spec.rb +1 -1
- data/spec/unit/util/execution_spec.rb +0 -1
- data/spec/unit/util/inifile_spec.rb +35 -4
- data/spec/unit/util/log/destinations_spec.rb +2 -2
- data/spec/unit/util/log_spec.rb +6 -5
- data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +1 -7
- data/spec/unit/util/windows/adsi_spec.rb +31 -27
- data/spec/unit/util/windows/sid_spec.rb +86 -15
- data/spec/unit/util_spec.rb +2 -2
- data/spec/watchr.rb +0 -1
- data/tasks/benchmark.rake +37 -0
- data/tasks/manpages.rake +1 -1
- metadata +71 -11
- checksums.yaml +0 -7
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'json'
|
1
|
+
require 'puppet/util/json'
|
2
2
|
|
3
3
|
module PuppetSpec
|
4
4
|
module ModuleTool
|
@@ -15,7 +15,7 @@ module PuppetSpec
|
|
15
15
|
moddir = File.join(options[:into], name)
|
16
16
|
FileUtils.mkdir_p(moddir)
|
17
17
|
File.open(File.join(moddir, 'metadata.json'), 'w') do |file|
|
18
|
-
file.puts(
|
18
|
+
file.puts(Puppet::Util::Json.dump(release.metadata))
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -34,8 +34,6 @@ shared_examples_for "Puppet::Indirector::FileServerTerminus" do
|
|
34
34
|
@modules.stubs(:find).returns(nil)
|
35
35
|
@terminus.indirection.stubs(:terminus).with(:modules).returns(@modules)
|
36
36
|
|
37
|
-
path = File.join(@path, "myfile")
|
38
|
-
|
39
37
|
expect(@terminus.find(@request)).to be_instance_of(@test_class)
|
40
38
|
end
|
41
39
|
end
|
@@ -87,8 +87,8 @@ shared_examples_for "things that declare options" do
|
|
87
87
|
it "should detect conflicts between #{base.inspect} and #{conflict.inspect}" do
|
88
88
|
expect {
|
89
89
|
add_options_to do
|
90
|
-
option
|
91
|
-
option
|
90
|
+
option(*base)
|
91
|
+
option(*conflict)
|
92
92
|
end
|
93
93
|
}.to raise_error ArgumentError, /conflicts with existing option/
|
94
94
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -27,7 +27,7 @@ require 'rspec/collection_matchers'
|
|
27
27
|
|
28
28
|
# So everyone else doesn't have to include this base constant.
|
29
29
|
module PuppetSpec
|
30
|
-
FIXTURE_DIR = File.join(
|
30
|
+
FIXTURE_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR)
|
31
31
|
end
|
32
32
|
|
33
33
|
require 'pathname'
|
@@ -191,9 +191,9 @@ describe Puppet::Application::Cert => true do
|
|
191
191
|
@cert_app.subcommand = :destroy
|
192
192
|
@cert_app.command_line.stubs(:args).returns(["unsigned-node"])
|
193
193
|
|
194
|
-
Puppet::SSL::CertificateAuthority::Interface.
|
195
|
-
|
196
|
-
}
|
194
|
+
Puppet::SSL::CertificateAuthority::Interface.unstub(:new)
|
195
|
+
Puppet::SSL::CertificateAuthority::Interface.expects(:new).with(:revoke, anything).never
|
196
|
+
Puppet::SSL::CertificateAuthority::Interface.expects(:new).with(:destroy, {:to => ['unsigned-node'], :digest => nil}).returns(@iface)
|
197
197
|
|
198
198
|
@cert_app.main
|
199
199
|
end
|
@@ -202,17 +202,29 @@ describe Puppet::Application::Cert => true do
|
|
202
202
|
@cert_app.subcommand = :destroy
|
203
203
|
@cert_app.command_line.stubs(:args).returns(["host","unsigned-node"])
|
204
204
|
|
205
|
-
Puppet::SSL::CertificateAuthority::Interface.expects(:new).returns(@iface).with
|
206
|
-
cert_mode == :revoke
|
205
|
+
Puppet::SSL::CertificateAuthority::Interface.expects(:new).returns(@iface).with do |cert_mode,to|
|
206
|
+
cert_mode == :revoke &&
|
207
207
|
to[:to] == ["host"]
|
208
|
-
|
209
|
-
Puppet::SSL::CertificateAuthority::Interface.expects(:new).returns(@iface).with
|
210
|
-
cert_mode == :destroy
|
208
|
+
end
|
209
|
+
Puppet::SSL::CertificateAuthority::Interface.expects(:new).returns(@iface).with do |cert_mode,to|
|
210
|
+
cert_mode == :destroy &&
|
211
211
|
to[:to] == ["host","unsigned-node"]
|
212
|
-
|
212
|
+
end
|
213
213
|
|
214
214
|
@cert_app.main
|
215
215
|
end
|
216
|
+
|
217
|
+
it "should refuse to destroy all certificates" do
|
218
|
+
@cert_app.subcommand = :destroy
|
219
|
+
@cert_app.all = true
|
220
|
+
|
221
|
+
Puppet::SSL::CertificateAuthority::Interface.unstub(:new)
|
222
|
+
Puppet::SSL::CertificateAuthority::Interface.expects(:new).never
|
223
|
+
|
224
|
+
Puppet.expects(:log_exception).with {|e| e.message == "Refusing to destroy all certs, provide an explicit list of certs to destroy"}
|
225
|
+
|
226
|
+
expect { @cert_app.main }.to exit_with(24)
|
227
|
+
end
|
216
228
|
end
|
217
229
|
|
218
230
|
describe "when identifying subcommands" do
|
@@ -5,6 +5,7 @@ require 'puppet/application/device'
|
|
5
5
|
require 'puppet/util/network_device/config'
|
6
6
|
require 'ostruct'
|
7
7
|
require 'puppet/configurer'
|
8
|
+
require 'puppet/application/apply'
|
8
9
|
|
9
10
|
describe Puppet::Application::Device do
|
10
11
|
include PuppetSpec::Files
|
@@ -127,6 +128,18 @@ describe Puppet::Application::Device do
|
|
127
128
|
expect(@device.args[:Port]).to eq("42")
|
128
129
|
end
|
129
130
|
|
131
|
+
it "should store the target options with --target" do
|
132
|
+
@device.options.expects(:[]=).with(:target,'test123')
|
133
|
+
|
134
|
+
@device.handle_target('test123')
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should store the resource options with --resource" do
|
138
|
+
@device.options.expects(:[]=).with(:resource,true)
|
139
|
+
|
140
|
+
@device.handle_resource(true)
|
141
|
+
end
|
142
|
+
|
130
143
|
end
|
131
144
|
|
132
145
|
describe "during setup" do
|
@@ -277,7 +290,11 @@ describe Puppet::Application::Device do
|
|
277
290
|
Puppet.stubs(:notice)
|
278
291
|
@device.options.stubs(:[]).with(:detailed_exitcodes).returns(false)
|
279
292
|
@device.options.stubs(:[]).with(:target).returns(nil)
|
293
|
+
@device.options.stubs(:[]).with(:apply).returns(nil)
|
294
|
+
@device.options.stubs(:[]).with(:resource).returns(false)
|
295
|
+
@device.options.stubs(:[]).with(:to_yaml).returns(false)
|
280
296
|
@device.options.stubs(:[]).with(:client)
|
297
|
+
@device.command_line.stubs(:args).returns([])
|
281
298
|
Puppet::Util::NetworkDevice::Config.stubs(:devices).returns({})
|
282
299
|
end
|
283
300
|
|
@@ -286,6 +303,12 @@ describe Puppet::Application::Device do
|
|
286
303
|
@device.run_command
|
287
304
|
end
|
288
305
|
|
306
|
+
it "should exit if resource is requested without target" do
|
307
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
308
|
+
Puppet.expects(:err).with "resource command requires target"
|
309
|
+
expect { @device.main }.to exit_with 1
|
310
|
+
end
|
311
|
+
|
289
312
|
it "should get the device list" do
|
290
313
|
device_hash = stub_everything 'device hash'
|
291
314
|
Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
|
@@ -301,8 +324,8 @@ describe Puppet::Application::Device do
|
|
301
324
|
}
|
302
325
|
|
303
326
|
Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
|
304
|
-
|
305
|
-
|
327
|
+
URI.expects(:parse).with("ssh://user:pass@testhost")
|
328
|
+
URI.expects(:parse).with("https://user:pass@testhost/some/path").never
|
306
329
|
expect { @device.main }.to exit_with 1
|
307
330
|
end
|
308
331
|
|
@@ -318,6 +341,32 @@ describe Puppet::Application::Device do
|
|
318
341
|
expect { @device.main }.to exit_with 1
|
319
342
|
end
|
320
343
|
|
344
|
+
it "should error if target is passed and the apply path is incorrect" do
|
345
|
+
@device.options.stubs(:[]).with(:apply).returns('file.pp')
|
346
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
347
|
+
|
348
|
+
File.expects(:file?).returns(false)
|
349
|
+
Puppet.expects(:err).with(regexp_matches(/does not exist, cannot apply/))
|
350
|
+
expect { @device.main }.to exit_with 1
|
351
|
+
end
|
352
|
+
|
353
|
+
it "should run an apply" do
|
354
|
+
@device.options.stubs(:[]).with(:apply).returns('file.pp')
|
355
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
356
|
+
device_hash = {
|
357
|
+
"device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
|
358
|
+
}
|
359
|
+
Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
|
360
|
+
Puppet::Util::NetworkDevice.stubs(:init)
|
361
|
+
File.expects(:file?).returns(true)
|
362
|
+
|
363
|
+
Puppet::Util::CommandLine.expects(:new).once
|
364
|
+
Puppet::Application::Apply.expects(:new).once
|
365
|
+
|
366
|
+
Puppet::Configurer.expects(:new).never
|
367
|
+
expect { @device.main }.to exit_with 1
|
368
|
+
end
|
369
|
+
|
321
370
|
it "should exit if the device list is empty" do
|
322
371
|
expect { @device.main }.to exit_with 1
|
323
372
|
end
|
@@ -356,6 +405,51 @@ describe Puppet::Application::Device do
|
|
356
405
|
expect { @device.main }.to exit_with 1
|
357
406
|
end
|
358
407
|
|
408
|
+
it "should raise an error if no type is given" do
|
409
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
410
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
411
|
+
@device.command_line.stubs(:args).returns([])
|
412
|
+
Puppet.expects(:log_exception).with {|e| e.message == "You must specify the type to display"}
|
413
|
+
expect { @device.main }.to exit_with 1
|
414
|
+
end
|
415
|
+
|
416
|
+
it "should raise an error if the type is not found" do
|
417
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
418
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
419
|
+
@device.command_line.stubs(:args).returns(['nope'])
|
420
|
+
Puppet.expects(:log_exception).with {|e| e.message == "Could not find type nope"}
|
421
|
+
expect { @device.main }.to exit_with 1
|
422
|
+
end
|
423
|
+
|
424
|
+
it "should retrieve all resources of a type" do
|
425
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
426
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
427
|
+
@device.command_line.stubs(:args).returns(['user'])
|
428
|
+
Puppet::Resource.indirection.expects(:search).with('user/', {}).returns([])
|
429
|
+
expect { @device.main }.to exit_with 1
|
430
|
+
end
|
431
|
+
|
432
|
+
it "should retrieve named resources of a type" do
|
433
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
434
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
435
|
+
@device.command_line.stubs(:args).returns(['user', 'title'])
|
436
|
+
Puppet::Resource.indirection.expects(:find).with('user/title')
|
437
|
+
expect { @device.main }.to exit_with 1
|
438
|
+
end
|
439
|
+
|
440
|
+
it "should output resources as YAML" do
|
441
|
+
resources = [
|
442
|
+
Puppet::Type.type(:user).new(:name => "title").to_resource,
|
443
|
+
]
|
444
|
+
@device.options.stubs(:[]).with(:resource).returns(true)
|
445
|
+
@device.options.stubs(:[]).with(:target).returns('device1')
|
446
|
+
@device.options.stubs(:[]).with(:to_yaml).returns(true)
|
447
|
+
@device.command_line.stubs(:args).returns(['user'])
|
448
|
+
Puppet::Resource.indirection.expects(:search).with('user/', {}).returns(resources)
|
449
|
+
@device.expects(:puts).with("user:\n title:\n")
|
450
|
+
expect { @device.main }.to exit_with 1
|
451
|
+
end
|
452
|
+
|
359
453
|
it "should make sure all the required folders and files are created" do
|
360
454
|
Puppet.settings.expects(:use).with(:main, :agent, :ssl).twice
|
361
455
|
expect { @device.main }.to exit_with 1
|
@@ -343,7 +343,7 @@ describe Puppet::Application::FaceBase do
|
|
343
343
|
|
344
344
|
it "should render a non-trivially-keyed Hash with using pretty printed JSON" do
|
345
345
|
hash = { [1,2] => 3, [2,3] => 5, [3,4] => 7 }
|
346
|
-
expect(app.render(hash, {})).to eq(
|
346
|
+
expect(app.render(hash, {})).to eq(Puppet::Util::Json.dump(hash, :pretty => true).chomp)
|
347
347
|
end
|
348
348
|
|
349
349
|
it "should render a {String,Numeric}-keyed Hash into a table" do
|
@@ -356,7 +356,7 @@ describe Puppet::Application::FaceBase do
|
|
356
356
|
expect(app.render(hash, {})).to eq <<EOT
|
357
357
|
5 5
|
358
358
|
6.0 6
|
359
|
-
four #{object.
|
359
|
+
four #{Puppet::Util::Json.dump(object).chomp}
|
360
360
|
one 1
|
361
361
|
three {}
|
362
362
|
two []
|
@@ -352,6 +352,13 @@ describe Puppet::Configurer do
|
|
352
352
|
expect(@agent.run).to be_nil
|
353
353
|
end
|
354
354
|
|
355
|
+
it "should record the time it took to apply the catalog" do
|
356
|
+
report = Puppet::Transaction::Report.new
|
357
|
+
@catalog.stubs(:apply).with(:report => report)
|
358
|
+
report.expects(:add_times).with(:catalog_application, kind_of(Numeric))
|
359
|
+
@agent.apply_catalog(@catalog, {:report => report})
|
360
|
+
end
|
361
|
+
|
355
362
|
it "should refetch the catalog if the server specifies a new environment in the catalog" do
|
356
363
|
catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
357
364
|
@agent.expects(:retrieve_catalog).returns(catalog).twice
|
@@ -930,6 +937,13 @@ describe Puppet::Configurer do
|
|
930
937
|
|
931
938
|
@agent.convert_catalog(catalog, 10)
|
932
939
|
end
|
940
|
+
|
941
|
+
it "should set catalog conversion time on the report" do
|
942
|
+
report = Puppet::Transaction::Report.new
|
943
|
+
|
944
|
+
report.expects(:add_times).with(:convert_catalog, kind_of(Numeric))
|
945
|
+
@agent.convert_catalog(catalog, 10, {:report => report})
|
946
|
+
end
|
933
947
|
end
|
934
948
|
|
935
949
|
describe "when determining whether to pluginsync" do
|
data/spec/unit/confine_spec.rb
CHANGED
@@ -74,4 +74,20 @@ describe Puppet::Confine do
|
|
74
74
|
expect(@confine.result).to eq([true, false, true, false])
|
75
75
|
end
|
76
76
|
end
|
77
|
+
|
78
|
+
describe "when requiring" do
|
79
|
+
it "does not cache failed requires when always_retry_plugins is true" do
|
80
|
+
Puppet[:always_retry_plugins] = true
|
81
|
+
Puppet::Confine.expects(:require).with('puppet/confine/osfamily').twice.raises(LoadError)
|
82
|
+
Puppet::Confine.test(:osfamily)
|
83
|
+
Puppet::Confine.test(:osfamily)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "caches failed requires when always_retry_plugins is false" do
|
87
|
+
Puppet[:always_retry_plugins] = false
|
88
|
+
Puppet::Confine.expects(:require).with('puppet/confine/osfamily').once.raises(LoadError)
|
89
|
+
Puppet::Confine.test(:osfamily)
|
90
|
+
Puppet::Confine.test(:osfamily)
|
91
|
+
end
|
92
|
+
end
|
77
93
|
end
|
@@ -201,7 +201,7 @@ describe "when using a hiera data provider" do
|
|
201
201
|
it 'will report config path (original and resolved), data path (original and resolved), and interpolation (before and after)' do
|
202
202
|
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
203
203
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true)
|
204
|
-
|
204
|
+
Puppet::Pops::Lookup.lookup('km_scope', nil, nil, nil, nil, lookup_invocation)
|
205
205
|
expect(lookup_invocation.explainer.explain).to include(<<-EOS)
|
206
206
|
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
207
207
|
Original path: "common.yaml"
|
@@ -216,7 +216,7 @@ describe "when using a hiera data provider" do
|
|
216
216
|
it 'will report that merge options was found in the lookup_options hash' do
|
217
217
|
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
218
218
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true)
|
219
|
-
|
219
|
+
Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
220
220
|
expect(lookup_invocation.explainer.explain).to include("Using merge options from \"lookup_options\" hash")
|
221
221
|
end
|
222
222
|
end
|
@@ -224,7 +224,7 @@ describe "when using a hiera data provider" do
|
|
224
224
|
it 'will report lookup_options details in combination with details of found value' do
|
225
225
|
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
226
226
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true))
|
227
|
-
|
227
|
+
Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
228
228
|
expect(lookup_invocation.explainer.explain).to eq(<<EOS)
|
229
229
|
Searching for "lookup_options"
|
230
230
|
Global Data Provider (hiera configuration version 5)
|
@@ -314,7 +314,7 @@ EOS
|
|
314
314
|
it 'will report config path (original and resolved), data path (original and resolved), and interpolation (before and after)' do
|
315
315
|
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
316
316
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true, true))
|
317
|
-
|
317
|
+
Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
318
318
|
expect(lookup_invocation.explainer.explain).to eq(<<EOS)
|
319
319
|
Merge strategy hash
|
320
320
|
Global Data Provider (hiera configuration version 5)
|
data/spec/unit/datatypes_spec.rb
CHANGED
@@ -229,6 +229,55 @@ describe "Puppet::DataTypes" do
|
|
229
229
|
end
|
230
230
|
end
|
231
231
|
|
232
|
+
context 'when creating type with custom new_function' do
|
233
|
+
let(:datatypes) {
|
234
|
+
{
|
235
|
+
'mytest.rb' => <<-RUBY.unindent,
|
236
|
+
Puppet::DataTypes.create_type('Mytest') do
|
237
|
+
interface <<-PUPPET
|
238
|
+
attributes => {
|
239
|
+
strings => { type => Array[String] },
|
240
|
+
ints => { type => Array[Integer] },
|
241
|
+
}
|
242
|
+
PUPPET
|
243
|
+
|
244
|
+
implementation_class PuppetSpec::DataTypes::MyTest
|
245
|
+
end
|
246
|
+
RUBY
|
247
|
+
}
|
248
|
+
}
|
249
|
+
|
250
|
+
before(:each) do
|
251
|
+
class ::PuppetSpec::DataTypes::MyTest
|
252
|
+
def self.create_new_function(t)
|
253
|
+
Puppet::Functions.create_function('new_%s' % t.name) do
|
254
|
+
dispatch :create do
|
255
|
+
repeated_param 'Variant[String,Integer]', :args
|
256
|
+
end
|
257
|
+
|
258
|
+
def create(*args)
|
259
|
+
::PuppetSpec::DataTypes::MyTest.new(*args.partition { |arg| arg.is_a?(String) })
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
attr_reader :strings, :ints
|
264
|
+
|
265
|
+
def initialize(strings, ints)
|
266
|
+
@strings = strings
|
267
|
+
@ints = ints
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
after(:each) do
|
273
|
+
::PuppetSpec::DataTypes.send(:remove_const, :MyTest)
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'loads and calls custom new function' do
|
277
|
+
expect(eval_and_collect_notices('notice(Mytest("A", 32, "B", 20).ints)', node)).to eql(['[32, 20]'])
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
232
281
|
context 'with data type and class defined in a module' do
|
233
282
|
let(:mytest_classes) {
|
234
283
|
{
|
@@ -421,6 +421,13 @@ config_version=$vardir/random/scripts
|
|
421
421
|
expect(loader.get_conf(:doesnotexist)).to be_nil
|
422
422
|
end
|
423
423
|
|
424
|
+
it "gets the conf environment_timeout if one is specified" do
|
425
|
+
Puppet[:environment_timeout] = 8675
|
426
|
+
conf = loader.get_conf(:static1)
|
427
|
+
|
428
|
+
expect(conf.environment_timeout).to eq(8675)
|
429
|
+
end
|
430
|
+
|
424
431
|
context "that are private" do
|
425
432
|
let(:private_env) { Puppet::Node::Environment.create(:private, []) }
|
426
433
|
let(:loader) { Puppet::Environments::StaticPrivate.new(private_env) }
|
@@ -2,46 +2,117 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
require 'puppet/face'
|
4
4
|
|
5
|
-
module PuppetFaceSpecs
|
5
|
+
module PuppetFaceSpecs
|
6
6
|
describe Puppet::Face[:config, '0.0.1'] do
|
7
7
|
|
8
|
+
let(:config) { described_class }
|
9
|
+
|
10
|
+
def render(action, result)
|
11
|
+
config.get_action(action).when_rendering(:console).call(result)
|
12
|
+
end
|
13
|
+
|
8
14
|
FS = Puppet::FileSystem
|
9
15
|
|
16
|
+
before :each do
|
17
|
+
subject.stubs(:warn_default_section)
|
18
|
+
subject.stubs(:report_section_and_environment)
|
19
|
+
end
|
20
|
+
|
10
21
|
it "prints a single setting without the name" do
|
11
22
|
Puppet[:trace] = true
|
12
23
|
|
13
|
-
|
24
|
+
result = subject.print("trace")
|
25
|
+
expect(render(:print, result)).to eq("true\n")
|
14
26
|
end
|
15
27
|
|
16
28
|
it "prints multiple settings with the names" do
|
17
29
|
Puppet[:trace] = true
|
18
30
|
Puppet[:syslogfacility] = "file"
|
19
31
|
|
20
|
-
|
32
|
+
result = subject.print("trace", "syslogfacility")
|
33
|
+
expect(render(:print, result)).to eq(<<-OUTPUT)
|
21
34
|
syslogfacility = file
|
22
35
|
trace = true
|
23
36
|
OUTPUT
|
24
37
|
end
|
25
38
|
|
39
|
+
it "prints environment_timeout=unlimited correctly" do
|
40
|
+
Puppet[:environment_timeout] = "unlimited"
|
41
|
+
|
42
|
+
result = subject.print("environment_timeout")
|
43
|
+
expect(render(:print, result)).to eq("unlimited\n")
|
44
|
+
end
|
45
|
+
|
46
|
+
it "prints arrays correctly" do
|
47
|
+
pending "Still doesn't print arrays like they would appear in config"
|
48
|
+
Puppet[:server_list] = %w{server1 server2}
|
49
|
+
|
50
|
+
result = subject.print("server_list")
|
51
|
+
expect(render(:print, result)).to eq("server1, server2\n")
|
52
|
+
end
|
53
|
+
|
26
54
|
it "prints the setting from the selected section" do
|
27
55
|
Puppet.settings.parse_config(<<-CONF)
|
28
56
|
[user]
|
29
57
|
syslogfacility = file
|
30
58
|
CONF
|
31
59
|
|
32
|
-
|
60
|
+
result = subject.print("syslogfacility", :section => "user")
|
61
|
+
expect(render(:print, result)).to eq("file\n")
|
33
62
|
end
|
34
63
|
|
35
|
-
it "
|
36
|
-
|
64
|
+
it "prints the section and environment, and not a warning, when a section is given" do
|
65
|
+
Puppet.settings.parse_config(<<-CONF)
|
66
|
+
[user]
|
67
|
+
syslogfacility = file
|
68
|
+
CONF
|
37
69
|
|
38
|
-
subject.
|
70
|
+
subject.expects(:warn_default_section).never
|
71
|
+
subject.expects(:report_section_and_environment).once
|
72
|
+
|
73
|
+
result = subject.print("syslogfacility", :section => "user")
|
74
|
+
expect(render(:print, result)).to eq("file\n")
|
75
|
+
end
|
76
|
+
|
77
|
+
it "prints a warning and the section and environment when no section is given" do
|
78
|
+
Puppet[:trace] = true
|
79
|
+
|
80
|
+
subject.expects(:warn_default_section).once
|
81
|
+
subject.expects(:report_section_and_environment).once
|
82
|
+
|
83
|
+
result = subject.print("trace")
|
84
|
+
expect(render(:print, result)).to eq("true\n")
|
85
|
+
end
|
86
|
+
|
87
|
+
it "defaults to all when no arguments are given" do
|
88
|
+
result = subject.print
|
89
|
+
expect(render(:print, result).lines.to_a.length).to eq(Puppet.settings.to_a.length)
|
39
90
|
end
|
40
91
|
|
41
92
|
it "prints out all of the settings when asked for 'all'" do
|
42
|
-
subject.
|
93
|
+
result = subject.print('all')
|
94
|
+
expect(render(:print, result).lines.to_a.length).to eq(Puppet.settings.to_a.length)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "stringifies all keys for network format handlers to consume" do
|
98
|
+
Puppet[:syslogfacility] = "file"
|
99
|
+
|
100
|
+
result = subject.print
|
101
|
+
expect(result["syslogfacility"]).to eq("file")
|
102
|
+
expect(result.keys).to all(be_a(String))
|
103
|
+
end
|
104
|
+
|
105
|
+
it "stringifies multiple keys for network format handlers to consume" do
|
106
|
+
Puppet[:trace] = true
|
107
|
+
Puppet[:syslogfacility] = "file"
|
108
|
+
|
109
|
+
expect(subject.print("trace", "syslogfacility")).to eq({"syslogfacility" => "file", "trace" => true})
|
110
|
+
end
|
111
|
+
|
112
|
+
it "stringifies single key for network format handlers to consume" do
|
113
|
+
Puppet[:trace] = true
|
43
114
|
|
44
|
-
subject.print(
|
115
|
+
expect(subject.print("trace")).to eq({"trace" => true})
|
45
116
|
end
|
46
117
|
|
47
118
|
context "when setting config values" do
|
@@ -53,6 +124,18 @@ trace = true
|
|
53
124
|
Puppet::FileSystem.stubs(:touch)
|
54
125
|
end
|
55
126
|
|
127
|
+
it "prints the section and environment when no section is given" do
|
128
|
+
Puppet::FileSystem.stubs(:open).with(path, anything, anything).yields(StringIO.new)
|
129
|
+
subject.expects(:report_section_and_environment).once
|
130
|
+
subject.set('foo', 'bar')
|
131
|
+
end
|
132
|
+
|
133
|
+
it "prints the section and environment when a section is given" do
|
134
|
+
Puppet::FileSystem.stubs(:open).with(path, anything, anything).yields(StringIO.new)
|
135
|
+
subject.expects(:report_section_and_environment).once
|
136
|
+
subject.set('foo', 'bar', {:section => "baz"})
|
137
|
+
end
|
138
|
+
|
56
139
|
it "writes to the correct puppet config file" do
|
57
140
|
Puppet::FileSystem.expects(:open).with(path, anything, anything)
|
58
141
|
subject.set('foo', 'bar')
|
@@ -84,6 +167,21 @@ trace = true
|
|
84
167
|
subject.set('foo', 'bar', {:section => "baz"})
|
85
168
|
end
|
86
169
|
|
170
|
+
it "does not duplicate an existing default section when a section is not specified" do
|
171
|
+
contents = <<-CONF
|
172
|
+
[main]
|
173
|
+
myport = 4444
|
174
|
+
CONF
|
175
|
+
|
176
|
+
myfile = StringIO.new(contents)
|
177
|
+
Puppet::FileSystem.stubs(:open).with(path, anything, anything).yields(myfile)
|
178
|
+
|
179
|
+
subject.set('foo', 'bar')
|
180
|
+
|
181
|
+
expect(myfile.string).to match(/foo = bar/)
|
182
|
+
expect(myfile.string).not_to match(/main.*main/)
|
183
|
+
end
|
184
|
+
|
87
185
|
it "opens the file with UTF-8 encoding" do
|
88
186
|
Puppet::FileSystem.expects(:open).with(path, nil, 'r+:UTF-8')
|
89
187
|
subject.set('foo', 'bar')
|
@@ -152,7 +250,9 @@ trace = true
|
|
152
250
|
])
|
153
251
|
) do
|
154
252
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
155
|
-
|
253
|
+
|
254
|
+
result = subject.print(*add_section_option(args, section))
|
255
|
+
expect(render(:print, result)).to eq(<<-OUTPUT)
|
156
256
|
basemodulepath = #{File.expand_path("/some/base")}
|
157
257
|
environment = production
|
158
258
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|
@@ -173,7 +273,9 @@ modulepath = #{File.expand_path("/dev/null/environments/production/modules")}#{F
|
|
173
273
|
])
|
174
274
|
) do
|
175
275
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
176
|
-
|
276
|
+
|
277
|
+
result = subject.print(*add_section_option(args, section))
|
278
|
+
expect(render(:print, result)).to eq(<<-OUTPUT)
|
177
279
|
basemodulepath = #{File.expand_path("/some/base")}
|
178
280
|
environment = production
|
179
281
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|
@@ -192,7 +294,9 @@ modulepath = #{File.expand_path("/custom/modules")}#{File::PATH_SEPARATOR}#{File
|
|
192
294
|
])
|
193
295
|
) do
|
194
296
|
args = "environmentpath","manifest","modulepath","environment","basemodulepath"
|
195
|
-
|
297
|
+
|
298
|
+
result = subject.print(*add_section_option(args, section))
|
299
|
+
expect(render(:print, result)).to eq(<<-OUTPUT)
|
196
300
|
basemodulepath = #{File.expand_path("/some/base")}
|
197
301
|
environment = doesnotexist
|
198
302
|
environmentpath = #{File.expand_path("/dev/null/environments")}
|