puppet 4.5.3-x86-mingw32 → 4.6.1-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 +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 +91 -48
- 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
@@ -1,9 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
module Puppet::Util::Plist
|
5
|
-
end
|
6
|
-
|
7
4
|
describe Puppet::Type.type(:package).provider(:pkgdmg) do
|
8
5
|
let(:resource) { Puppet::Type.type(:package).new(:name => 'foo', :provider => :pkgdmg) }
|
9
6
|
let(:provider) { described_class.new(resource) }
|
@@ -7,14 +7,30 @@ provider = Puppet::Type.type(:package).provider(:portage)
|
|
7
7
|
describe provider do
|
8
8
|
before do
|
9
9
|
packagename="sl"
|
10
|
-
@resource = stub('resource', :
|
10
|
+
@resource = stub('resource', :should => true)
|
11
|
+
@resource.stubs(:[]).with(:name).returns(packagename)
|
12
|
+
@resource.stubs(:[]).with(:category).returns(nil)
|
13
|
+
|
14
|
+
unslotted_packagename = "dev-lang/ruby"
|
15
|
+
@unslotted_resource = stub('resource', :should => true)
|
16
|
+
@unslotted_resource.stubs(:[]).with(:name).returns(unslotted_packagename)
|
17
|
+
@unslotted_resource.stubs(:[]).with(:category).returns(nil)
|
18
|
+
|
19
|
+
slotted_packagename = "dev-lang/ruby:1.9"
|
20
|
+
@slotted_resource = stub('resource', :should => true)
|
21
|
+
@slotted_resource.stubs(:[]).with(:name).returns(slotted_packagename)
|
22
|
+
@slotted_resource.stubs(:[]).with(:category).returns(nil)
|
23
|
+
|
11
24
|
@provider = provider.new(@resource)
|
12
|
-
|
25
|
+
@unslotted_provider = provider.new(@unslotted_resource)
|
26
|
+
@slotted_provider = provider.new(@slotted_resource)
|
27
|
+
|
13
28
|
portage = stub(:executable => "foo",:execute => true)
|
14
29
|
Puppet::Provider::CommandDefiner.stubs(:define).returns(portage)
|
15
30
|
|
16
31
|
@nomatch_result = ""
|
17
|
-
@match_result = "app-misc sl [] [] http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html http://www.izumix.org.uk/sl/ sophisticated graphical program which corrects your miss typing\n"
|
32
|
+
@match_result = "app-misc sl [] [] [] [] http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/index_e.html http://www.izumix.org.uk/sl/ sophisticated graphical program which corrects your miss typing\n"
|
33
|
+
@slot_match_result = "dev-lang ruby [2.0.0] [2.1.0] [1.8.7:1.8,1.9.2:1.9,2.0.0:2.0] [1.9.3:1.9,2.0.1:2.0,2.1.0:2.1] http://www.ruby-lang.org/ An object-oriented scripting language\n"
|
18
34
|
end
|
19
35
|
|
20
36
|
it "is versionable" do
|
@@ -27,20 +43,20 @@ describe provider do
|
|
27
43
|
|
28
44
|
it "uses :emerge to install packages" do
|
29
45
|
@provider.expects(:emerge)
|
30
|
-
|
46
|
+
|
31
47
|
@provider.install
|
32
48
|
end
|
33
49
|
|
34
50
|
it "uses query to find the latest package" do
|
35
51
|
@provider.expects(:query).returns({:versions_available => "myversion"})
|
36
|
-
|
52
|
+
|
37
53
|
@provider.latest
|
38
54
|
end
|
39
55
|
|
40
56
|
it "uses eix to search the lastest version of a package" do
|
41
57
|
@provider.stubs(:update_eix)
|
42
58
|
@provider.expects(:eix).returns(StringIO.new(@match_result))
|
43
|
-
|
59
|
+
|
44
60
|
@provider.query
|
45
61
|
end
|
46
62
|
|
@@ -56,14 +72,54 @@ describe provider do
|
|
56
72
|
@provider.stubs(:update_eix)
|
57
73
|
@provider.expects(:eix).returns(StringIO.new(@match_result))
|
58
74
|
@provider.class.expects(:eix_search_arguments).returns([])
|
59
|
-
|
75
|
+
|
60
76
|
@provider.query
|
61
77
|
end
|
62
78
|
|
63
79
|
it "can handle search output with empty square brackets" do
|
64
80
|
@provider.stubs(:update_eix)
|
65
81
|
@provider.expects(:eix).returns(StringIO.new(@match_result))
|
66
|
-
|
82
|
+
|
67
83
|
expect(@provider.query[:name]).to eq("sl")
|
68
84
|
end
|
85
|
+
|
86
|
+
it "can provide the package name without slot" do
|
87
|
+
expect(@slotted_provider.package_name_without_slot).to eq("dev-lang/ruby")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "can extract the slot from the package name" do
|
91
|
+
expect(@slotted_provider.package_slot).to eq("1.9")
|
92
|
+
end
|
93
|
+
|
94
|
+
it "returns nil for as the slot when no slot is specified" do
|
95
|
+
expect(@provider.package_slot).to be_nil
|
96
|
+
end
|
97
|
+
|
98
|
+
it "provides correct package atoms for unslotted packages" do
|
99
|
+
expect(@provider.package_atom_with_version("1.0")).to eq("=sl-1.0")
|
100
|
+
end
|
101
|
+
|
102
|
+
it "provides correct package atoms for slotted packages" do
|
103
|
+
expect(@slotted_provider.package_atom_with_version("1.9.3")).to eq("=dev-lang/ruby-1.9.3:1.9")
|
104
|
+
end
|
105
|
+
|
106
|
+
it "can handle search output with slots for unslotted packages" do
|
107
|
+
@unslotted_provider.stubs(:update_eix)
|
108
|
+
@unslotted_provider.expects(:eix).returns(StringIO.new(@slot_match_result))
|
109
|
+
|
110
|
+
result = @unslotted_provider.query
|
111
|
+
expect(result[:name]).to eq("ruby")
|
112
|
+
expect(result[:ensure]).to eq("2.0.0")
|
113
|
+
expect(result[:version_available]).to eq("2.1.0")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "can handle search output with slots" do
|
117
|
+
@slotted_provider.stubs(:update_eix)
|
118
|
+
@slotted_provider.expects(:eix).returns(StringIO.new(@slot_match_result))
|
119
|
+
|
120
|
+
result = @slotted_provider.query
|
121
|
+
expect(result[:name]).to eq("ruby")
|
122
|
+
expect(result[:ensure]).to eq("1.9.2")
|
123
|
+
expect(result[:version_available]).to eq("1.9.3")
|
124
|
+
end
|
69
125
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# Note that much of the functionality of the tdnf provider is already tested with yum provider tests,
|
4
|
+
# as yum is the parent provider, via dnf
|
5
|
+
|
6
|
+
provider_class = Puppet::Type.type(:package).provider(:tdnf)
|
7
|
+
|
8
|
+
context 'default' do
|
9
|
+
it 'should be the default provider on PhotonOS' do
|
10
|
+
Facter.stubs(:value).with(:osfamily).returns(:redhat)
|
11
|
+
Facter.stubs(:value).with(:operatingsystem).returns("PhotonOS")
|
12
|
+
expect(provider_class).to be_default
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe provider_class do
|
17
|
+
it_behaves_like 'RHEL package provider', provider_class, 'tdnf'
|
18
|
+
end
|
@@ -61,7 +61,10 @@ describe Puppet::Provider::Package::Windows::Package do
|
|
61
61
|
|
62
62
|
expect {
|
63
63
|
subject.with_key{ |key, values| }
|
64
|
-
}.to raise_error
|
64
|
+
}.to raise_error do |error|
|
65
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
66
|
+
expect(error.code).to eq(5) # ERROR_ACCESS_DENIED
|
67
|
+
end
|
65
68
|
end
|
66
69
|
end
|
67
70
|
|
@@ -131,7 +131,10 @@ describe Puppet::Type.type(:package).provider(:windows) do
|
|
131
131
|
|
132
132
|
expect do
|
133
133
|
provider.install
|
134
|
-
end.to raise_error
|
134
|
+
end.to raise_error do |error|
|
135
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
136
|
+
expect(error.code).to eq(5) # ERROR_ACCESS_DENIED
|
137
|
+
end
|
135
138
|
end
|
136
139
|
end
|
137
140
|
|
@@ -183,7 +186,10 @@ describe Puppet::Type.type(:package).provider(:windows) do
|
|
183
186
|
|
184
187
|
expect do
|
185
188
|
provider.uninstall
|
186
|
-
end.to raise_error
|
189
|
+
end.to raise_error do |error|
|
190
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
191
|
+
expect(error.code).to eq(5) # ERROR_ACCESS_DENIED
|
192
|
+
end
|
187
193
|
end
|
188
194
|
end
|
189
195
|
|
@@ -5,356 +5,18 @@ provider_class = Puppet::Type.type(:package).provider(:yum)
|
|
5
5
|
|
6
6
|
describe provider_class do
|
7
7
|
include PuppetSpec::Fixtures
|
8
|
-
|
9
|
-
let(:name) { 'mypackage' }
|
10
|
-
let(:resource) do
|
11
|
-
Puppet::Type.type(:package).new(
|
12
|
-
:name => name,
|
13
|
-
:ensure => :installed,
|
14
|
-
:provider => 'yum'
|
15
|
-
)
|
16
|
-
end
|
17
|
-
|
18
|
-
let(:provider) do
|
19
|
-
provider = provider_class.new
|
20
|
-
provider.resource = resource
|
21
|
-
provider
|
22
|
-
end
|
23
|
-
|
24
|
-
let(:arch) { 'x86_64' }
|
25
|
-
let(:arch_resource) do
|
26
|
-
Puppet::Type.type(:package).new(
|
27
|
-
:name => "#{name}.#{arch}",
|
28
|
-
:ensure => :installed,
|
29
|
-
:provider => 'yum'
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
let(:arch_provider) do
|
34
|
-
provider = provider_class.new
|
35
|
-
provider.resource = arch_resource
|
36
|
-
provider
|
37
|
-
end
|
38
|
-
|
39
|
-
before do
|
40
|
-
provider_class.stubs(:command).with(:cmd).returns('/usr/bin/yum')
|
41
|
-
provider.stubs(:rpm).returns 'rpm'
|
42
|
-
provider.stubs(:get).with(:version).returns '1'
|
43
|
-
provider.stubs(:get).with(:release).returns '1'
|
44
|
-
provider.stubs(:get).with(:arch).returns 'i386'
|
45
|
-
end
|
46
|
-
|
47
|
-
describe 'provider features' do
|
48
|
-
it { is_expected.to be_versionable }
|
49
|
-
it { is_expected.to be_install_options }
|
50
|
-
it { is_expected.to be_virtual_packages }
|
51
|
-
end
|
52
|
-
|
53
|
-
# provider should repond to the following methods
|
54
|
-
[:install, :latest, :update, :purge, :install_options].each do |method|
|
55
|
-
it "should have a(n) #{method}" do
|
56
|
-
expect(provider).to respond_to(method)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe 'when installing' do
|
61
|
-
before(:each) do
|
62
|
-
Puppet::Util.stubs(:which).with("rpm").returns("/bin/rpm")
|
63
|
-
provider.stubs(:which).with("rpm").returns("/bin/rpm")
|
64
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "--version"], {:combine => true, :custom_environment => {}, :failonfail => true}).returns("4.10.1\n").at_most_once
|
65
|
-
Facter.stubs(:value).with(:operatingsystemmajrelease).returns('6')
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should call yum install for :installed' do
|
69
|
-
resource.stubs(:should).with(:ensure).returns :installed
|
70
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :install, 'mypackage'])
|
71
|
-
provider.install
|
72
|
-
end
|
73
|
-
|
74
|
-
context 'on el-5' do
|
75
|
-
before(:each) do
|
76
|
-
Facter.stubs(:value).with(:operatingsystemmajrelease).returns('5')
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should catch yum install failures when status code is wrong' do
|
80
|
-
resource.stubs(:should).with(:ensure).returns :installed
|
81
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-e', '0', '-y', :install, name]).returns("No package #{name} available.")
|
82
|
-
expect {
|
83
|
-
provider.install
|
84
|
-
}.to raise_error(Puppet::Error, "Could not find package #{name}")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'should use :install to update' do
|
89
|
-
provider.expects(:install)
|
90
|
-
provider.update
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'should be able to set version' do
|
94
|
-
version = '1.2'
|
95
|
-
resource[:ensure] = version
|
96
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :install, "#{name}-#{version}"])
|
97
|
-
provider.stubs(:query).returns :ensure => version
|
98
|
-
provider.install
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'should handle partial versions specified' do
|
102
|
-
version = '1.3.4'
|
103
|
-
resource[:ensure] = version
|
104
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :install, 'mypackage-1.3.4'])
|
105
|
-
provider.stubs(:query).returns :ensure => '1.3.4-1.el6'
|
106
|
-
provider.install
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should be able to downgrade' do
|
110
|
-
current_version = '1.2'
|
111
|
-
version = '1.0'
|
112
|
-
resource[:ensure] = '1.0'
|
113
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :downgrade, "#{name}-#{version}"])
|
114
|
-
provider.stubs(:query).returns(:ensure => current_version).then.returns(:ensure => version)
|
115
|
-
provider.install
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'should accept install options' do
|
119
|
-
resource[:ensure] = :installed
|
120
|
-
resource[:install_options] = ['-t', {'-x' => 'expackage'}]
|
121
|
-
|
122
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', ['-t', '-x=expackage'], :install, name])
|
123
|
-
provider.install
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'allow virtual packages' do
|
127
|
-
resource[:ensure] = :installed
|
128
|
-
resource[:allow_virtual] = true
|
129
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :list, name]).never
|
130
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :install, name])
|
131
|
-
provider.install
|
132
|
-
end
|
133
|
-
|
134
|
-
it 'moves architecture to end of version' do
|
135
|
-
version = '1.2.3'
|
136
|
-
arch_resource[:ensure] = version
|
137
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-d', '0', '-e', '0', '-y', :install, "#{name}-#{version}.#{arch}"])
|
138
|
-
arch_provider.stubs(:query).returns :ensure => version
|
139
|
-
arch_provider.install
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
describe 'when uninstalling' do
|
144
|
-
it 'should use erase to purge' do
|
145
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/yum', '-y', :erase, name])
|
146
|
-
provider.purge
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
it 'should be versionable' do
|
151
|
-
expect(provider).to be_versionable
|
152
|
-
end
|
153
|
-
|
154
|
-
describe 'determining the latest version available for a package' do
|
155
|
-
|
156
|
-
it "passes the value of enablerepo install_options when querying" do
|
157
|
-
resource[:install_options] = [
|
158
|
-
{'--enablerepo' => 'contrib'},
|
159
|
-
{'--enablerepo' => 'centosplus'},
|
160
|
-
]
|
161
|
-
provider.stubs(:properties).returns({:ensure => '3.4.5'})
|
162
|
-
|
163
|
-
described_class.expects(:latest_package_version).with(name, ['contrib', 'centosplus'], [], [])
|
164
|
-
provider.latest
|
165
|
-
end
|
166
|
-
|
167
|
-
it "passes the value of disablerepo install_options when querying" do
|
168
|
-
resource[:install_options] = [
|
169
|
-
{'--disablerepo' => 'updates'},
|
170
|
-
{'--disablerepo' => 'centosplus'},
|
171
|
-
]
|
172
|
-
provider.stubs(:properties).returns({:ensure => '3.4.5'})
|
173
|
-
|
174
|
-
described_class.expects(:latest_package_version).with(name, [], ['updates', 'centosplus'], [])
|
175
|
-
provider.latest
|
176
|
-
end
|
177
|
-
|
178
|
-
it "passes the value of disableexcludes install_options when querying" do
|
179
|
-
resource[:install_options] = [
|
180
|
-
{'--disableexcludes' => 'main'},
|
181
|
-
{'--disableexcludes' => 'centosplus'},
|
182
|
-
]
|
183
|
-
provider.stubs(:properties).returns({:ensure => '3.4.5'})
|
184
|
-
|
185
|
-
described_class.expects(:latest_package_version).with(name, [], [], ['main', 'centosplus'])
|
186
|
-
provider.latest
|
187
|
-
end
|
188
|
-
|
189
|
-
describe 'and a newer version is not available' do
|
190
|
-
before :each do
|
191
|
-
described_class.stubs(:latest_package_version).with(name, [], [], []).returns nil
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'raises an error the package is not installed' do
|
195
|
-
provider.stubs(:properties).returns({:ensure => :absent})
|
196
|
-
expect {
|
197
|
-
provider.latest
|
198
|
-
}.to raise_error(Puppet::DevError, 'Tried to get latest on a missing package')
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'returns version of the currently installed package' do
|
202
|
-
provider.stubs(:properties).returns({:ensure => '3.4.5'})
|
203
|
-
expect(provider.latest).to eq('3.4.5')
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
describe 'and a newer version is available' do
|
208
|
-
let(:latest_version) do
|
209
|
-
{
|
210
|
-
:name => name,
|
211
|
-
:epoch => '1',
|
212
|
-
:version => '2.3.4',
|
213
|
-
:release => '5',
|
214
|
-
:arch => 'i686',
|
215
|
-
}
|
216
|
-
end
|
217
|
-
|
218
|
-
it 'includes the epoch in the version string' do
|
219
|
-
described_class.stubs(:latest_package_version).with(name, [], [], []).returns(latest_version)
|
220
|
-
expect(provider.latest).to eq('1:2.3.4-5')
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
describe "lazy loading of latest package versions" do
|
226
|
-
before { described_class.clear }
|
227
|
-
after { described_class.clear }
|
228
|
-
|
229
|
-
let(:mypackage_version) do
|
230
|
-
{
|
231
|
-
:name => name,
|
232
|
-
:epoch => '1',
|
233
|
-
:version => '2.3.4',
|
234
|
-
:release => '5',
|
235
|
-
:arch => 'i686',
|
236
|
-
}
|
237
|
-
end
|
238
|
-
|
239
|
-
let(:mypackage_newerversion) do
|
240
|
-
{
|
241
|
-
:name => name,
|
242
|
-
:epoch => '1',
|
243
|
-
:version => '4.5.6',
|
244
|
-
:release => '7',
|
245
|
-
:arch => 'i686',
|
246
|
-
}
|
247
|
-
end
|
248
|
-
|
249
|
-
let(:latest_versions) { {name => [mypackage_version]} }
|
250
|
-
let(:enabled_versions) { {name => [mypackage_newerversion]} }
|
251
|
-
|
252
|
-
it "returns the version hash if the package was found" do
|
253
|
-
described_class.expects(:check_updates).with([], [], []).once.returns(latest_versions)
|
254
|
-
version = described_class.latest_package_version(name, [], [], [])
|
255
|
-
expect(version).to eq(mypackage_version)
|
256
|
-
end
|
257
|
-
|
258
|
-
it "is nil if the package was not found in the query" do
|
259
|
-
described_class.expects(:check_updates).with([], [], []).once.returns(latest_versions)
|
260
|
-
version = described_class.latest_package_version('nopackage', [], [], [])
|
261
|
-
expect(version).to be_nil
|
262
|
-
end
|
263
|
-
|
264
|
-
it "caches the package list and reuses that for subsequent queries" do
|
265
|
-
described_class.expects(:check_updates).with([], [], []).once.returns(latest_versions)
|
266
|
-
|
267
|
-
2.times {
|
268
|
-
version = described_class.latest_package_version(name, [], [], [])
|
269
|
-
expect(version).to eq mypackage_version
|
270
|
-
}
|
271
|
-
end
|
272
|
-
|
273
|
-
it "caches separate lists for each combination of 'enablerepo' and 'disablerepo' and 'disableexcludes'" do
|
274
|
-
described_class.expects(:check_updates).with([], [], []).once.returns(latest_versions)
|
275
|
-
described_class.expects(:check_updates).with(['enabled'], ['disabled'], ['disableexcludes']).once.returns(enabled_versions)
|
276
|
-
|
277
|
-
2.times {
|
278
|
-
version = described_class.latest_package_version(name, [], [], [])
|
279
|
-
expect(version).to eq mypackage_version
|
280
|
-
}
|
281
|
-
|
282
|
-
2.times {
|
283
|
-
version = described_class.latest_package_version(name, ['enabled'], ['disabled'], ['disableexcludes'])
|
284
|
-
expect(version).to eq(mypackage_newerversion)
|
285
|
-
}
|
286
|
-
end
|
287
|
-
end
|
288
|
-
|
289
|
-
describe "executing yum check-update" do
|
290
|
-
it "passes repos to enable to 'yum check-update'" do
|
291
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
292
|
-
expect(args).to eq %w[/usr/bin/yum check-update --enablerepo=updates --enablerepo=centosplus]
|
293
|
-
end.returns(stub(:exitstatus => 0))
|
294
|
-
described_class.check_updates(%w[updates centosplus], [], [])
|
295
|
-
end
|
296
|
-
|
297
|
-
it "passes repos to disable to 'yum check-update'" do
|
298
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
299
|
-
expect(args).to eq %w[/usr/bin/yum check-update --disablerepo=updates --disablerepo=centosplus]
|
300
|
-
end.returns(stub(:exitstatus => 0))
|
301
|
-
described_class.check_updates([],%w[updates centosplus], [])
|
302
|
-
end
|
303
|
-
|
304
|
-
it "passes a combination of repos to enable and disable to 'yum check-update'" do
|
305
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
306
|
-
expect(args).to eq %w[/usr/bin/yum check-update --enablerepo=os --enablerepo=contrib --disablerepo=updates --disablerepo=centosplus]
|
307
|
-
end.returns(stub(:exitstatus => 0))
|
308
|
-
described_class.check_updates(%w[os contrib], %w[updates centosplus], [])
|
309
|
-
end
|
310
|
-
|
311
|
-
it "passes disableexcludes to 'yum check-update'" do
|
312
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
313
|
-
expect(args).to eq %w[/usr/bin/yum check-update --disableexcludes=main --disableexcludes=centosplus]
|
314
|
-
end.returns(stub(:exitstatus => 0))
|
315
|
-
described_class.check_updates([], [], %w[main centosplus])
|
316
|
-
end
|
317
|
-
|
318
|
-
it "passes all options to 'yum check-update'" do
|
319
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
320
|
-
expect(args).to eq %w[/usr/bin/yum check-update --enablerepo=a --enablerepo=b --disablerepo=c
|
321
|
-
--disablerepo=d --disableexcludes=e --disableexcludes=f]
|
322
|
-
end.returns(stub(:exitstatus => 0))
|
323
|
-
described_class.check_updates(%w[a b], %w[c d], %w[e f])
|
324
|
-
end
|
325
|
-
|
326
|
-
it "returns an empty hash if 'yum check-update' returned 0" do
|
327
|
-
Puppet::Util::Execution.expects(:execute).returns(stub :exitstatus => 0)
|
328
|
-
expect(described_class.check_updates([], [], [])).to be_empty
|
329
|
-
end
|
330
|
-
|
331
|
-
it "returns a populated hash if 'yum check-update returned 100'" do
|
332
|
-
output = stub(:exitstatus => 100)
|
333
|
-
Puppet::Util::Execution.expects(:execute).returns(output)
|
334
|
-
described_class.expects(:parse_updates).with(output).returns({:has => :updates})
|
335
|
-
expect(described_class.check_updates([], [], [])).to eq({:has => :updates})
|
336
|
-
end
|
337
|
-
|
338
|
-
it "returns an empty hash if 'yum check-update' returned an exit code that was not 0 or 100" do
|
339
|
-
Puppet::Util::Execution.expects(:execute).returns(stub(:exitstatus => 1))
|
340
|
-
described_class.expects(:warning).with('Could not check for updates, \'/usr/bin/yum check-update\' exited with 1')
|
341
|
-
expect(described_class.check_updates([], [], [])).to eq({})
|
342
|
-
end
|
343
|
-
end
|
8
|
+
it_behaves_like 'RHEL package provider', provider_class, 'yum'
|
344
9
|
|
345
10
|
describe "parsing the output of check-update" do
|
346
|
-
|
347
11
|
describe "with no multiline entries" do
|
348
|
-
let(:check_update) { File.read(my_fixture(
|
12
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-simple.txt")) }
|
349
13
|
let(:output) { described_class.parse_updates(check_update) }
|
350
|
-
|
351
14
|
it 'creates an entry for each package keyed on the package name' do
|
352
15
|
expect(output['curl']).to eq([{:name => 'curl', :epoch => '0', :version => '7.32.0', :release => '10.fc20', :arch => 'i686'}, {:name => 'curl', :epoch => '0', :version => '7.32.0', :release => '10.fc20', :arch => 'x86_64'}])
|
353
16
|
expect(output['gawk']).to eq([{:name => 'gawk', :epoch => '0', :version => '4.1.0', :release => '3.fc20', :arch => 'i686'}])
|
354
17
|
expect(output['dhclient']).to eq([{:name => 'dhclient', :epoch => '12', :version => '4.1.1', :release => '38.P1.fc20', :arch => 'i686'}])
|
355
18
|
expect(output['selinux-policy']).to eq([{:name => 'selinux-policy', :epoch => '0', :version => '3.12.1', :release => '163.fc20', :arch => 'noarch'}])
|
356
19
|
end
|
357
|
-
|
358
20
|
it 'creates an entry for each package keyed on the package name and package architecture' do
|
359
21
|
expect(output['curl.i686']).to eq([{:name => 'curl', :epoch => '0', :version => '7.32.0', :release => '10.fc20', :arch => 'i686'}])
|
360
22
|
expect(output['curl.x86_64']).to eq([{:name => 'curl', :epoch => '0', :version => '7.32.0', :release => '10.fc20', :arch => 'x86_64'}])
|
@@ -363,20 +25,16 @@ describe provider_class do
|
|
363
25
|
expect(output['selinux-policy.noarch']).to eq([{:name => 'selinux-policy', :epoch => '0', :version => '3.12.1', :release => '163.fc20', :arch => 'noarch'}])
|
364
26
|
end
|
365
27
|
end
|
366
|
-
|
367
28
|
describe "with multiline entries" do
|
368
|
-
let(:check_update) { File.read(my_fixture(
|
29
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-multiline.txt")) }
|
369
30
|
let(:output) { described_class.parse_updates(check_update) }
|
370
|
-
|
371
31
|
it "parses multi-line values as a single package tuple" do
|
372
32
|
expect(output['libpcap']).to eq([{:name => 'libpcap', :epoch => '14', :version => '1.4.0', :release => '1.20130826git2dbcaa1.el6', :arch => 'x86_64'}])
|
373
33
|
end
|
374
34
|
end
|
375
|
-
|
376
35
|
describe "with obsoleted packages" do
|
377
|
-
let(:check_update) { File.read(my_fixture(
|
36
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-obsoletes.txt")) }
|
378
37
|
let(:output) { described_class.parse_updates(check_update) }
|
379
|
-
|
380
38
|
it "ignores all entries including and after 'Obsoleting Packages'" do
|
381
39
|
expect(output).not_to include("Obsoleting")
|
382
40
|
expect(output).not_to include("NetworkManager-bluetooth.x86_64")
|
@@ -384,9 +42,8 @@ describe provider_class do
|
|
384
42
|
end
|
385
43
|
end
|
386
44
|
describe "with security notifications" do
|
387
|
-
let(:check_update) { File.read(my_fixture(
|
45
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-security.txt")) }
|
388
46
|
let(:output) { described_class.parse_updates(check_update) }
|
389
|
-
|
390
47
|
it "ignores all entries including and after 'Security'" do
|
391
48
|
expect(output).not_to include("Security")
|
392
49
|
end
|
@@ -395,9 +52,8 @@ describe provider_class do
|
|
395
52
|
end
|
396
53
|
end
|
397
54
|
describe "with broken update notices" do
|
398
|
-
let(:check_update) { File.read(my_fixture(
|
55
|
+
let(:check_update) { File.read(my_fixture("yum-check-update-broken-notices.txt")) }
|
399
56
|
let(:output) { described_class.parse_updates(check_update) }
|
400
|
-
|
401
57
|
it "ignores all entries including and after 'Update'" do
|
402
58
|
expect(output).not_to include("Update")
|
403
59
|
end
|
@@ -406,31 +62,4 @@ describe provider_class do
|
|
406
62
|
end
|
407
63
|
end
|
408
64
|
end
|
409
|
-
|
410
|
-
describe "parsing a line from yum check-update" do
|
411
|
-
it "splits up the package name and architecture fields" do
|
412
|
-
checkupdate = %w[curl.i686 7.32.0-10.fc20]
|
413
|
-
|
414
|
-
parsed = described_class.update_to_hash(*checkupdate)
|
415
|
-
expect(parsed[:name]).to eq 'curl'
|
416
|
-
expect(parsed[:arch]).to eq 'i686'
|
417
|
-
end
|
418
|
-
|
419
|
-
it "splits up the epoch, version, and release fields" do
|
420
|
-
checkupdate = %w[dhclient.i686 12:4.1.1-38.P1.el6.centos]
|
421
|
-
parsed = described_class.update_to_hash(*checkupdate)
|
422
|
-
expect(parsed[:epoch]).to eq '12'
|
423
|
-
expect(parsed[:version]).to eq '4.1.1'
|
424
|
-
expect(parsed[:release]).to eq '38.P1.el6.centos'
|
425
|
-
end
|
426
|
-
|
427
|
-
it "sets the epoch to 0 when an epoch is not specified" do
|
428
|
-
checkupdate = %w[curl.i686 7.32.0-10.fc20]
|
429
|
-
|
430
|
-
parsed = described_class.update_to_hash(*checkupdate)
|
431
|
-
expect(parsed[:epoch]).to eq '0'
|
432
|
-
expect(parsed[:version]).to eq '7.32.0'
|
433
|
-
expect(parsed[:release]).to eq '10.fc20'
|
434
|
-
end
|
435
|
-
end
|
436
65
|
end
|