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
@@ -208,6 +208,12 @@ describe 'The type calculator' do
|
|
208
208
|
end
|
209
209
|
end
|
210
210
|
|
211
|
+
context 'sensitive' do
|
212
|
+
it 'translates to PSensitiveType' do
|
213
|
+
expect(calculator.infer(PSensitiveType::Sensitive.new("hunter2")).class).to eq(PSensitiveType)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
211
217
|
context 'version' do
|
212
218
|
it 'translates to PVersionType' do
|
213
219
|
expect(calculator.infer(Semantic::Version.new(1,0,0)).class).to eq(PSemVerType)
|
@@ -651,7 +657,7 @@ describe 'The type calculator' do
|
|
651
657
|
# Add a non-empty variant
|
652
658
|
all_instances << variant_t(PAnyType::DEFAULT, PUnitType::DEFAULT)
|
653
659
|
# Add a type alias that doesn't resolve to 't'
|
654
|
-
all_instances << type_alias_t('MyInt', 'Integer').resolve(TypeParser.
|
660
|
+
all_instances << type_alias_t('MyInt', 'Integer').resolve(TypeParser.singleton, nil)
|
655
661
|
|
656
662
|
all_instances.each { |i| expect(i).not_to be_assignable_to(t) }
|
657
663
|
end
|
@@ -1347,7 +1353,7 @@ describe 'The type calculator' do
|
|
1347
1353
|
end
|
1348
1354
|
|
1349
1355
|
context 'for TypeAlias, such that' do
|
1350
|
-
let!(:parser) { TypeParser.
|
1356
|
+
let!(:parser) { TypeParser.singleton }
|
1351
1357
|
|
1352
1358
|
it 'it is assignable to the type that it is an alias for' do
|
1353
1359
|
t = type_alias_t('Alias', 'Integer').resolve(parser, nil)
|
@@ -1715,7 +1721,7 @@ describe 'The type calculator' do
|
|
1715
1721
|
factory = Model::Factory
|
1716
1722
|
params = [factory.PARAM('a')]
|
1717
1723
|
the_block = factory.LAMBDA(params,factory.literal(42))
|
1718
|
-
the_closure = Evaluator::Closure.new(:fake_evaluator, the_block, :fake_scope)
|
1724
|
+
the_closure = Evaluator::Closure::Dynamic.new(:fake_evaluator, the_block, :fake_scope)
|
1719
1725
|
expect(calculator.instance?(all_callables_t, the_closure)).to be_truthy
|
1720
1726
|
expect(calculator.instance?(callable_t(object_t), the_closure)).to be_truthy
|
1721
1727
|
expect(calculator.instance?(callable_t(object_t, object_t), the_closure)).to be_falsey
|
@@ -1740,7 +1746,7 @@ describe 'The type calculator' do
|
|
1740
1746
|
end
|
1741
1747
|
|
1742
1748
|
context 'and t is a TypeAlias' do
|
1743
|
-
let!(:parser) { TypeParser.
|
1749
|
+
let!(:parser) { TypeParser.singleton }
|
1744
1750
|
|
1745
1751
|
it 'should consider x an instance of the aliased simple type' do
|
1746
1752
|
t = type_alias_t('Alias', 'Integer').resolve(parser, nil)
|
@@ -336,7 +336,7 @@ end
|
|
336
336
|
end
|
337
337
|
|
338
338
|
it "should yield \"SemVer['1.x', '3.x']\" for the PSemVerType['1.x', '3.x']" do
|
339
|
-
expect(s.string(PSemVerType.new('1.x', '3.x'))).to eq("SemVer['1.x', '3.x']")
|
339
|
+
expect(s.string(PSemVerType.new(['1.x', '3.x']))).to eq("SemVer['1.x', '3.x']")
|
340
340
|
end
|
341
341
|
|
342
342
|
it 'should present a valid simple name' do
|
@@ -138,7 +138,7 @@ describe 'the type mismatch describer' do
|
|
138
138
|
end
|
139
139
|
|
140
140
|
context 'when using present tense' do
|
141
|
-
let(:parser) { TypeParser.
|
141
|
+
let(:parser) { TypeParser.singleton }
|
142
142
|
let(:subject) { TypeMismatchDescriber.singleton }
|
143
143
|
it 'reports a missing parameter as "has no parameter"' do
|
144
144
|
t = parser.parse('Struct[{a=>String}]')
|
@@ -166,7 +166,7 @@ describe 'the type mismatch describer' do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
context 'when using past tense' do
|
169
|
-
let(:parser) { TypeParser.
|
169
|
+
let(:parser) { TypeParser.singleton }
|
170
170
|
let(:subject) { TypeMismatchDescriber.singleton }
|
171
171
|
it 'reports a missing parameter as "did not have a parameter"' do
|
172
172
|
t = parser.parse('Struct[{a=>String}]')
|
@@ -6,7 +6,7 @@ module Types
|
|
6
6
|
describe TypeParser do
|
7
7
|
extend RSpec::Matchers::DSL
|
8
8
|
|
9
|
-
let(:parser) { TypeParser.
|
9
|
+
let(:parser) { TypeParser.singleton }
|
10
10
|
let(:types) { TypeFactory }
|
11
11
|
it "rejects a puppet expression" do
|
12
12
|
expect { parser.parse("1 + 1") }.to raise_error(Puppet::ParseError, /The expression <1 \+ 1> is not a valid type specification/)
|
@@ -542,7 +542,7 @@ describe 'Puppet Type System' do
|
|
542
542
|
type Integer = String
|
543
543
|
notice 'hello' =~ Integer
|
544
544
|
CODE
|
545
|
-
expect{ eval_and_collect_notices(code) }.to raise_error(/Attempt to redefine entity 'type\/integer'. Originally set by Puppet-Type-System\/Static-Loader/)
|
545
|
+
expect{ eval_and_collect_notices(code) }.to raise_error(/Attempt to redefine entity 'http:\/\/puppet\.com\/2016\.1\/runtime\/type\/integer'. Originally set by Puppet-Type-System\/Static-Loader/)
|
546
546
|
end
|
547
547
|
end
|
548
548
|
|
@@ -16,9 +16,26 @@ describe "validating 4x" do
|
|
16
16
|
acceptor
|
17
17
|
end
|
18
18
|
|
19
|
-
it 'should raise error for illegal names' do
|
19
|
+
it 'should raise error for illegal class names' do
|
20
20
|
expect(validate(parse('class aaa::_bbb {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
21
21
|
expect(validate(parse('class Aaa {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
22
|
+
expect(validate(parse('class ::aaa {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise error for illegal define names' do
|
26
|
+
expect(validate(parse('define aaa::_bbb {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
27
|
+
expect(validate(parse('define Aaa {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
28
|
+
expect(validate(parse('define ::aaa {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should raise error for illegal function names' do
|
32
|
+
expect(validate(parse('function aaa::_bbb() {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
33
|
+
expect(validate(parse('function Aaa() {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
34
|
+
expect(validate(parse('function ::aaa() {}'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should raise error for illegal type names' do
|
38
|
+
expect(validate(parse('type ::Aaa = Any'))).to have_issue(Puppet::Pops::Issues::ILLEGAL_DEFINITION_NAME)
|
22
39
|
end
|
23
40
|
|
24
41
|
it 'should raise error for illegal variable names' do
|
data/spec/unit/property_spec.rb
CHANGED
@@ -146,6 +146,11 @@ describe Puppet::Property do
|
|
146
146
|
property.class.stubs(:value_collection).returns(collection)
|
147
147
|
expect(property.event.invalidate_refreshes).to be_truthy
|
148
148
|
end
|
149
|
+
|
150
|
+
it "sets the redacted field on the event when the property is sensitive" do
|
151
|
+
property.sensitive = true
|
152
|
+
expect(property.event.redacted).to eq true
|
153
|
+
end
|
149
154
|
end
|
150
155
|
|
151
156
|
describe "when defining new values" do
|
@@ -413,6 +418,7 @@ describe Puppet::Property do
|
|
413
418
|
it "should return true if should is empty with is => #{input.inspect}" do
|
414
419
|
property.should = []
|
415
420
|
expect(property).to be_insync(input)
|
421
|
+
expect(property.insync_values?([], input)).to be true
|
416
422
|
end
|
417
423
|
end
|
418
424
|
end
|
@@ -427,35 +433,52 @@ describe Puppet::Property do
|
|
427
433
|
it_should_behave_like "#insync?"
|
428
434
|
|
429
435
|
context "if the should value is an array" do
|
430
|
-
|
436
|
+
let(:input) { [1,2] }
|
437
|
+
before :each do property.should = input end
|
431
438
|
|
432
439
|
it "should match if is exactly matches" do
|
433
|
-
|
440
|
+
val = [1, 2]
|
441
|
+
expect(property).to be_insync val
|
442
|
+
expect(property.insync_values?(input, val)).to be true
|
434
443
|
end
|
435
444
|
|
436
445
|
it "should match if it matches, but all stringified" do
|
437
|
-
|
446
|
+
val = ["1", "2"]
|
447
|
+
expect(property).to be_insync val
|
448
|
+
expect(property.insync_values?(input, val)).to be true
|
438
449
|
end
|
439
450
|
|
440
451
|
it "should not match if some-but-not-all values are stringified" do
|
441
|
-
|
442
|
-
expect(property).to_not be_insync
|
452
|
+
val = ["1", 2]
|
453
|
+
expect(property).to_not be_insync val
|
454
|
+
expect(property.insync_values?(input, val)).to_not be true
|
455
|
+
val = [1, "2"]
|
456
|
+
expect(property).to_not be_insync val
|
457
|
+
expect(property.insync_values?(input, val)).to_not be true
|
443
458
|
end
|
444
459
|
|
445
460
|
it "should not match if order is different but content the same" do
|
446
|
-
|
461
|
+
val = [2, 1]
|
462
|
+
expect(property).to_not be_insync val
|
463
|
+
expect(property.insync_values?(input, val)).to_not be true
|
447
464
|
end
|
448
465
|
|
449
466
|
it "should not match if there are more items in should than is" do
|
450
|
-
|
467
|
+
val = [1]
|
468
|
+
expect(property).to_not be_insync val
|
469
|
+
expect(property.insync_values?(input, val)).to_not be true
|
451
470
|
end
|
452
471
|
|
453
472
|
it "should not match if there are less items in should than is" do
|
454
|
-
|
473
|
+
val = [1, 2, 3]
|
474
|
+
expect(property).to_not be_insync val
|
475
|
+
expect(property.insync_values?(input, val)).to_not be true
|
455
476
|
end
|
456
477
|
|
457
478
|
it "should not match if `is` is empty but `should` isn't" do
|
458
|
-
|
479
|
+
val = []
|
480
|
+
expect(property).to_not be_insync val
|
481
|
+
expect(property.insync_values?(input, val)).to_not be true
|
459
482
|
end
|
460
483
|
end
|
461
484
|
end
|
@@ -474,26 +497,33 @@ describe Puppet::Property do
|
|
474
497
|
[0, 1, 2], # matching value in the middle
|
475
498
|
].each do |input|
|
476
499
|
it "should by true if one unmodified should value of #{input.inspect} matches what is" do
|
500
|
+
val = 1
|
477
501
|
property.should = input
|
478
|
-
expect(property).to be_insync
|
502
|
+
expect(property).to be_insync val
|
503
|
+
expect(property.insync_values?(input, val)).to be true
|
479
504
|
end
|
480
505
|
|
481
506
|
it "should be true if one stringified should value of #{input.inspect} matches what is" do
|
507
|
+
val = "1"
|
482
508
|
property.should = input
|
483
|
-
expect(property).to be_insync
|
509
|
+
expect(property).to be_insync val
|
510
|
+
expect(property.insync_values?(input, val)).to be true
|
484
511
|
end
|
485
512
|
end
|
486
513
|
|
487
514
|
it "should not match if we expect a string but get the non-stringified value" do
|
488
515
|
property.should = ["1"]
|
489
516
|
expect(property).to_not be_insync 1
|
517
|
+
expect(property.insync_values?(["1"], 1)).to_not be true
|
490
518
|
end
|
491
519
|
|
492
520
|
[[0], [0, 2]].each do |input|
|
493
521
|
it "should not match if no should values match what is" do
|
494
522
|
property.should = input
|
495
523
|
expect(property).to_not be_insync 1
|
524
|
+
expect(property.insync_values?(input, 1)).to_not be true
|
496
525
|
expect(property).to_not be_insync "1" # shouldn't match either.
|
526
|
+
expect(property.insync_values?(input, "1")).to_not be true
|
497
527
|
end
|
498
528
|
end
|
499
529
|
end
|
@@ -514,4 +544,11 @@ describe Puppet::Property do
|
|
514
544
|
expect(property.property_matches?(1, "1")).to be_falsey
|
515
545
|
end
|
516
546
|
end
|
547
|
+
|
548
|
+
describe "#insync_values?" do
|
549
|
+
it "should log an exception when insync? throws one" do
|
550
|
+
property.expects(:insync?).raises ArgumentError
|
551
|
+
expect(property.insync_values?("foo","bar")).to be nil
|
552
|
+
end
|
553
|
+
end
|
517
554
|
end
|
@@ -17,6 +17,8 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet.featur
|
|
17
17
|
before :each do
|
18
18
|
Puppet::Util::Windows::ADSI.stubs(:computer_name).returns('testcomputername')
|
19
19
|
Puppet::Util::Windows::ADSI.stubs(:connect).returns connection
|
20
|
+
# this would normally query the system, but not needed for these tests
|
21
|
+
Puppet::Util::Windows::ADSI::Group.stubs(:localized_domains).returns([])
|
20
22
|
end
|
21
23
|
|
22
24
|
describe ".instances" do
|
@@ -278,6 +280,14 @@ describe Puppet::Type.type(:group).provider(:windows_adsi), :if => Puppet.featur
|
|
278
280
|
end
|
279
281
|
|
280
282
|
it "should prefer the domain component from the resolved SID" do
|
281
|
-
|
283
|
+
# must lookup well known S-1-5-32-544 as actual 'Administrators' name may be localized
|
284
|
+
admins_sid_bytes = [1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0]
|
285
|
+
admins_group = Puppet::Util::Windows::SID::Principal.lookup_account_sid(admins_sid_bytes)
|
286
|
+
# prefix just the name like .\Administrators
|
287
|
+
converted = provider.members_to_s([".\\#{admins_group.account}"])
|
288
|
+
|
289
|
+
# and ensure equivalent of BUILTIN\Administrators, without a leading .
|
290
|
+
expect(converted).to eq(admins_group.domain_account)
|
291
|
+
expect(converted[0]).to_not eq('.')
|
282
292
|
end
|
283
293
|
end
|
@@ -26,103 +26,5 @@ context 'default' do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe provider_class do
|
29
|
-
|
30
|
-
let(:resource) do
|
31
|
-
Puppet::Type.type(:package).new(
|
32
|
-
:name => name,
|
33
|
-
:ensure => :installed,
|
34
|
-
:provider => 'dnf'
|
35
|
-
)
|
36
|
-
end
|
37
|
-
|
38
|
-
let(:provider) do
|
39
|
-
provider = provider_class.new
|
40
|
-
provider.resource = resource
|
41
|
-
provider
|
42
|
-
end
|
43
|
-
|
44
|
-
before do
|
45
|
-
provider_class.stubs(:command).with(:cmd).returns('/usr/bin/dnf')
|
46
|
-
provider.stubs(:rpm).returns 'rpm'
|
47
|
-
provider.stubs(:get).with(:version).returns '1'
|
48
|
-
provider.stubs(:get).with(:release).returns '1'
|
49
|
-
provider.stubs(:get).with(:arch).returns 'i386'
|
50
|
-
end
|
51
|
-
|
52
|
-
describe 'provider features' do
|
53
|
-
it { is_expected.to be_versionable }
|
54
|
-
it { is_expected.to be_install_options }
|
55
|
-
it { is_expected.to be_virtual_packages }
|
56
|
-
end
|
57
|
-
|
58
|
-
describe "default provider" do
|
59
|
-
before do
|
60
|
-
Facter.expects(:value).with(:operatingsystem).returns("fedora")
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should be the default provider on Fedora 22" do
|
64
|
-
Facter.expects(:value).with(:operatingsystemmajrelease).returns('22')
|
65
|
-
expect(described_class.default?).to be_truthy
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should be the default provider on Fedora 23" do
|
69
|
-
Facter.expects(:value).with(:operatingsystemmajrelease).returns('23')
|
70
|
-
expect(described_class.default?).to be_truthy
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# provider should repond to the following methods
|
75
|
-
[:install, :latest, :update, :purge, :install_options].each do |method|
|
76
|
-
it "should have a(n) #{method}" do
|
77
|
-
expect(provider).to respond_to(method)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
describe 'when installing' do
|
82
|
-
before(:each) do
|
83
|
-
Puppet::Util.stubs(:which).with("rpm").returns("/bin/rpm")
|
84
|
-
provider.stubs(:which).with("rpm").returns("/bin/rpm")
|
85
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "--version"], {:combine => true, :custom_environment => {}, :failonfail => true}).returns("4.10.1\n").at_most_once
|
86
|
-
Facter.stubs(:value).with(:operatingsystemmajrelease).returns('22')
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'should call dnf install for :installed' do
|
90
|
-
resource.stubs(:should).with(:ensure).returns :installed
|
91
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/dnf', '-d', '0', '-e', '1', '-y', :install, 'mypackage'])
|
92
|
-
provider.install
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should be able to downgrade' do
|
96
|
-
current_version = '1.2'
|
97
|
-
version = '1.0'
|
98
|
-
resource[:ensure] = '1.0'
|
99
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/dnf', '-d', '0', '-e', '1', '-y', :downgrade, "#{name}-#{version}"])
|
100
|
-
provider.stubs(:query).returns(:ensure => current_version).then.returns(:ensure => version)
|
101
|
-
provider.install
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should accept install options' do
|
105
|
-
resource[:ensure] = :installed
|
106
|
-
resource[:install_options] = ['-t', {'-x' => 'expackage'}]
|
107
|
-
|
108
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/dnf', '-d', '0', '-e', '1', '-y', ['-t', '-x=expackage'], :install, name])
|
109
|
-
provider.install
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe 'when uninstalling' do
|
114
|
-
it 'should use erase to purge' do
|
115
|
-
Puppet::Util::Execution.expects(:execute).with(['/usr/bin/dnf', '-y', :erase, name])
|
116
|
-
provider.purge
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe "executing yum check-update" do
|
121
|
-
it "passes repos to enable to 'yum check-update'" do
|
122
|
-
Puppet::Util::Execution.expects(:execute).with do |args, *rest|
|
123
|
-
expect(args).to eq %w[/usr/bin/dnf check-update --enablerepo=updates --enablerepo=fedoraplus]
|
124
|
-
end.returns(stub(:exitstatus => 0))
|
125
|
-
described_class.check_updates(%w[updates fedoraplus], [], [])
|
126
|
-
end
|
127
|
-
end
|
29
|
+
it_behaves_like 'RHEL package provider', provider_class, 'dnf'
|
128
30
|
end
|
@@ -438,13 +438,13 @@ EOF
|
|
438
438
|
|
439
439
|
it 'should raise an error on non-zero pacman exit without a filter' do
|
440
440
|
executor.expects(:open).with('| /usr/bin/pacman -Sgg 2>&1').returns 'error!'
|
441
|
-
|
441
|
+
Puppet::Util::Execution.expects(:exitstatus).returns 1
|
442
442
|
expect { described_class.get_installed_groups(installed_packages) }.to raise_error(Puppet::ExecutionFailure, 'error!')
|
443
443
|
end
|
444
444
|
|
445
445
|
it 'should return empty groups on non-zero pacman exit with a filter' do
|
446
446
|
executor.expects(:open).with('| /usr/bin/pacman -Sgg git 2>&1').returns ''
|
447
|
-
|
447
|
+
Puppet::Util::Execution.expects(:exitstatus).returns 1
|
448
448
|
expect(described_class.get_installed_groups(installed_packages, 'git')).to eq({})
|
449
449
|
end
|
450
450
|
|
@@ -452,7 +452,7 @@ EOF
|
|
452
452
|
pipe = stub()
|
453
453
|
pipe.expects(:each_line)
|
454
454
|
executor.expects(:open).with('| /usr/bin/pacman -Sgg 2>&1').yields(pipe).returns ''
|
455
|
-
|
455
|
+
Puppet::Util::Execution.expects(:exitstatus).returns 0
|
456
456
|
expect(described_class.get_installed_groups(installed_packages)).to eq({})
|
457
457
|
end
|
458
458
|
|
@@ -460,7 +460,7 @@ EOF
|
|
460
460
|
pipe = stub()
|
461
461
|
pipe.expects(:each_line).multiple_yields(*groups)
|
462
462
|
executor.expects(:open).with('| /usr/bin/pacman -Sgg 2>&1').yields(pipe).returns ''
|
463
|
-
|
463
|
+
Puppet::Util::Execution.expects(:exitstatus).returns 0
|
464
464
|
expect(described_class.get_installed_groups(installed_packages)).to eq({'foo' => 'package1 1.0, package2 2.0'})
|
465
465
|
end
|
466
466
|
end
|
@@ -209,6 +209,20 @@ describe provider_class do
|
|
209
209
|
@resource[:name] = "fake_package"
|
210
210
|
expect(@provider.latest).to eq(nil)
|
211
211
|
end
|
212
|
+
|
213
|
+
it "should handle out-of-order version numbers for real_package" do
|
214
|
+
p = StringIO.new(
|
215
|
+
<<-EOS
|
216
|
+
Collecting real-package==versionplease
|
217
|
+
Could not find a version that satisfies the requirement real-package==versionplease (from versions: 1.11, 13.0.3, 1.6, 1.9, 1.3.2, 14.0.1, 12.0.7, 13.0.3, 1.7.2, 1.8.4, 1.6.1, 0.9.2, 1.3, 1.8.3, 12.1.1, 1.1, 1.11.6, 1.4.8, 1.6.3, 1.10.1, 14.0.2, 1.11.3, 14.0.3, 1.4rc1, 0.8.4, 1.0, 12.0.5, 14.0.6, 1.11.5, 1.7.1.1, 1.11.4, 13.0.1, 13.1.2, 1.3.3, 0.8.2, 14.0.0, 12.0, 1.8, 1.3.4, 12.0, 1.2, 12.0.6, 0.9.1, 13.1.1, 14.0.5, 15.0.2, 15.0.0, 1.4.5, 1.4.3, 13.1.1, 1.11.2, 13.1.2, 1.3.1, 13.1.0, 12.0.2, 1.11.1, 12.0.1, 12.1.0, 0.9, 1.4.4, 13.0.0, 1.4.9, 12.1.0, 1.7.1, 1.4.2, 14.0.5, 0.8.1, 1.4.6, 0.8.3, 1.11.3, 1.5.1, 1.4.7, 13.0.2, 12.0.7, 13.0.0, 1.9.1, 1.8.2, 14.0.1, 14.0.0, 14.0.4, 1.6.2, 15.0.1, 13.1.0, 0.8, 1.7, 15.0.2, 12.0.5, 13.0.1, 1.8.1, 1.11.6, 15.0.1, 12.0.4, 12.1.1, 13.0.2, 1.11.4, 1.10, 14.0.4, 14.0.6, 1.4.1, 1.4, 1.5.2, 12.0.2, 12.0.1, 14.0.3, 14.0.2, 1.11.1, 1.7.1.2, 15.0.0, 12.0.4, 1.6.4, 1.11.2, 1.5)
|
218
|
+
No distributions matching the version for real-package==versionplease
|
219
|
+
EOS
|
220
|
+
)
|
221
|
+
Puppet::Util::Execution.expects(:execpipe).with(["/fake/bin/pip", "install", "real_package==versionplease"]).yields(p).once
|
222
|
+
@resource[:name] = "real_package"
|
223
|
+
latest = @provider.latest
|
224
|
+
expect(latest).to eq('15.0.2')
|
225
|
+
end
|
212
226
|
end
|
213
227
|
|
214
228
|
end
|
@@ -5,6 +5,12 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
5
5
|
let (:resource) { Puppet::Resource.new(:package, 'dummy', :parameters => {:name => 'dummy', :ensure => :latest}) }
|
6
6
|
let (:provider) { described_class.new(resource) }
|
7
7
|
|
8
|
+
if Puppet.features.microsoft_windows?
|
9
|
+
# Get a pid for $CHILD_STATUS to latch on to
|
10
|
+
command = "cmd.exe /c \"exit 0\""
|
11
|
+
Puppet::Util::Execution.execute(command, {:failonfail => false})
|
12
|
+
end
|
13
|
+
|
8
14
|
before :each do
|
9
15
|
described_class.stubs(:command).with(:pkg).returns('/bin/pkg')
|
10
16
|
end
|