puppet 4.8.2-universal-darwin → 4.9.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +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/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/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/data_providers.rb +6 -3
- 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/face.erb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- 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/windows.rb +8 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/forge.rb +6 -6
- 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/face_collection.rb +1 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/module.rb +14 -2
- 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/module_tool.rb +4 -4
- 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/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/plugins/data_providers.rb +2 -0
- 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/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/lookup.rb +4 -3
- 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/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/pops.rb +6 -9
- 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/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/resource.rb +2 -3
- 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/settings.rb +1 -1
- 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/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/util.rb +1 -0
- 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/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/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- 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/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +52 -0
- 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 -2595
- 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/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- 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
@@ -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
|
@@ -21,7 +21,7 @@ describe Puppet::Type.type(:service).provider(:systemd) do
|
|
21
21
|
described_class.new(:name => 'sshd.service')
|
22
22
|
end
|
23
23
|
|
24
|
-
osfamily = [ 'archlinux' ]
|
24
|
+
osfamily = [ 'archlinux', 'coreos' ]
|
25
25
|
|
26
26
|
osfamily.each do |osfamily|
|
27
27
|
it "should be the default provider on #{osfamily}" do
|
@@ -224,6 +224,13 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
224
224
|
expect(provider.enabled?).to eq(:false)
|
225
225
|
end
|
226
226
|
|
227
|
+
it "should return :false if the service is indirect" do
|
228
|
+
provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
229
|
+
provider.expects(:execute).with(['/bin/systemctl','is-enabled','sshd.service'], :failonfail => false).returns "indirect\n"
|
230
|
+
$CHILD_STATUS.stubs(:exitstatus).returns(0)
|
231
|
+
expect(provider.enabled?).to eq(:false)
|
232
|
+
end
|
233
|
+
|
227
234
|
it "should return :false if the service is masked and the resource is attempting to be disabled" do
|
228
235
|
provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :enable => false))
|
229
236
|
provider.expects(:execute).with(['/bin/systemctl','is-enabled','sshd.service'], :failonfail => false).returns "masked\n"
|
@@ -438,6 +438,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
438
438
|
end
|
439
439
|
|
440
440
|
it "should raise an error if the shell is not executable" do
|
441
|
+
FileTest.stubs(:executable?).with('LICENSE').returns false
|
441
442
|
resource[:shell] = 'LICENSE'
|
442
443
|
expect { provider.check_valid_shell }.to raise_error(Puppet::Error, /Shell LICENSE must be executable/)
|
443
444
|
end
|
data/spec/unit/puppet_spec.rb
CHANGED
@@ -39,6 +39,20 @@ describe Puppet do
|
|
39
39
|
expect($LOAD_PATH).to include two
|
40
40
|
end
|
41
41
|
|
42
|
+
context "Puppet::OLDEST_RECOMMENDED_RUBY_VERSION" do
|
43
|
+
it "should have an oldest recommended ruby version constant" do
|
44
|
+
expect(Puppet::OLDEST_RECOMMENDED_RUBY_VERSION).not_to be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be a string" do
|
48
|
+
expect(Puppet::OLDEST_RECOMMENDED_RUBY_VERSION).to be_a_kind_of(String)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should match a semver version" do
|
52
|
+
expect(SemVer).to be_valid(Puppet::OLDEST_RECOMMENDED_RUBY_VERSION)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
42
56
|
context "newtype" do
|
43
57
|
it "should issue a deprecation warning" do
|
44
58
|
subject.expects(:deprecation_warning).with("Creating sometype via Puppet.newtype is deprecated and will be removed in a future release. Use Puppet::Type.newtype instead.")
|
@@ -67,7 +67,8 @@ describe Puppet::Resource::Catalog, "when compiling" do
|
|
67
67
|
Puppet[:classfile] = File.expand_path("/class/file")
|
68
68
|
|
69
69
|
fh = mock 'filehandle'
|
70
|
-
|
70
|
+
classfile = Puppet.settings.setting(:classfile)
|
71
|
+
Puppet::FileSystem.expects(:open).with(classfile.value, classfile.mode.to_i(8), "w:UTF-8").yields fh
|
71
72
|
|
72
73
|
fh.expects(:puts).with "foo\nbar"
|
73
74
|
|
@@ -719,7 +720,7 @@ describe Puppet::Resource::Catalog, "when compiling" do
|
|
719
720
|
end
|
720
721
|
|
721
722
|
it "should only write when it is a host catalog" do
|
722
|
-
|
723
|
+
Puppet::FileSystem.expects(:open).with(@file, 0640, "w:UTF-8").never
|
723
724
|
@catalog.host_config = false
|
724
725
|
Puppet[:graph] = true
|
725
726
|
@catalog.write_graph(@name)
|
@@ -850,10 +851,15 @@ describe Puppet::Resource::Catalog, "when converting a resource catalog to pson"
|
|
850
851
|
Puppet[:rich_data] = true
|
851
852
|
end
|
852
853
|
|
854
|
+
after(:each) do
|
855
|
+
Puppet[:rich_data] = false
|
856
|
+
end
|
857
|
+
|
858
|
+
|
853
859
|
let(:catalog_w_regexp) { compile_to_catalog("notify {'foo': message => /[a-z]+/ }") }
|
854
860
|
|
855
861
|
it 'should generate ext_parameters for parameter values that are not Data' do
|
856
|
-
expect(catalog_w_regexp.to_json).to include('"ext_parameters":{"message":[48,"[a-z]+"]}')
|
862
|
+
expect(catalog_w_regexp.to_json).to include('"ext_parameters":{"message":[[48,"[a-z]+"]]}')
|
857
863
|
end
|
858
864
|
|
859
865
|
it 'should validate ext_parameters against the schema' do
|
@@ -871,16 +877,16 @@ describe Puppet::Resource::Catalog, "when converting a resource catalog to pson"
|
|
871
877
|
catalog = compile_to_catalog("notify {'foo': message => SemVer('1.0.0') }")
|
872
878
|
catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
|
873
879
|
message = catalog2.resource('notify', 'foo')['message']
|
874
|
-
expect(message).to be_a(
|
875
|
-
expect(message).to eql(
|
880
|
+
expect(message).to be_a(SemanticPuppet::Version)
|
881
|
+
expect(message).to eql(SemanticPuppet::Version.parse('1.0.0'))
|
876
882
|
end
|
877
883
|
|
878
884
|
it 'should read and convert ext_parameters containing VersionRange from json' do
|
879
885
|
catalog = compile_to_catalog("notify {'foo': message => SemVerRange('>=1.0.0') }")
|
880
886
|
catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
|
881
887
|
message = catalog2.resource('notify', 'foo')['message']
|
882
|
-
expect(message).to be_a(
|
883
|
-
expect(message).to eql(
|
888
|
+
expect(message).to be_a(SemanticPuppet::VersionRange)
|
889
|
+
expect(message).to eql(SemanticPuppet::VersionRange.parse('>=1.0.0'))
|
884
890
|
end
|
885
891
|
|
886
892
|
it 'should read and convert ext_parameters containing Timespan from json' do
|
@@ -904,7 +910,7 @@ describe Puppet::Resource::Catalog, "when converting a resource catalog to pson"
|
|
904
910
|
catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
|
905
911
|
message = catalog2.resource('notify', 'foo')['message']
|
906
912
|
expect(message).to be_a(Hash)
|
907
|
-
expect(message['version']).to eql(
|
913
|
+
expect(message['version']).to eql(SemanticPuppet::Version.parse('1.0.0'))
|
908
914
|
expect(message['time']).to eql(Puppet::Pops::Time::Timestamp.parse('2016-09-15T08:32:16.123 UTC'))
|
909
915
|
end
|
910
916
|
|
@@ -913,7 +919,7 @@ describe Puppet::Resource::Catalog, "when converting a resource catalog to pson"
|
|
913
919
|
catalog2 = Puppet::Resource::Catalog.from_data_hash(JSON.parse(catalog.to_json))
|
914
920
|
message = catalog2.resource('notify', 'foo')['message']
|
915
921
|
expect(message).to be_a(Array)
|
916
|
-
expect(message[0]).to eql(
|
922
|
+
expect(message[0]).to eql(SemanticPuppet::Version.parse('1.0.0'))
|
917
923
|
expect(message[1]).to eql(Puppet::Pops::Time::Timestamp.parse('2016-09-15T08:32:16.123 UTC'))
|
918
924
|
end
|
919
925
|
end
|
data/spec/unit/resource_spec.rb
CHANGED
@@ -8,6 +8,10 @@ describe Puppet::Resource do
|
|
8
8
|
let(:basepath) { make_absolute("/somepath") }
|
9
9
|
let(:environment) { Puppet::Node::Environment.create(:testing, []) }
|
10
10
|
|
11
|
+
def expect_lookup(key)
|
12
|
+
Puppet::Pops::Lookup::GlobalDataProvider.any_instance.expects(:unchecked_key_lookup).with(Puppet::Pops::Lookup::LookupKey.new(key), any_parameters)
|
13
|
+
end
|
14
|
+
|
11
15
|
[:catalog, :file, :line].each do |attr|
|
12
16
|
it "should have an #{attr} attribute" do
|
13
17
|
resource = Puppet::Resource.new("file", "/my/file")
|
@@ -337,15 +341,14 @@ describe Puppet::Resource do
|
|
337
341
|
end
|
338
342
|
|
339
343
|
it "should query the data_binding terminus using a namespaced key" do
|
340
|
-
|
341
|
-
|
342
|
-
'apache::port', all_of(has_key(:environment), has_key(:variables)))
|
344
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
345
|
+
expect_lookup('apache::port')
|
343
346
|
inject_and_set_defaults(resource, scope)
|
344
347
|
end
|
345
348
|
|
346
349
|
it "should use the value from the data_binding terminus" do
|
347
|
-
|
348
|
-
|
350
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
351
|
+
expect_lookup('apache::port').returns('443')
|
349
352
|
|
350
353
|
inject_and_set_defaults(resource, scope)
|
351
354
|
|
@@ -353,8 +356,8 @@ describe Puppet::Resource do
|
|
353
356
|
end
|
354
357
|
|
355
358
|
it 'should use the default value if no value is found using the data_binding terminus' do
|
356
|
-
|
357
|
-
|
359
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
360
|
+
expect_lookup('apache::port').throws(:no_such_key)
|
358
361
|
|
359
362
|
inject_and_set_defaults(resource, scope)
|
360
363
|
|
@@ -362,8 +365,8 @@ describe Puppet::Resource do
|
|
362
365
|
end
|
363
366
|
|
364
367
|
it 'should use the default value if an undef value is found using the data_binding terminus' do
|
365
|
-
|
366
|
-
|
368
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
369
|
+
expect_lookup('apache::port').returns(nil)
|
367
370
|
|
368
371
|
inject_and_set_defaults(resource, scope)
|
369
372
|
|
@@ -371,8 +374,8 @@ describe Puppet::Resource do
|
|
371
374
|
end
|
372
375
|
|
373
376
|
it "should fail with error message about data binding on a hiera failure" do
|
374
|
-
|
375
|
-
|
377
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
378
|
+
expect_lookup('apache::port').raises(Puppet::DataBinding::LookupError, 'Forgettabotit')
|
376
379
|
expect {
|
377
380
|
inject_and_set_defaults(resource, scope)
|
378
381
|
}.to raise_error(Puppet::Error, /Lookup of key 'apache::port' failed: Forgettabotit/)
|
@@ -408,8 +411,8 @@ describe Puppet::Resource do
|
|
408
411
|
end
|
409
412
|
|
410
413
|
it "should use the value from the data_binding terminus when provided value is undef" do
|
411
|
-
|
412
|
-
|
414
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
415
|
+
expect_lookup('apache::port').returns('443')
|
413
416
|
|
414
417
|
rs = Puppet::Parser::Resource.new("class", "apache", :scope => scope,
|
415
418
|
:parameters => [Puppet::Parser::Resource::Param.new({ :name => 'port', :value => nil })])
|
@@ -425,8 +428,8 @@ describe Puppet::Resource do
|
|
425
428
|
let(:resource) { Puppet::Parser::Resource.new("class", "apache", :scope => scope) }
|
426
429
|
|
427
430
|
it "should use the value from the data_binding terminus" do
|
428
|
-
|
429
|
-
|
431
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
432
|
+
expect_lookup('apache::port').returns('443')
|
430
433
|
|
431
434
|
inject_and_set_defaults(resource, scope)
|
432
435
|
|
@@ -434,8 +437,8 @@ describe Puppet::Resource do
|
|
434
437
|
end
|
435
438
|
|
436
439
|
it "should use an undef value from the data_binding terminus" do
|
437
|
-
|
438
|
-
|
440
|
+
expect_lookup('lookup_options').throws(:no_such_key)
|
441
|
+
expect_lookup('apache::port').returns(nil)
|
439
442
|
|
440
443
|
inject_and_set_defaults(resource, scope)
|
441
444
|
|
data/spec/unit/semver_spec.rb
CHANGED
@@ -212,6 +212,20 @@ describe SemVer do
|
|
212
212
|
expect(version.tiny).to eq(5)
|
213
213
|
expect(version.special).to eq('-beta6')
|
214
214
|
end
|
215
|
+
|
216
|
+
it 'should not log a deprecation warning when strict == off' do
|
217
|
+
Puppet[:strict] = :off
|
218
|
+
SemVer.new('1.2.3')
|
219
|
+
expect(@logs).to be_empty
|
220
|
+
end
|
221
|
+
|
222
|
+
it 'should log a deprecation warning unless strict == off' do
|
223
|
+
(Puppet.settings.setting(:strict).values - [:off]).each do |setting|
|
224
|
+
Puppet[:strict] = setting
|
225
|
+
SemVer.new('1.2.3')
|
226
|
+
expect(@logs.map(&:message)).to include(/Use of class Puppet::SemVer is deprecated. SemanticPuppet::Version or SemanticPuppet::VersionRange should be used instead/)
|
227
|
+
end
|
228
|
+
end
|
215
229
|
end
|
216
230
|
|
217
231
|
describe '#matched_by?' do
|
@@ -795,6 +795,12 @@ describe Puppet::SSL::CertificateAuthority do
|
|
795
795
|
expect(@ca.list_certificates).to eq([cert1, cert2])
|
796
796
|
end
|
797
797
|
|
798
|
+
it "should print a deprecation when using #list_certificates" do
|
799
|
+
Puppet::SSL::Certificate.indirection.stubs(:search).with("*").returns [:foo, :bar]
|
800
|
+
Puppet.expects(:deprecation_warning).with(regexp_matches(/list_certificates is deprecated/))
|
801
|
+
@ca.list_certificates
|
802
|
+
end
|
803
|
+
|
798
804
|
describe "and printing certificates" do
|
799
805
|
it "should return nil if the certificate cannot be found" do
|
800
806
|
Puppet::SSL::Certificate.indirection.expects(:find).with("myhost").returns nil
|
@@ -927,7 +933,7 @@ describe Puppet::SSL::CertificateAuthority do
|
|
927
933
|
expect(@ca.certificate_is_alive?(@cert)).to be_truthy
|
928
934
|
end
|
929
935
|
|
930
|
-
it "should
|
936
|
+
it "should use a cached instance of the x509 store" do
|
931
937
|
OpenSSL::X509::Store.stubs(:new).returns(@store).once
|
932
938
|
|
933
939
|
@cert.expects(:content).returns "mycert"
|
@@ -937,6 +943,11 @@ describe Puppet::SSL::CertificateAuthority do
|
|
937
943
|
@ca.certificate_is_alive?(@cert)
|
938
944
|
@ca.certificate_is_alive?(@cert)
|
939
945
|
end
|
946
|
+
|
947
|
+
it "should be deprecated" do
|
948
|
+
Puppet.expects(:deprecation_warning).with(regexp_matches(/certificate_is_alive\? is deprecated/))
|
949
|
+
@ca.certificate_is_alive?(@cert)
|
950
|
+
end
|
940
951
|
end
|
941
952
|
end
|
942
953
|
|
@@ -182,6 +182,17 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
|
|
182
182
|
'Generator[thing]', 'Whit[completed_thing]')
|
183
183
|
end
|
184
184
|
|
185
|
+
it "should tag the sentinel with the tags of the resource" do
|
186
|
+
graph = relationships_after_eval_generating(<<-MANIFEST, 'Generator[thing]')
|
187
|
+
generator { thing:
|
188
|
+
code => 'notify { hello: }',
|
189
|
+
tag => 'foo',
|
190
|
+
}
|
191
|
+
MANIFEST
|
192
|
+
whit = find_vertex(graph, :whit, "completed_thing")
|
193
|
+
expect(whit.tags).to be_superset(['thing', 'foo', 'generator'].to_set)
|
194
|
+
end
|
195
|
+
|
185
196
|
it "should contain the generated resources in the same container as the generator" do
|
186
197
|
catalog = compile_to_ral(<<-MANIFEST)
|
187
198
|
class container {
|
data/spec/unit/type/user_spec.rb
CHANGED
@@ -351,13 +351,39 @@ describe Puppet::Type.type(:user) do
|
|
351
351
|
@user = described_class.new(:name => 'foo', :comment => @value)
|
352
352
|
end
|
353
353
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
354
|
+
describe "#insync" do
|
355
|
+
it "should delegate to the provider's #comments_insync? method if defined" do
|
356
|
+
# useradd subclasses nameservice and thus inherits #comments_insync?
|
357
|
+
user = described_class.new(:name => 'foo', :comment => @value, :provider => :useradd)
|
358
|
+
comment_property = user.properties.find {|p| p.name == :comment}
|
359
|
+
user.provider.expects(:comments_insync?)
|
360
|
+
comment_property.insync?('bar')
|
361
|
+
end
|
362
|
+
|
363
|
+
describe "#change_to_s" do
|
364
|
+
let(:is) { "\u2603" }
|
365
|
+
let(:should) { "\u06FF" }
|
366
|
+
let(:comment_property) { @user.properties.find { |p| p.name == :comment } }
|
367
|
+
context "given is and should strings with incompatible encoding" do
|
368
|
+
it "should return a formatted string" do
|
369
|
+
is.force_encoding(Encoding::ASCII_8BIT)
|
370
|
+
should.force_encoding(Encoding::UTF_8)
|
371
|
+
expect(Encoding.compatible?(is, should)).to be_falsey
|
372
|
+
# append Regexp with 'n' to set encoding to ASCII_8BIT
|
373
|
+
expect(comment_property.change_to_s(is,should)).to match(/changed '\xE2\x98\x83' to '\xDB\xBF'/n)
|
374
|
+
end
|
375
|
+
end
|
358
376
|
|
359
|
-
|
360
|
-
|
377
|
+
context "given is and should strings with compatible encoding" do
|
378
|
+
it "should return a formatted string" do
|
379
|
+
is.force_encoding(Encoding::UTF_8)
|
380
|
+
should.force_encoding(Encoding::UTF_8)
|
381
|
+
expect(Encoding.compatible?(is, should)).to be_truthy
|
382
|
+
# append Regexp with 'u' to set encoding to UTF_8
|
383
|
+
expect(comment_property.change_to_s(is,should)).to match(/changed '\u2603' to '\u06FF'/u)
|
384
|
+
end
|
385
|
+
end
|
386
|
+
end
|
361
387
|
end
|
362
388
|
end
|
363
389
|
|
@@ -17,7 +17,7 @@ describe Puppet::Util::FileType do
|
|
17
17
|
describe "when the file already exists" do
|
18
18
|
it "should return the file's contents when asked to read it" do
|
19
19
|
Puppet::FileSystem.expects(:exist?).with(path).returns true
|
20
|
-
|
20
|
+
Puppet::FileSystem.expects(:read).with(path, :encoding => Encoding.default_external).returns "my text"
|
21
21
|
|
22
22
|
expect(file.read).to eq("my text")
|
23
23
|
end
|
@@ -46,7 +46,7 @@ describe Puppet::Util::FileType do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should first create a temp file and copy its contents over to the file location" do
|
49
|
-
Tempfile.expects(:new).with("puppet").returns tempfile
|
49
|
+
Tempfile.expects(:new).with("puppet", :encoding => Encoding.default_external).returns tempfile
|
50
50
|
tempfile.expects(:print).with("my text")
|
51
51
|
tempfile.expects(:flush)
|
52
52
|
tempfile.expects(:close)
|
@@ -151,7 +151,7 @@ describe Puppet::Util::FileType do
|
|
151
151
|
@tmp_cron = Tempfile.new("puppet_crontab_spec")
|
152
152
|
@tmp_cron_path = @tmp_cron.path
|
153
153
|
Puppet::Util.stubs(:uid).with(uid).returns 9000
|
154
|
-
Tempfile.expects(:new).with("puppet_#{name}").returns @tmp_cron
|
154
|
+
Tempfile.expects(:new).with("puppet_#{name}", :encoding => Encoding.default_external).returns @tmp_cron
|
155
155
|
end
|
156
156
|
|
157
157
|
after :each do
|
data/spec/unit/util/yaml_spec.rb
CHANGED
data/spec/unit/util_spec.rb
CHANGED
@@ -181,15 +181,23 @@ describe Puppet::Util do
|
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
|
-
# but in 2.3, the behavior is correct when external codepage is 65001 / UTF-8
|
184
|
+
# but in 2.3, the behavior is mostly correct when external codepage is 65001 / UTF-8
|
185
185
|
it "works around Ruby bug 8822 (which fails to preserve UTF-8 properly when accessing ENV) (Ruby >= 2.3.x) ",
|
186
186
|
:if => ((match = RUBY_VERSION.match(/^2\.(\d+)\./)) && match.captures[0].to_i >= 3 && Puppet.features.microsoft_windows?) do
|
187
187
|
|
188
|
+
raise 'This test requires a non-UTF8 codepage' if Encoding.default_external == Encoding::UTF_8
|
189
|
+
|
188
190
|
withenv_utf8 do |utf_8_key, utf_8_value, codepage_key|
|
189
191
|
# Ruby 2.3 fixes access by the original UTF-8 key, and behaves differently than 2.1
|
190
192
|
# keying by local codepage will work only when the UTF-8 can be converted to local codepage
|
191
193
|
# the key selected for this test contains characters unavailable to a local codepage, hence doesn't work
|
192
|
-
|
194
|
+
|
195
|
+
# On Japanese Windows (Code Page 932) this test resolves as true.
|
196
|
+
# otherwise the key selected for this test contains characters
|
197
|
+
# unavailable to a local codepage, hence doesn't work
|
198
|
+
# HACK: tech debt to replace once PUP-7019 is understood
|
199
|
+
should_be_found = (Encoding.default_external == Encoding::CP932)
|
200
|
+
expect(ENV.key?(codepage_key)).to eq(should_be_found)
|
193
201
|
expect(ENV.key?(utf_8_key)).to eq(true)
|
194
202
|
|
195
203
|
# Ruby's ENV.keys has slightly different behavior than ENV.key?(key), and 2.3 differs from 2.1
|
data/tasks/i18n.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# These tasks wrap tasks from the gettext-setup gem, used when generating
|
2
|
+
# translation files. If you want to use a new task in the gettext-setup
|
3
|
+
# gem, add a wrapper for it here to expose it in the Puppet repo.
|
4
|
+
namespace :gettext do
|
5
|
+
task :load_gettext_tasks do
|
6
|
+
spec = Gem::Specification.find_by_name 'gettext-setup'
|
7
|
+
load "#{spec.gem_dir}/lib/tasks/gettext.rake"
|
8
|
+
GettextSetup.initialize(File.absolute_path('../locales', File.dirname(__FILE__)))
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Generate a new POT file"
|
12
|
+
task :generate_pot => :load_gettext_tasks do
|
13
|
+
Rake::Task["gettext:pot"].invoke
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Generate a PO file for the given locale"
|
17
|
+
task :generate_po, [:language] => :load_gettext_tasks do |t, args|
|
18
|
+
Rake::Task["gettext:po"].invoke(args[:language])
|
19
|
+
end
|
20
|
+
end
|