puppet 4.5.3-universal-darwin → 4.6.1-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +4 -3
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +89 -34
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
data/spec/spec_helper.rb
CHANGED
@@ -43,6 +43,10 @@ Pathname.glob("#{dir}/shared_behaviours/**/*.rb") do |behaviour|
|
|
43
43
|
require behaviour.relative_path_from(Pathname.new(dir))
|
44
44
|
end
|
45
45
|
|
46
|
+
Pathname.glob("#{dir}/shared_examples/**/*.rb") do |behaviour|
|
47
|
+
require behaviour.relative_path_from(Pathname.new(dir))
|
48
|
+
end
|
49
|
+
|
46
50
|
require 'vcr'
|
47
51
|
VCR.configure do |vcr|
|
48
52
|
vcr.cassette_library_dir = File.expand_path('vcr/cassettes', PuppetSpec::FIXTURE_DIR)
|
@@ -68,8 +72,8 @@ RSpec.configure do |config|
|
|
68
72
|
|
69
73
|
config.mock_with :mocha
|
70
74
|
|
71
|
-
tmpdir = Dir.mktmpdir("rspecrun")
|
72
|
-
oldtmpdir = Dir.tmpdir()
|
75
|
+
tmpdir = Puppet::FileSystem.expand_path(Dir.mktmpdir("rspecrun"))
|
76
|
+
oldtmpdir = Puppet::FileSystem.expand_path(Dir.tmpdir())
|
73
77
|
ENV['TMPDIR'] = tmpdir
|
74
78
|
|
75
79
|
if Puppet::Util::Platform.windows?
|
@@ -148,6 +152,8 @@ RSpec.configure do |config|
|
|
148
152
|
Puppet[:rundir] = "$vardir/run"
|
149
153
|
Puppet[:hiera_config] = File.join(base, 'hiera')
|
150
154
|
|
155
|
+
FileUtils.mkdir_p Puppet[:statedir]
|
156
|
+
|
151
157
|
Puppet::Test::TestHelper.before_each_test()
|
152
158
|
end
|
153
159
|
|
@@ -52,6 +52,26 @@ describe Puppet::Application::Cert => true do
|
|
52
52
|
expect(@cert_app.signed).to be_truthy
|
53
53
|
end
|
54
54
|
|
55
|
+
it "should set human to true for --human-readable" do
|
56
|
+
@cert_app.handle_human_readable(0)
|
57
|
+
expect(@cert_app.options[:format]).to be :human
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should set machine to true for --machine-readable" do
|
61
|
+
@cert_app.handle_machine_readable(0)
|
62
|
+
expect(@cert_app.options[:format]).to be :machine
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should set interactive to true for --interactive" do
|
66
|
+
@cert_app.handle_interactive(0)
|
67
|
+
expect(@cert_app.options[:interactive]).to be_truthy
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should set yes to true for --assume-yes" do
|
71
|
+
@cert_app.handle_assume_yes(0)
|
72
|
+
expect(@cert_app.options[:yes]).to be_truthy
|
73
|
+
end
|
74
|
+
|
55
75
|
Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS.reject { |m| m == :destroy }.each do |method|
|
56
76
|
it "should set cert_mode to #{method} with option --#{method}" do
|
57
77
|
@cert_app.send("handle_#{method}".to_sym, nil)
|
@@ -39,30 +39,4 @@ describe Puppet::Configurer::PluginHandler do
|
|
39
39
|
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
43
|
-
context "when external facts are not supported" do
|
44
|
-
before :each do
|
45
|
-
Puppet.features.stubs(:external_facts?).returns(false)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "downloads plugins only" do
|
49
|
-
plugin_downloader = stub('plugin-downloader', :evaluate => [])
|
50
|
-
|
51
|
-
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
52
|
-
factory.expects(:create_plugin_facts_downloader).never
|
53
|
-
|
54
|
-
pluginhandler.download_plugins(environment)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns downloaded plugin filenames only" do
|
58
|
-
Puppet.features.stubs(:external_facts?).returns(false)
|
59
|
-
|
60
|
-
plugin_downloader = stub('plugin-downloader', :evaluate => %w[/a])
|
61
|
-
facts_downloader = stub('facts-downloader')
|
62
|
-
|
63
|
-
factory.expects(:create_plugin_downloader).returns(plugin_downloader)
|
64
|
-
|
65
|
-
expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a])
|
66
|
-
end
|
67
|
-
end
|
68
42
|
end
|
@@ -920,4 +920,50 @@ describe Puppet::Configurer do
|
|
920
920
|
expect(described_class).not_to be_should_pluginsync
|
921
921
|
end
|
922
922
|
end
|
923
|
+
|
924
|
+
describe "when attempting failover" do
|
925
|
+
it "should not failover if server_list is not set" do
|
926
|
+
Puppet.settings[:server_list] = []
|
927
|
+
@agent.expects(:find_functional_server).never
|
928
|
+
@agent.run
|
929
|
+
end
|
930
|
+
|
931
|
+
it "should not failover during an apply run" do
|
932
|
+
Puppet.settings[:server_list] = ["myserver:123"]
|
933
|
+
@agent.expects(:find_functional_server).never
|
934
|
+
catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
|
935
|
+
@agent.run :catalog => catalog
|
936
|
+
end
|
937
|
+
|
938
|
+
it "should select a server when provided" do
|
939
|
+
Puppet.settings[:server_list] = ["myserver:123"]
|
940
|
+
pool = Puppet::Network::HTTP::Pool.new(Puppet[:http_keepalive_timeout])
|
941
|
+
Puppet::Network::HTTP::Pool.expects(:new).returns(pool)
|
942
|
+
Puppet.expects(:override).with({:http_pool => pool}).yields
|
943
|
+
Puppet.expects(:override).with({:server => "myserver", :serverport => '123'}).twice.yields
|
944
|
+
Puppet::Node.indirection.expects(:find).returns(nil)
|
945
|
+
@agent.expects(:run_internal).returns(nil)
|
946
|
+
@agent.run
|
947
|
+
end
|
948
|
+
|
949
|
+
it "should fallback to an empty server when failover fails" do
|
950
|
+
Puppet.settings[:server_list] = ["myserver:123"]
|
951
|
+
pool = Puppet::Network::HTTP::Pool.new(Puppet[:http_keepalive_timeout])
|
952
|
+
Puppet::Network::HTTP::Pool.expects(:new).returns(pool)
|
953
|
+
Puppet.expects(:override).with({:http_pool => pool}).yields
|
954
|
+
Puppet.expects(:override).with({:server => "myserver", :serverport => '123'}).yields
|
955
|
+
Puppet.expects(:override).with({:server => nil, :serverport => nil}).yields
|
956
|
+
error = Net::HTTPError.new(400, 'dummy server communication error')
|
957
|
+
Puppet::Node.indirection.expects(:find).raises(error)
|
958
|
+
@agent.expects(:run_internal).returns(nil)
|
959
|
+
@agent.run
|
960
|
+
end
|
961
|
+
|
962
|
+
it "should not make multiple node requets when the server is found" do
|
963
|
+
Puppet.settings[:server_list] = ["myserver:123"]
|
964
|
+
Puppet::Node.indirection.expects(:find).returns("mynode").once
|
965
|
+
@agent.expects(:prepare_and_retrieve_catalog).returns(nil)
|
966
|
+
@agent.run
|
967
|
+
end
|
968
|
+
end
|
923
969
|
end
|
data/spec/unit/defaults_spec.rb
CHANGED
@@ -104,4 +104,18 @@ describe "Defaults" do
|
|
104
104
|
expect(Puppet.settings[:supported_checksum_types]).to eq(['sha256', 'md5lite', 'mtime'])
|
105
105
|
end
|
106
106
|
end
|
107
|
+
|
108
|
+
describe 'server vs server_list' do
|
109
|
+
it 'should warn when both settings are set in code' do
|
110
|
+
Puppet.expects(:deprecation_warning).with('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
|
111
|
+
Puppet.settings[:server] = 'test_server'
|
112
|
+
Puppet.settings[:server_list] = ['one', 'two']
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should warn when both settings are set by command line' do
|
116
|
+
Puppet.expects(:deprecation_warning).with('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
|
117
|
+
Puppet.settings.handlearg("--server_list", "one,two")
|
118
|
+
Puppet.settings.handlearg("--server", "test_server")
|
119
|
+
end
|
120
|
+
end
|
107
121
|
end
|
@@ -0,0 +1,230 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet_spec/files'
|
3
|
+
|
4
|
+
require 'puppet/face'
|
5
|
+
|
6
|
+
describe Puppet::Face[:generate, :current] do
|
7
|
+
include PuppetSpec::Files
|
8
|
+
|
9
|
+
let(:genface) { Puppet::Face[:generate, :current] }
|
10
|
+
|
11
|
+
# * Format is 'pcore' by default
|
12
|
+
# * Format is accepted as 'pcore'
|
13
|
+
# * Any format expect 'pcore' is an error
|
14
|
+
# * Produces output to '<envroot>/.resource_types'
|
15
|
+
# * Produces all types found on the module path (that are not in puppet core)
|
16
|
+
# * Output files match input
|
17
|
+
# * Removes files for which there is no input
|
18
|
+
# * Updates a pcore file if it is out of date
|
19
|
+
# * The --force flag overwrite the output even if it is up to date
|
20
|
+
# * Environment is set with --environment (setting) (not tested explicitly)
|
21
|
+
# Writes output for:
|
22
|
+
# - isomorphic
|
23
|
+
# - parameters
|
24
|
+
# - properties
|
25
|
+
# - title patterns
|
26
|
+
# - type information is written when the type is X, Y, or Z
|
27
|
+
#
|
28
|
+
# Additional features
|
29
|
+
# - blacklist? whitelist? types to exclude/include
|
30
|
+
# - generate one resource type (somewhere on modulepath)
|
31
|
+
# - output to directory of choice
|
32
|
+
# - clean, clean the output directory (similar to force)
|
33
|
+
#
|
34
|
+
|
35
|
+
[:types].each do |action|
|
36
|
+
it { is_expected.to be_action(action) }
|
37
|
+
it { is_expected.to respond_to(action) }
|
38
|
+
end
|
39
|
+
|
40
|
+
context "when used from an interactive terminal" do
|
41
|
+
before :each do
|
42
|
+
from_an_interactive_terminal
|
43
|
+
end
|
44
|
+
|
45
|
+
context "in an environment with two modules containing resource types" do
|
46
|
+
let(:dir) do
|
47
|
+
dir_containing('environments', { 'testing_generate' => {
|
48
|
+
'environment.conf' => "modulepath = modules",
|
49
|
+
'manifests' => { 'site.pp' => "" },
|
50
|
+
'modules' => {
|
51
|
+
'm1' => {
|
52
|
+
'lib' => { 'puppet' => { 'type' => {
|
53
|
+
'test1.rb' => <<-EOF
|
54
|
+
module Puppet
|
55
|
+
Type.newtype(:test1) do
|
56
|
+
@doc = "Docs for resource"
|
57
|
+
newproperty(:message) do
|
58
|
+
desc "Docs for 'message' property"
|
59
|
+
end
|
60
|
+
newparam(:name) do
|
61
|
+
desc "Docs for 'name' parameter"
|
62
|
+
isnamevar
|
63
|
+
end
|
64
|
+
end; end
|
65
|
+
EOF
|
66
|
+
} }
|
67
|
+
},
|
68
|
+
},
|
69
|
+
'm2' => {
|
70
|
+
'lib' => { 'puppet' => { 'type' => {
|
71
|
+
'test2.rb' => <<-EOF
|
72
|
+
module Puppet
|
73
|
+
Type.newtype(:test2) do
|
74
|
+
@doc = "Docs for resource"
|
75
|
+
newproperty(:message) do
|
76
|
+
desc "Docs for 'message' property"
|
77
|
+
end
|
78
|
+
newparam(:name) do
|
79
|
+
desc "Docs for 'name' parameter"
|
80
|
+
isnamevar
|
81
|
+
end
|
82
|
+
end;end
|
83
|
+
EOF
|
84
|
+
} } },
|
85
|
+
}
|
86
|
+
}}})
|
87
|
+
end
|
88
|
+
|
89
|
+
let(:modulepath) do
|
90
|
+
File.join(dir, 'testing_generate', 'modules')
|
91
|
+
end
|
92
|
+
|
93
|
+
let(:m1) do
|
94
|
+
File.join(modulepath, 'm1')
|
95
|
+
end
|
96
|
+
|
97
|
+
let(:m2) do
|
98
|
+
File.join(modulepath, 'm2')
|
99
|
+
end
|
100
|
+
|
101
|
+
let(:outputdir) do
|
102
|
+
File.join(dir, 'testing_generate', '.resource_types')
|
103
|
+
end
|
104
|
+
|
105
|
+
around(:each) do |example|
|
106
|
+
Puppet.settings.initialize_global_settings
|
107
|
+
Puppet[:manifest] = ''
|
108
|
+
loader = Puppet::Environments::Directories.new(dir, [])
|
109
|
+
Puppet.override(:environments => loader) do
|
110
|
+
Puppet.override(:current_environment => loader.get('testing_generate')) do
|
111
|
+
example.run
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'error if format is given as something other than pcore' do
|
117
|
+
expect {
|
118
|
+
genface.types(:format => 'json')
|
119
|
+
}.to raise_exception(ArgumentError, /'json' is not a supported format for type generation/)
|
120
|
+
end
|
121
|
+
|
122
|
+
it 'accepts --format pcore as a format' do
|
123
|
+
expect {
|
124
|
+
genface.types(:format => 'pcore')
|
125
|
+
}.not_to raise_error
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'sets pcore as the default format' do
|
129
|
+
Puppet::Generate::Type.expects(:find_inputs).with(:pcore).returns([])
|
130
|
+
genface.types()
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'finds all files to generate types for' do
|
134
|
+
# using expects and returning what the side effect should have been
|
135
|
+
# (There is no way to call the original when mocking expected parameters).
|
136
|
+
input1 = Puppet::Generate::Type::Input.new(m1, File.join(m1, 'lib', 'puppet', 'type', 'test1.rb'), :pcore)
|
137
|
+
input2 = Puppet::Generate::Type::Input.new(m1, File.join(m2, 'lib', 'puppet', 'type', 'test2.rb'), :pcore)
|
138
|
+
Puppet::Generate::Type::Input.expects(:new).with(m1, File.join(m1, 'lib', 'puppet', 'type', 'test1.rb'), :pcore).returns(input1)
|
139
|
+
Puppet::Generate::Type::Input.expects(:new).with(m2, File.join(m2, 'lib', 'puppet', 'type', 'test2.rb'), :pcore).returns(input2)
|
140
|
+
genface.types
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'creates output directory <env>/.resource_types/ if it does not exist' do
|
144
|
+
expect(Puppet::FileSystem.exist?(outputdir)).to be(false)
|
145
|
+
genface.types
|
146
|
+
expect(Puppet::FileSystem.dir_exist?(outputdir)).to be(true)
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'creates output with matching names for each input' do
|
150
|
+
expect(Puppet::FileSystem.exist?(outputdir)).to be(false)
|
151
|
+
genface.types
|
152
|
+
children = Puppet::FileSystem.children(outputdir).map {|p| Puppet::FileSystem.basename_string(p) }
|
153
|
+
expect(children.sort).to eql(['test1.pp', 'test2.pp'])
|
154
|
+
end
|
155
|
+
|
156
|
+
it 'tolerates that <env>/.resource_types/ directory exists' do
|
157
|
+
Puppet::FileSystem.mkpath(outputdir)
|
158
|
+
expect(Puppet::FileSystem.exist?(outputdir)).to be(true)
|
159
|
+
genface.types
|
160
|
+
expect(Puppet::FileSystem.dir_exist?(outputdir)).to be(true)
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'errors if <env>/.resource_types exists and is not a directory' do
|
164
|
+
expect(Puppet::FileSystem.exist?(outputdir)).to be(false) # assert it is not already there
|
165
|
+
Puppet::FileSystem.touch(outputdir)
|
166
|
+
expect(Puppet::FileSystem.exist?(outputdir)).to be(true)
|
167
|
+
expect(Puppet::FileSystem.directory?(outputdir)).to be(false)
|
168
|
+
expect {
|
169
|
+
genface.types
|
170
|
+
}.to raise_error(ArgumentError, /The output directory '#{outputdir}' exists and is not a directory/)
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'does not overwrite if files exists and are up to date' do
|
174
|
+
# create them (first run)
|
175
|
+
genface.types
|
176
|
+
stats_before = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
177
|
+
# generate again
|
178
|
+
genface.types
|
179
|
+
stats_after = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
180
|
+
expect(stats_before <=> stats_after).to be(0)
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'overwrites if files exists that are not up to date while keeping up to date files' do
|
184
|
+
# create them (first run)
|
185
|
+
genface.types
|
186
|
+
stats_before = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
187
|
+
# fake change in input test1 - sorry about the sleep (which there was a better way to change the modtime
|
188
|
+
sleep(1)
|
189
|
+
Puppet::FileSystem.touch(File.join(m1, 'lib', 'puppet', 'type', 'test1.rb'))
|
190
|
+
# generate again
|
191
|
+
genface.types
|
192
|
+
# assert that test1 was overwritten (later) but not test2 (same time)
|
193
|
+
stats_after = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
194
|
+
expect(stats_before[1] <=> stats_after[1]).to be(0)
|
195
|
+
expect(stats_before[0] <=> stats_after[0]).to be(-1)
|
196
|
+
end
|
197
|
+
|
198
|
+
it 'overwrites all files when called with --force' do
|
199
|
+
# create them (first run)
|
200
|
+
genface.types
|
201
|
+
stats_before = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
202
|
+
# generate again
|
203
|
+
sleep(1) # sorry, if there is no delay the stats will be the same
|
204
|
+
genface.types(:force => true)
|
205
|
+
stats_after = [Puppet::FileSystem.stat(File.join(outputdir, 'test1.pp')), Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))]
|
206
|
+
expect(stats_before <=> stats_after).to be(-1)
|
207
|
+
end
|
208
|
+
|
209
|
+
it 'removes previously generated files from output when there is no input for it' do
|
210
|
+
# create them (first run)
|
211
|
+
genface.types
|
212
|
+
stat_before = Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))
|
213
|
+
# remove input
|
214
|
+
Puppet::FileSystem.unlink(File.join(m1, 'lib', 'puppet', 'type', 'test1.rb'))
|
215
|
+
# generate again
|
216
|
+
genface.types
|
217
|
+
# assert that test1 was deleted but not test2 (same time)
|
218
|
+
expect(Puppet::FileSystem.exist?(File.join(outputdir, 'test1.pp'))).to be(false)
|
219
|
+
stats_after = Puppet::FileSystem.stat(File.join(outputdir, 'test2.pp'))
|
220
|
+
expect(stat_before <=> stats_after).to be(0)
|
221
|
+
end
|
222
|
+
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
def from_an_interactive_terminal
|
227
|
+
STDIN.stubs(:tty?).returns(true)
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
data/spec/unit/face/help_spec.rb
CHANGED
@@ -48,6 +48,24 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
48
48
|
to eq(subject.help(:huzzah, :version => :current))
|
49
49
|
end
|
50
50
|
|
51
|
+
it "raises an ArgumentError if the face raises a StandardError" do
|
52
|
+
face = Puppet::Face[:module, :current]
|
53
|
+
face.stubs(:short_description).raises(StandardError, "whoops")
|
54
|
+
|
55
|
+
expect {
|
56
|
+
subject.help(:module)
|
57
|
+
}.to raise_error(ArgumentError, /Detail: "whoops"/)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "raises an ArgumentError if the face raises a LoadError" do
|
61
|
+
face = Puppet::Face[:module, :current]
|
62
|
+
face.stubs(:short_description).raises(LoadError, "cannot load such file -- yard")
|
63
|
+
|
64
|
+
expect {
|
65
|
+
subject.help(:module)
|
66
|
+
}.to raise_error(ArgumentError, /Detail: "cannot load such file -- yard"/)
|
67
|
+
end
|
68
|
+
|
51
69
|
context "when listing subcommands" do
|
52
70
|
subject { Puppet::Face[:help, :current].help }
|
53
71
|
|
@@ -84,6 +102,18 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
84
102
|
end
|
85
103
|
end
|
86
104
|
|
105
|
+
it "returns an 'unavailable' summary if the 'agent' application fails to generate help" do
|
106
|
+
Puppet::Application['agent'].class.any_instance.stubs(:help).raises(ArgumentError, "whoops")
|
107
|
+
|
108
|
+
expect(subject).to match(/agent\s+! Subcommand unavailable due to error\. Check error logs\./)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "returns an 'unavailable' summary if the legacy application raises a LoadError" do
|
112
|
+
Puppet::Application['agent'].class.any_instance.stubs(:help).raises(LoadError, "cannot load such file -- yard")
|
113
|
+
|
114
|
+
expect(subject).to match(/agent\s+! Subcommand unavailable due to error\. Check error logs\./)
|
115
|
+
end
|
116
|
+
|
87
117
|
context "face summaries" do
|
88
118
|
it "can generate face summaries" do
|
89
119
|
faces = Puppet::Face.faces
|
@@ -92,6 +122,13 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
92
122
|
expect(Puppet::Face[name, :current]).to have_a_summary
|
93
123
|
end
|
94
124
|
end
|
125
|
+
|
126
|
+
it "returns an 'unavailable' summary if the face application raises a LoadError" do
|
127
|
+
face = Puppet::Face[:module, :current]
|
128
|
+
face.stubs(:summary).raises(LoadError, "cannot load such file -- yard")
|
129
|
+
|
130
|
+
expect(Puppet::Face[:help, :current].help).to match(/module\s+! Subcommand unavailable due to error\. Check error logs\./)
|
131
|
+
end
|
95
132
|
end
|
96
133
|
|
97
134
|
it "lists all legacy applications" do
|
@@ -141,5 +178,21 @@ describe Puppet::Face[:help, '0.0.1'] do
|
|
141
178
|
expect { subject.help(appname, :whatever) }.
|
142
179
|
to raise_error ArgumentError, /Legacy subcommands don't take actions/
|
143
180
|
end
|
181
|
+
|
182
|
+
it "raises an ArgumentError if a legacy application raises a StandardError" do
|
183
|
+
Puppet::Application[appname].class.any_instance.stubs(:help).raises(StandardError, "whoops")
|
184
|
+
|
185
|
+
expect {
|
186
|
+
subject.help(appname)
|
187
|
+
}.to raise_error ArgumentError, /Detail: "whoops"/
|
188
|
+
end
|
189
|
+
|
190
|
+
it "raises an ArgumentError if a legacy application raises a LoadError" do
|
191
|
+
Puppet::Application[appname].class.any_instance.stubs(:help).raises(LoadError, "cannot load such file -- yard")
|
192
|
+
|
193
|
+
expect {
|
194
|
+
subject.help(appname)
|
195
|
+
}.to raise_error ArgumentError, /Detail: "cannot load such file -- yard"/
|
196
|
+
end
|
144
197
|
end
|
145
198
|
end
|