puppet 4.8.2-x86-mingw32 → 4.9.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2607
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -82,7 +82,7 @@ describe 'The type factory' do
|
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'sem_ver(r1, r2) returns constrained PSemVerType' do
|
85
|
-
expect(TypeFactory.sem_ver('1.x', '3.x').ranges).to include(
|
85
|
+
expect(TypeFactory.sem_ver('1.x', '3.x').ranges).to include(SemanticPuppet::VersionRange.parse('1.x'), SemanticPuppet::VersionRange.parse('3.x'))
|
86
86
|
end
|
87
87
|
|
88
88
|
it 'sem_ver_range() returns PSemVerRangeType' do
|
@@ -173,7 +173,7 @@ describe 'The type factory' do
|
|
173
173
|
ht = TypeFactory.hash_of_data
|
174
174
|
expect(ht.class()).to eq(PHashType)
|
175
175
|
expect(ht.key_type.class).to eq(PScalarType)
|
176
|
-
expect(ht.
|
176
|
+
expect(ht.value_type.class).to eq(PDataType)
|
177
177
|
end
|
178
178
|
|
179
179
|
it 'ruby(1) returns PRuntimeType[ruby, \'Fixnum\']' do
|
@@ -211,7 +211,7 @@ describe 'The type factory' do
|
|
211
211
|
expect(t.size_type.from).to eq(0)
|
212
212
|
expect(t.size_type.to).to eq(0)
|
213
213
|
expect(t.key_type).to eq(Puppet::Pops::Types::PUnitType::DEFAULT)
|
214
|
-
expect(t.
|
214
|
+
expect(t.value_type).to eq(Puppet::Pops::Types::PUnitType::DEFAULT)
|
215
215
|
end
|
216
216
|
|
217
217
|
context 'callable types' do
|
@@ -75,7 +75,7 @@ end
|
|
75
75
|
expect(s.string(f.type_type)).to eq('Type')
|
76
76
|
end
|
77
77
|
|
78
|
-
it "should yield '
|
78
|
+
it "should yield 'Any' for PAnyType" do
|
79
79
|
expect(s.string(f.any)).to eq('Any')
|
80
80
|
end
|
81
81
|
|
@@ -119,8 +119,12 @@ end
|
|
119
119
|
expect(s.string(f.string)).to eq('String')
|
120
120
|
end
|
121
121
|
|
122
|
-
it "should yield 'String' for PStringType with
|
123
|
-
expect(s.string(f.string(
|
122
|
+
it "should yield 'String' for PStringType with value" do
|
123
|
+
expect(s.string(f.string('a'))).to eq('String')
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should yield 'String['a']' for PStringType with value if printed with debug_string" do
|
127
|
+
expect(s.debug_string(f.string('a'))).to eq("String['a']")
|
124
128
|
end
|
125
129
|
|
126
130
|
it "should yield 'String' and from/to for PStringType" do
|
@@ -87,7 +87,7 @@ describe 'the type mismatch describer' do
|
|
87
87
|
check_port({ 34 => 'some service'})
|
88
88
|
CODE
|
89
89
|
expect { eval_and_collect_notices(code) }.to(raise_error(Puppet::Error,
|
90
|
-
/parameter 'ports' expects a PortMap = Hash\[UnprivilegedPort = Integer\[1024, 65537\], String\] value, got Hash\[Integer\[34, 34\], String\
|
90
|
+
/parameter 'ports' expects a PortMap = Hash\[UnprivilegedPort = Integer\[1024, 65537\], String\] value, got Hash\[Integer\[34, 34\], String\]/))
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'will not include the aliased type more than once when reporting a mismatch that involves an alias that is self recursive' do
|
@@ -98,7 +98,7 @@ describe 'the type mismatch describer' do
|
|
98
98
|
check_tree({ 'x' => {'y' => {32 => 'n'}}})
|
99
99
|
CODE
|
100
100
|
expect { eval_and_collect_notices(code) }.to(raise_error(Puppet::Error,
|
101
|
-
/parameter 'tree' entry 'x' entry 'y' expects a Tree = Hash\[String, Tree\] value, got Hash\[Integer\[32, 32\], String\
|
101
|
+
/parameter 'tree' entry 'x' entry 'y' expects a Tree = Hash\[String, Tree\] value, got Hash\[Integer\[32, 32\], String\]/))
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'will use type normalization' do
|
@@ -130,6 +130,17 @@ describe 'the type mismatch describer' do
|
|
130
130
|
/parameter 'arg' expects a match for Enum\['a', 'b'\], got Sensitive/))
|
131
131
|
end
|
132
132
|
|
133
|
+
it "reports errors on the first failing parameter when that parameter is not the first in order" do
|
134
|
+
code = <<-CODE
|
135
|
+
type Abc = Enum['a', 'b', 'c']
|
136
|
+
type Cde = Enum['c', 'd', 'e']
|
137
|
+
function two_params(Abc $a, Cde $b) {}
|
138
|
+
two_params('a', 'x')
|
139
|
+
CODE
|
140
|
+
expect { eval_and_collect_notices(code) }.to(raise_error(Puppet::Error,
|
141
|
+
/parameter 'b' expects a match for Cde = Enum\['c', 'd', 'e'\], got 'x'/))
|
142
|
+
end
|
143
|
+
|
133
144
|
it "will not generalize a string that doesn't match an enum in a define call" do
|
134
145
|
code = <<-CODE
|
135
146
|
define check_enums(Enum[a,b] $arg) {}
|
@@ -386,7 +386,7 @@ describe 'Puppet Type System' do
|
|
386
386
|
type Bar = Fee
|
387
387
|
notice(0 =~ Bar)
|
388
388
|
CODE
|
389
|
-
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias '
|
389
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias 'Bar' cannot be resolved to a real type/)
|
390
390
|
end
|
391
391
|
|
392
392
|
it 'will not allow an alias chain that contains nothing but aliases and variants' do
|
@@ -396,7 +396,7 @@ describe 'Puppet Type System' do
|
|
396
396
|
type Bar = Variant[Fee,Foo]
|
397
397
|
notice(0 =~ Bar)
|
398
398
|
CODE
|
399
|
-
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias '
|
399
|
+
expect { eval_and_collect_notices(code) }.to raise_error(Puppet::Error, /Type alias 'Bar' cannot be resolved to a real type/)
|
400
400
|
end
|
401
401
|
|
402
402
|
it 'will not allow an alias to directly reference itself' do
|
@@ -572,6 +572,29 @@ describe 'Puppet Type System' do
|
|
572
572
|
end
|
573
573
|
end
|
574
574
|
|
575
|
+
context 'instantiation via ruby create function' do
|
576
|
+
around(:each) do |example|
|
577
|
+
Puppet.override(:loaders => Loaders.new(Puppet::Node::Environment.create(:testing, []))) do
|
578
|
+
example.run
|
579
|
+
end
|
580
|
+
end
|
581
|
+
|
582
|
+
it 'is supported by Integer' do
|
583
|
+
int = tf.integer.create('32')
|
584
|
+
expect(int).to eq(32)
|
585
|
+
end
|
586
|
+
|
587
|
+
it 'is supported by Optional[Integer]' do
|
588
|
+
int = tf.optional(tf.integer).create('32')
|
589
|
+
expect(int).to eq(32)
|
590
|
+
end
|
591
|
+
|
592
|
+
it 'is not supported by Any, Scalar, Collection' do
|
593
|
+
[tf.any, tf.scalar, tf.collection ].each do |t|
|
594
|
+
expect { t.create }.to raise_error(ArgumentError, /Creation of new instance of type '#{t.to_s}' is not supported/)
|
595
|
+
end
|
596
|
+
end
|
597
|
+
end
|
575
598
|
end
|
576
599
|
end
|
577
600
|
end
|
@@ -50,42 +50,98 @@ describe "validating 4x" do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
context 'with the default settings for --strict' do
|
53
|
-
it 'produces a warning for duplicate
|
53
|
+
it 'produces a warning for duplicate keys in a literal hash' do
|
54
54
|
acceptor = validate(parse('{ a => 1, a => 2 }'))
|
55
55
|
expect(acceptor.warning_count).to eql(1)
|
56
56
|
expect(acceptor.error_count).to eql(0)
|
57
57
|
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
|
58
58
|
end
|
59
|
+
|
60
|
+
it 'produces a warning for duplicate default in a case expression' do
|
61
|
+
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
|
62
|
+
expect(acceptor.warning_count).to eql(1)
|
63
|
+
expect(acceptor.error_count).to eql(0)
|
64
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'produces a warning for duplicate default in a selector expression' do
|
68
|
+
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
|
69
|
+
expect(acceptor.warning_count).to eql(1)
|
70
|
+
expect(acceptor.error_count).to eql(0)
|
71
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
72
|
+
end
|
59
73
|
end
|
60
74
|
|
61
75
|
context 'with --strict set to warning' do
|
62
76
|
before(:each) { Puppet[:strict] = :warning }
|
63
|
-
it 'produces a warning for duplicate
|
77
|
+
it 'produces a warning for duplicate keys in a literal hash' do
|
64
78
|
acceptor = validate(parse('{ a => 1, a => 2 }'))
|
65
79
|
expect(acceptor.warning_count).to eql(1)
|
66
80
|
expect(acceptor.error_count).to eql(0)
|
67
81
|
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
|
68
82
|
end
|
83
|
+
|
84
|
+
it 'produces a warning for duplicate default in a case expression' do
|
85
|
+
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
|
86
|
+
expect(acceptor.warning_count).to eql(1)
|
87
|
+
expect(acceptor.error_count).to eql(0)
|
88
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'produces a warning for duplicate default in a selector expression' do
|
92
|
+
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
|
93
|
+
expect(acceptor.warning_count).to eql(1)
|
94
|
+
expect(acceptor.error_count).to eql(0)
|
95
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
96
|
+
end
|
69
97
|
end
|
70
98
|
|
71
99
|
context 'with --strict set to error' do
|
72
100
|
before(:each) { Puppet[:strict] = :error }
|
73
|
-
it 'produces an error for duplicate
|
101
|
+
it 'produces an error for duplicate keys in a literal hash' do
|
74
102
|
acceptor = validate(parse('{ a => 1, a => 2 }'))
|
75
103
|
expect(acceptor.warning_count).to eql(0)
|
76
104
|
expect(acceptor.error_count).to eql(1)
|
77
105
|
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
|
78
106
|
end
|
107
|
+
|
108
|
+
it 'produces an error for duplicate default in a case expression' do
|
109
|
+
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
|
110
|
+
expect(acceptor.warning_count).to eql(0)
|
111
|
+
expect(acceptor.error_count).to eql(1)
|
112
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'produces an error for duplicate default in a selector expression' do
|
116
|
+
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
|
117
|
+
expect(acceptor.warning_count).to eql(0)
|
118
|
+
expect(acceptor.error_count).to eql(1)
|
119
|
+
expect(acceptor).to have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
120
|
+
end
|
79
121
|
end
|
80
122
|
|
81
123
|
context 'with --strict set to off' do
|
82
124
|
before(:each) { Puppet[:strict] = :off }
|
83
|
-
it 'does not produce an error or warning for duplicate
|
125
|
+
it 'does not produce an error or warning for duplicate keys in a literal hash' do
|
84
126
|
acceptor = validate(parse('{ a => 1, a => 2 }'))
|
85
127
|
expect(acceptor.warning_count).to eql(0)
|
86
128
|
expect(acceptor.error_count).to eql(0)
|
87
129
|
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_KEY)
|
88
130
|
end
|
131
|
+
|
132
|
+
it 'does not produce an error for duplicate default in a case expression' do
|
133
|
+
acceptor = validate(parse('case 1 { default: {1} default : {2} }'))
|
134
|
+
expect(acceptor.warning_count).to eql(0)
|
135
|
+
expect(acceptor.error_count).to eql(0)
|
136
|
+
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'does not produce an error for duplicate default in a selector expression' do
|
140
|
+
acceptor = validate(parse(' 1 ? { default => 1, default => 2 }'))
|
141
|
+
expect(acceptor.warning_count).to eql(0)
|
142
|
+
expect(acceptor.error_count).to eql(0)
|
143
|
+
expect(acceptor).to_not have_issue(Puppet::Pops::Issues::DUPLICATE_DEFAULT)
|
144
|
+
end
|
89
145
|
end
|
90
146
|
|
91
147
|
context 'for non productive expressions' do
|
@@ -301,4 +301,46 @@ describe Puppet::Provider::NameService do
|
|
301
301
|
end
|
302
302
|
end
|
303
303
|
|
304
|
+
describe "comments_insync?" do
|
305
|
+
# comments_insync? overrides Puppet::Property#insync? and will act on an
|
306
|
+
# array containing a should value (the expected value of Puppet::Property
|
307
|
+
# @should)
|
308
|
+
context "given strings with compatible encodings" do
|
309
|
+
it "should return false if the is-value and should-value are not equal" do
|
310
|
+
is_value = "foo"
|
311
|
+
should_value = ["bar"]
|
312
|
+
expect(provider.comments_insync?(is_value, should_value)).to be_falsey
|
313
|
+
end
|
314
|
+
|
315
|
+
it "should return true if the is-value and should-value are equal" do
|
316
|
+
is_value = "foo"
|
317
|
+
should_value = ["foo"]
|
318
|
+
expect(provider.comments_insync?(is_value, should_value)).to be_truthy
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
context "given strings with incompatible encodings" do
|
323
|
+
let(:snowman_iso) { "\u2603".force_encoding(Encoding::ISO_8859_1) }
|
324
|
+
let(:snowman_utf8) { "\u2603".force_encoding(Encoding::UTF_8) }
|
325
|
+
let(:snowman_binary) { "\u2603".force_encoding(Encoding::ASCII_8BIT) }
|
326
|
+
let(:arabic_heh_utf8) { "\u06FF".force_encoding(Encoding::UTF_8) }
|
327
|
+
|
328
|
+
it "should be able to compare unequal strings and return false" do
|
329
|
+
expect(Encoding.compatible?(snowman_iso, arabic_heh_utf8)).to be_falsey
|
330
|
+
expect(provider.comments_insync?(snowman_iso, [arabic_heh_utf8])).to be_falsey
|
331
|
+
end
|
332
|
+
|
333
|
+
it "should be able to compare equal strings and return true" do
|
334
|
+
expect(Encoding.compatible?(snowman_binary, snowman_utf8)).to be_falsey
|
335
|
+
expect(provider.comments_insync?(snowman_binary, [snowman_utf8])).to be_truthy
|
336
|
+
end
|
337
|
+
|
338
|
+
it "should not manipulate the actual encoding of either string" do
|
339
|
+
expect(Encoding.compatible?(snowman_binary, snowman_utf8)).to be_falsey
|
340
|
+
provider.comments_insync?(snowman_binary, [snowman_utf8])
|
341
|
+
expect(snowman_binary.encoding).to eq(Encoding::ASCII_8BIT)
|
342
|
+
expect(snowman_utf8.encoding).to eq(Encoding::UTF_8)
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
304
346
|
end
|
@@ -17,7 +17,7 @@ describe Puppet::Type.type(:package).provider(:aptrpm) do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def rpm_args
|
20
|
-
['-q', 'faff', '--nosignature', '--nodigest', '--qf', "%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\\n"]
|
20
|
+
['-q', 'faff', '--nosignature', '--nodigest', '--qf', "'%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\\n'"]
|
21
21
|
end
|
22
22
|
|
23
23
|
def rpm(args = rpm_args)
|
@@ -25,6 +25,28 @@ describe Puppet::Type.type(:package).provider(:pkg) do
|
|
25
25
|
|
26
26
|
it_should_respond_to :install, :uninstall, :update, :query, :latest
|
27
27
|
|
28
|
+
context 'default' do
|
29
|
+
[ 10 ].each do |ver|
|
30
|
+
it "should not be the default provider on Solaris #{ver}" do
|
31
|
+
Facter.stubs(:value).with(:osfamily).returns(:Solaris)
|
32
|
+
Facter.stubs(:value).with(:kernelrelease).returns("5.#{ver}")
|
33
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:Solaris)
|
34
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
|
35
|
+
expect(described_class).to_not be_default
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
[ 11, 12 ].each do |ver|
|
40
|
+
it "should be the default provider on Solaris #{ver}" do
|
41
|
+
Facter.stubs(:value).with(:osfamily).returns(:Solaris)
|
42
|
+
Facter.stubs(:value).with(:kernelrelease).returns("5.#{ver}")
|
43
|
+
Facter.stubs(:value).with(:operatingsystem).returns(:Solaris)
|
44
|
+
Facter.stubs(:value).with(:operatingsystemmajrelease).returns("#{ver}")
|
45
|
+
expect(described_class).to be_default
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
28
50
|
it "should be versionable" do
|
29
51
|
expect(described_class).to be_versionable
|
30
52
|
end
|
@@ -65,6 +65,11 @@ describe provider_class do
|
|
65
65
|
expect(nmap.properties[:version]).to eq(nmap.properties[:latest])
|
66
66
|
end
|
67
67
|
|
68
|
+
it "should return an empty array when pkg calls raise an exception" do
|
69
|
+
provider_class.stubs(:get_query).raises(Puppet::ExecutionFailure, 'An error occurred.')
|
70
|
+
expect(provider_class.instances).to eq([])
|
71
|
+
end
|
72
|
+
|
68
73
|
describe "version" do
|
69
74
|
it "should retrieve the correct version of the current package" do
|
70
75
|
zsh = provider_class.instances.find {|i| i.properties[:origin] == 'shells/zsh' }
|
@@ -111,6 +116,13 @@ describe provider_class do
|
|
111
116
|
end
|
112
117
|
end
|
113
118
|
|
119
|
+
context "#prefetch" do
|
120
|
+
it "should fail gracefully when " do
|
121
|
+
provider_class.stubs(:instances).returns([])
|
122
|
+
expect{ provider_class.prefetch({}) }.to_not raise_error
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
114
126
|
context "#query" do
|
115
127
|
it "should return the installed version if present" do
|
116
128
|
provider_class.prefetch({installed_name => installed_resource})
|
@@ -203,7 +203,7 @@ describe provider_class do
|
|
203
203
|
describe "#latest" do
|
204
204
|
it "retrieves version string after querying rpm for version from source file" do
|
205
205
|
resource.expects(:[]).with(:source).returns('source-string')
|
206
|
-
Puppet::Util::Execution.expects(:execfail).with(["/bin/rpm", "-q", "--qf", nevra_format, "-p", "source-string"], Puppet::Error).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
206
|
+
Puppet::Util::Execution.expects(:execfail).with(["/bin/rpm", "-q", "--qf", "'#{nevra_format}'", "-p", "source-string"], Puppet::Error).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
207
207
|
expect(provider.latest).to eq("1.2.3.4-5.el4")
|
208
208
|
end
|
209
209
|
end
|
@@ -218,7 +218,7 @@ describe provider_class do
|
|
218
218
|
|
219
219
|
describe "on a modern RPM" do
|
220
220
|
before(:each) do
|
221
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '--nosignature', '--nodigest', "--qf", nevra_format], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
221
|
+
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
222
222
|
end
|
223
223
|
|
224
224
|
let(:rpm_version) { "RPM version 4.10.0\n" }
|
@@ -231,7 +231,7 @@ describe provider_class do
|
|
231
231
|
|
232
232
|
describe "on an ancient RPM" do
|
233
233
|
before(:each) do
|
234
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '', '', '--qf', nevra_format], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
234
|
+
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '', '', '--qf', "'#{nevra_format}'"], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
235
235
|
end
|
236
236
|
|
237
237
|
let(:rpm_version) { "RPM version 3.0.6\n" }
|
@@ -244,7 +244,7 @@ describe provider_class do
|
|
244
244
|
|
245
245
|
describe "when uninstalled with options" do
|
246
246
|
before(:each) do
|
247
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '--nosignature', '--nodigest', "--qf", nevra_format], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
247
|
+
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", "myresource", '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options).returns("myresource 0 1.2.3.4 5.el4 noarch\n")
|
248
248
|
end
|
249
249
|
|
250
250
|
let(:resource) do
|
@@ -266,7 +266,7 @@ describe provider_class do
|
|
266
266
|
describe "parsing" do
|
267
267
|
def parser_test(rpm_output_string, gold_hash, number_of_debug_logs = 0)
|
268
268
|
Puppet.expects(:debug).times(number_of_debug_logs)
|
269
|
-
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", nevra_format], execute_options).returns(rpm_output_string)
|
269
|
+
Puppet::Util::Execution.expects(:execute).with(["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", "'#{nevra_format}'"], execute_options).returns(rpm_output_string)
|
270
270
|
expect(provider.query).to eq(gold_hash)
|
271
271
|
end
|
272
272
|
|
@@ -306,7 +306,7 @@ describe provider_class do
|
|
306
306
|
describe "when the package is not found" do
|
307
307
|
before do
|
308
308
|
Puppet.expects(:debug).never
|
309
|
-
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", nevra_format]
|
309
|
+
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", "'#{nevra_format}'"]
|
310
310
|
Puppet::Util::Execution.expects(:execute).with(expected_args, execute_options).raises Puppet::ExecutionFailure.new("package #{resource_name} is not installed")
|
311
311
|
end
|
312
312
|
|
@@ -317,7 +317,7 @@ describe provider_class do
|
|
317
317
|
|
318
318
|
it "does not log or fail if allow_virtual is true" do
|
319
319
|
resource[:allow_virtual] = true
|
320
|
-
expected_args = ['/bin/rpm', '-q', resource_name, '--nosignature', '--nodigest', '--qf', nevra_format, '--whatprovides']
|
320
|
+
expected_args = ['/bin/rpm', '-q', resource_name, '--nosignature', '--nodigest', '--qf', "'#{nevra_format}'", '--whatprovides']
|
321
321
|
Puppet::Util::Execution.expects(:execute).with(expected_args, execute_options).raises Puppet::ExecutionFailure.new("package #{resource_name} is not provided")
|
322
322
|
expect(provider.query).to be_nil
|
323
323
|
end
|
@@ -325,7 +325,7 @@ describe provider_class do
|
|
325
325
|
|
326
326
|
it "parses virtual package" do
|
327
327
|
provider.resource[:allow_virtual] = true
|
328
|
-
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", nevra_format]
|
328
|
+
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", "'#{nevra_format}'"]
|
329
329
|
Puppet::Util::Execution.expects(:execute).with(expected_args, execute_options).raises Puppet::ExecutionFailure.new("package #{resource_name} is not installed")
|
330
330
|
Puppet::Util::Execution.expects(:execute).with(expected_args + ["--whatprovides"], execute_options).returns "myresource 0 1.2.3.4 5.el4 noarch\n"
|
331
331
|
expect(provider.query).to eq({
|
@@ -18,6 +18,8 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
18
18
|
|
19
19
|
FileTest.stubs(:file?).with('/usr/sbin/svcadm').returns true
|
20
20
|
FileTest.stubs(:executable?).with('/usr/sbin/svcadm').returns true
|
21
|
+
FileTest.stubs(:file?).with('/usr/sbin/svccfg').returns true
|
22
|
+
FileTest.stubs(:executable?).with('/usr/sbin/svccfg').returns true
|
21
23
|
FileTest.stubs(:file?).with('/usr/bin/svcs').returns true
|
22
24
|
FileTest.stubs(:executable?).with('/usr/bin/svcs').returns true
|
23
25
|
Facter.stubs(:value).with(:operatingsystem).returns('Solaris')
|
@@ -74,9 +76,9 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
74
76
|
@provider.expects(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").returns("online\t-")
|
75
77
|
@provider.status
|
76
78
|
end
|
77
|
-
it "should return
|
79
|
+
it "should return absent if svcs can't find the service" do
|
78
80
|
@provider.stubs(:svcs).raises(Puppet::ExecutionFailure.new("no svc found"))
|
79
|
-
expect(@provider.status).to eq(:
|
81
|
+
expect(@provider.status).to eq(:absent)
|
80
82
|
end
|
81
83
|
it "should return running if online in svcs output" do
|
82
84
|
@provider.stubs(:svcs).returns("online\t-")
|
@@ -107,14 +109,14 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
107
109
|
describe "when starting" do
|
108
110
|
it "should enable the service if it is not enabled" do
|
109
111
|
@provider.expects(:status).returns :stopped
|
110
|
-
@provider.expects(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-
|
112
|
+
@provider.expects(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-rs', '/system/myservice'], true)
|
111
113
|
@provider.expects(:wait).with('online')
|
112
114
|
@provider.start
|
113
115
|
end
|
114
116
|
|
115
117
|
it "should always execute external command 'svcadm enable /system/myservice'" do
|
116
118
|
@provider.expects(:status).returns :running
|
117
|
-
@provider.expects(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-
|
119
|
+
@provider.expects(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-rs', '/system/myservice'], true)
|
118
120
|
@provider.expects(:wait).with('online')
|
119
121
|
@provider.start
|
120
122
|
end
|
@@ -135,7 +137,7 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
135
137
|
|
136
138
|
it "should error if timeout occurs while starting the service" do
|
137
139
|
@provider.expects(:status).returns :stopped
|
138
|
-
@provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable,
|
140
|
+
@provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
|
139
141
|
Timeout.expects(:timeout).with(60).raises(Timeout::Error)
|
140
142
|
expect { @provider.start }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
|
141
143
|
end
|
@@ -150,7 +152,7 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
150
152
|
|
151
153
|
it "should import the manifest if service is missing" do
|
152
154
|
@provider.expects(:svccfg).with(:import, "/tmp/myservice.xml")
|
153
|
-
@provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable,
|
155
|
+
@provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
|
154
156
|
@provider.expects(:wait).with('online')
|
155
157
|
@provider.expects(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").returns("online\t-")
|
156
158
|
@provider.start
|
@@ -164,13 +166,13 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
164
166
|
|
165
167
|
describe "when stopping" do
|
166
168
|
it "should execute external command 'svcadm disable /system/myservice'" do
|
167
|
-
@provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable,
|
169
|
+
@provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, '-s', "/system/myservice"], true)
|
168
170
|
@provider.expects(:wait).with('offline', 'disabled', 'uninitialized')
|
169
171
|
@provider.stop
|
170
172
|
end
|
171
173
|
|
172
174
|
it "should error if timeout occurs while stopping the service" do
|
173
|
-
@provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable,
|
175
|
+
@provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, '-s', "/system/myservice"], true)
|
174
176
|
Timeout.expects(:timeout).with(60).raises(Timeout::Error)
|
175
177
|
expect { @provider.stop }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
|
176
178
|
end
|
@@ -179,7 +181,7 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
179
181
|
describe "when restarting" do
|
180
182
|
|
181
183
|
it "should error if timeout occurs while restarting the service" do
|
182
|
-
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart,
|
184
|
+
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
|
183
185
|
Timeout.expects(:timeout).with(60).raises(Timeout::Error)
|
184
186
|
expect { @provider.restart }.to raise_error Puppet::Error, ('Timed out waiting for /system/myservice to transition states')
|
185
187
|
end
|
@@ -196,7 +198,7 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
196
198
|
context 'with :operatingsystemrelease == 11.2' do
|
197
199
|
it "should call 'svcadm restart -s /system/myservice'" do
|
198
200
|
Facter.stubs(:value).with(:operatingsystemrelease).returns '11.2'
|
199
|
-
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart,
|
201
|
+
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
|
200
202
|
@provider.expects(:wait).with('online')
|
201
203
|
@provider.restart
|
202
204
|
end
|
@@ -205,7 +207,7 @@ describe provider_class, :if => Puppet.features.posix? do
|
|
205
207
|
context 'with :operatingsystemrelease > 11.2' do
|
206
208
|
it "should call 'svcadm restart -s /system/myservice'" do
|
207
209
|
Facter.stubs(:value).with(:operatingsystemrelease).returns '11.3'
|
208
|
-
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart,
|
210
|
+
@provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
|
209
211
|
@provider.expects(:wait).with('online')
|
210
212
|
@provider.restart
|
211
213
|
end
|