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
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet_spec/files'
|
3
|
+
require 'puppet_spec/compiler'
|
4
|
+
require 'deep_merge/core'
|
5
|
+
|
6
|
+
describe 'lookup' do
|
7
|
+
include PuppetSpec::Files
|
8
|
+
|
9
|
+
context 'with an environment' do
|
10
|
+
let(:env_name) { 'spec' }
|
11
|
+
let(:env_dir) { tmpdir('environments') }
|
12
|
+
let(:environment_files) do
|
13
|
+
{
|
14
|
+
env_name => {
|
15
|
+
'modules' => {},
|
16
|
+
'hiera.yaml' => <<-YAML.unindent,
|
17
|
+
---
|
18
|
+
version: 5
|
19
|
+
hierarchy:
|
20
|
+
- name: "Common"
|
21
|
+
data_hash: yaml_data
|
22
|
+
path: "common.yaml"
|
23
|
+
YAML
|
24
|
+
'data' => {
|
25
|
+
'common.yaml' => <<-YAML.unindent
|
26
|
+
---
|
27
|
+
a: value a
|
28
|
+
mod_a::a: value mod_a::a (from environment)
|
29
|
+
mod_a::hash_a:
|
30
|
+
a: value mod_a::hash_a.a (from environment)
|
31
|
+
mod_a::hash_b:
|
32
|
+
a: value mod_a::hash_b.a (from environment)
|
33
|
+
lookup_options:
|
34
|
+
mod_a::hash_b:
|
35
|
+
merge: hash
|
36
|
+
YAML
|
37
|
+
}
|
38
|
+
},
|
39
|
+
'someother' => {
|
40
|
+
}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:app) { Puppet::Application[:lookup] }
|
45
|
+
let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
|
46
|
+
let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
|
47
|
+
|
48
|
+
let(:populated_env_dir) do
|
49
|
+
dir_contained_in(env_dir, environment_files)
|
50
|
+
env_dir
|
51
|
+
end
|
52
|
+
|
53
|
+
def lookup(key, options = {}, explain = false)
|
54
|
+
key = [key] unless key.is_a?(Array)
|
55
|
+
app.command_line.stubs(:args).returns(key)
|
56
|
+
if explain
|
57
|
+
app.options[:explain] = true
|
58
|
+
app.options[:render_as] = :s
|
59
|
+
else
|
60
|
+
app.options[:render_as] = :json
|
61
|
+
end
|
62
|
+
options.each_pair { |k, v| app.options[k] = v }
|
63
|
+
capture = StringIO.new
|
64
|
+
saved_stdout = $stdout
|
65
|
+
begin
|
66
|
+
$stdout = capture
|
67
|
+
expect { app.run_command }.to exit_with(0)
|
68
|
+
ensure
|
69
|
+
$stdout = saved_stdout
|
70
|
+
end
|
71
|
+
out = capture.string.strip
|
72
|
+
if explain
|
73
|
+
out
|
74
|
+
else
|
75
|
+
out.empty? ? nil : JSON.parse("[#{out}]")[0]
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def explain(key, options = {})
|
80
|
+
lookup(key, options, true)
|
81
|
+
end
|
82
|
+
|
83
|
+
around(:each) do |example|
|
84
|
+
Puppet.override(:environments => environments, :current_environment => env) do
|
85
|
+
example.run
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'finds data in the environment' do
|
90
|
+
expect(lookup('a')).to eql('value a')
|
91
|
+
end
|
92
|
+
|
93
|
+
context 'configured with the wrong environment' do
|
94
|
+
let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
|
95
|
+
it 'does not find data in non-existing environment' do
|
96
|
+
Puppet.override(:environments => environments, :current_environment => 'someother') do
|
97
|
+
expect(lookup('a', {}, true)).to match(/did not find a value for the name 'a'/)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'and a module' do
|
103
|
+
let(:mod_a_files) do
|
104
|
+
{
|
105
|
+
'mod_a' => {
|
106
|
+
'data' => {
|
107
|
+
'common.yaml' => <<-YAML.unindent
|
108
|
+
---
|
109
|
+
mod_a::a: value mod_a::a (from mod_a)
|
110
|
+
mod_a::b: value mod_a::b (from mod_a)
|
111
|
+
mod_a::hash_a:
|
112
|
+
a: value mod_a::hash_a.a (from mod_a)
|
113
|
+
b: value mod_a::hash_a.b (from mod_a)
|
114
|
+
mod_a::hash_b:
|
115
|
+
a: value mod_a::hash_b.a (from mod_a)
|
116
|
+
b: value mod_a::hash_b.b (from mod_a)
|
117
|
+
mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
|
118
|
+
mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
|
119
|
+
mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
|
120
|
+
mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
|
121
|
+
mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
|
122
|
+
'mod_a::a.quoted.key': 'value mod_a::a.quoted.key (from mod_a)'
|
123
|
+
YAML
|
124
|
+
},
|
125
|
+
'hiera.yaml' => <<-YAML.unindent,
|
126
|
+
---
|
127
|
+
version: 5
|
128
|
+
hierarchy:
|
129
|
+
- name: "Common"
|
130
|
+
data_hash: yaml_data
|
131
|
+
path: "common.yaml"
|
132
|
+
YAML
|
133
|
+
}
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
let(:populated_env_dir) do
|
138
|
+
dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
|
139
|
+
env_dir
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'finds data in the module' do
|
143
|
+
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'finds quoted keys in the module' do
|
147
|
+
expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'merges hashes from environment and module when merge strategy hash is used' do
|
151
|
+
expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -143,7 +143,7 @@ describe "Data binding" do
|
|
143
143
|
def configure_hiera_for_one_tier(data)
|
144
144
|
hiera_config_file = tmpfile("hiera.yaml")
|
145
145
|
|
146
|
-
File.open(hiera_config_file, 'w') do |f|
|
146
|
+
File.open(hiera_config_file, 'w:UTF-8') do |f|
|
147
147
|
f.write("---
|
148
148
|
:yaml:
|
149
149
|
:datadir: #{dir}
|
@@ -154,7 +154,7 @@ describe "Data binding" do
|
|
154
154
|
end
|
155
155
|
|
156
156
|
data.each do | file, contents |
|
157
|
-
File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
|
157
|
+
File.open(File.join(dir, "#{file}.yaml"), 'w:UTF-8') do |f|
|
158
158
|
f.write(YAML.dump(contents))
|
159
159
|
end
|
160
160
|
end
|
@@ -165,7 +165,7 @@ describe "Data binding" do
|
|
165
165
|
def configure_hiera_for_two_tier(data)
|
166
166
|
hiera_config_file = tmpfile("hiera.yaml")
|
167
167
|
|
168
|
-
File.open(hiera_config_file, 'w') do |f|
|
168
|
+
File.open(hiera_config_file, 'w:UTF-8') do |f|
|
169
169
|
f.write("---
|
170
170
|
:yaml:
|
171
171
|
:datadir: #{dir}
|
@@ -176,7 +176,7 @@ describe "Data binding" do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
data.each do | file, contents |
|
179
|
-
File.open(File.join(dir, "#{file}.yaml"), 'w') do |f|
|
179
|
+
File.open(File.join(dir, "#{file}.yaml"), 'w:UTF-8') do |f|
|
180
180
|
f.write(YAML.dump(contents))
|
181
181
|
end
|
182
182
|
end
|
@@ -188,7 +188,7 @@ describe "Data binding" do
|
|
188
188
|
module_dir = File.join(dir, module_name, 'manifests')
|
189
189
|
FileUtils.mkdir_p(module_dir)
|
190
190
|
|
191
|
-
File.open(File.join(module_dir, name), 'w') do |f|
|
191
|
+
File.open(File.join(module_dir, name), 'w:UTF-8') do |f|
|
192
192
|
f.write(manifest)
|
193
193
|
end
|
194
194
|
end
|
@@ -235,6 +235,19 @@ describe "Puppet defaults" do
|
|
235
235
|
it "should be set to hiera by default" do
|
236
236
|
expect(Puppet.settings[:data_binding_terminus]).to eq(:hiera)
|
237
237
|
end
|
238
|
+
|
239
|
+
it "to be neither 'hiera' nor 'none', a deprecation warning is logged" do
|
240
|
+
expect(@logs).to eql([])
|
241
|
+
Puppet[:data_binding_terminus] = 'magic'
|
242
|
+
expect(@logs[0].to_s).to match(/Setting 'data_binding_terminus' is deprecated/)
|
243
|
+
end
|
244
|
+
|
245
|
+
it "to not log a warning if set to 'none' or 'hiera'" do
|
246
|
+
expect(@logs).to eql([])
|
247
|
+
Puppet[:data_binding_terminus] = 'none'
|
248
|
+
Puppet[:data_binding_terminus] = 'hiera'
|
249
|
+
expect(@logs).to eql([])
|
250
|
+
end
|
238
251
|
end
|
239
252
|
|
240
253
|
describe "agent_catalog_run_lockfile" do
|
@@ -18,11 +18,11 @@ describe "default manifests" do
|
|
18
18
|
manifestsdir = File.join(testingdir, "manifests")
|
19
19
|
FileUtils.mkdir_p(manifestsdir)
|
20
20
|
|
21
|
-
File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
|
21
|
+
File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
22
22
|
f.puts("notify { 'ManifestFromRelativeDefault': }")
|
23
23
|
end
|
24
24
|
|
25
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
25
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
26
26
|
f.puts("environmentpath=#{environmentpath}")
|
27
27
|
end
|
28
28
|
|
@@ -43,14 +43,14 @@ describe "default manifests" do
|
|
43
43
|
manifestsdir = File.expand_path("manifests", confdir)
|
44
44
|
FileUtils.mkdir_p(manifestsdir)
|
45
45
|
|
46
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
46
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
47
47
|
f.puts(<<-EOF)
|
48
48
|
environmentpath=#{environmentpath}
|
49
49
|
default_manifest=#{manifestsdir}
|
50
50
|
EOF
|
51
51
|
end
|
52
52
|
|
53
|
-
File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
|
53
|
+
File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
54
54
|
f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
|
55
55
|
end
|
56
56
|
|
@@ -61,7 +61,7 @@ describe "default manifests" do
|
|
61
61
|
|
62
62
|
it "reads manifest from directory environment manifest when environment.conf manifest set" do
|
63
63
|
default_manifestsdir = File.expand_path("manifests", confdir)
|
64
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
64
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
65
65
|
f.puts(<<-EOF)
|
66
66
|
environmentpath=#{environmentpath}
|
67
67
|
default_manifest=#{default_manifestsdir}
|
@@ -71,11 +71,11 @@ describe "default manifests" do
|
|
71
71
|
manifestsdir = File.join(testingdir, "special_manifests")
|
72
72
|
FileUtils.mkdir_p(manifestsdir)
|
73
73
|
|
74
|
-
File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
|
74
|
+
File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
75
75
|
f.puts("notify { 'ManifestFromEnvironmentConfManifest': }")
|
76
76
|
end
|
77
77
|
|
78
|
-
File.open(File.join(testingdir, "environment.conf"), "w") do |f|
|
78
|
+
File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
79
79
|
f.puts("manifest=./special_manifests")
|
80
80
|
end
|
81
81
|
|
@@ -89,21 +89,21 @@ describe "default manifests" do
|
|
89
89
|
default_manifestsdir = File.expand_path("manifests", confdir)
|
90
90
|
FileUtils.mkdir_p(default_manifestsdir)
|
91
91
|
|
92
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
92
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
93
93
|
f.puts(<<-EOF)
|
94
94
|
environmentpath=#{environmentpath}
|
95
95
|
default_manifest=#{default_manifestsdir}
|
96
96
|
EOF
|
97
97
|
end
|
98
98
|
|
99
|
-
File.open(File.join(default_manifestsdir, "site.pp"), "w") do |f|
|
99
|
+
File.open(File.join(default_manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
100
100
|
f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
|
101
101
|
end
|
102
102
|
|
103
103
|
implicit_manifestsdir = File.join(testingdir, "manifests")
|
104
104
|
FileUtils.mkdir_p(implicit_manifestsdir)
|
105
105
|
|
106
|
-
File.open(File.join(implicit_manifestsdir, "site.pp"), "w") do |f|
|
106
|
+
File.open(File.join(implicit_manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
107
107
|
f.puts("notify { 'ManifestFromImplicitRelativeEnvironmentManifestDirectory': }")
|
108
108
|
end
|
109
109
|
|
@@ -125,7 +125,7 @@ describe "default manifests" do
|
|
125
125
|
before(:each) do
|
126
126
|
FileUtils.mkdir_p(manifestsdir)
|
127
127
|
|
128
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
128
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
129
129
|
f.puts(<<-EOF)
|
130
130
|
environmentpath=#{environmentpath}
|
131
131
|
default_manifest=#{manifestsdir}
|
@@ -133,7 +133,7 @@ describe "default manifests" do
|
|
133
133
|
EOF
|
134
134
|
end
|
135
135
|
|
136
|
-
File.open(File.join(manifestsdir, "site.pp"), "w") do |f|
|
136
|
+
File.open(File.join(manifestsdir, "site.pp"), "w", :encoding => Encoding::UTF_8) do |f|
|
137
137
|
f.puts("notify { 'ManifestFromAbsoluteDefaultManifest': }")
|
138
138
|
end
|
139
139
|
end
|
@@ -145,7 +145,7 @@ describe "default manifests" do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it "refuses to compile if environment.conf specifies a different manifest" do
|
148
|
-
File.open(File.join(testingdir, "environment.conf"), "w") do |f|
|
148
|
+
File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
149
149
|
f.puts("manifest=./special_manifests")
|
150
150
|
end
|
151
151
|
|
@@ -155,7 +155,7 @@ describe "default manifests" do
|
|
155
155
|
end
|
156
156
|
|
157
157
|
it "reads manifest from default_manifest setting when environment.conf has manifest set if setting equals default_manifest setting" do
|
158
|
-
File.open(File.join(testingdir, "environment.conf"), "w") do |f|
|
158
|
+
File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
159
159
|
f.puts("manifest=#{manifestsdir}")
|
160
160
|
end
|
161
161
|
|
@@ -165,7 +165,7 @@ describe "default manifests" do
|
|
165
165
|
end
|
166
166
|
|
167
167
|
it "logs errors if environment.conf specifies a different manifest" do
|
168
|
-
File.open(File.join(testingdir, "environment.conf"), "w") do |f|
|
168
|
+
File.open(File.join(testingdir, "environment.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
169
169
|
f.puts("manifest=./special_manifests")
|
170
170
|
end
|
171
171
|
|
@@ -177,7 +177,7 @@ describe "default manifests" do
|
|
177
177
|
end
|
178
178
|
|
179
179
|
it "raises an error if default_manifest is not absolute" do
|
180
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
180
|
+
File.open(File.join(confdir, "puppet.conf"), "w", :encoding => Encoding::UTF_8) do |f|
|
181
181
|
f.puts(<<-EOF)
|
182
182
|
environmentpath=#{environmentpath}
|
183
183
|
default_manifest=./relative
|
@@ -14,7 +14,7 @@ describe "setting hooks" do
|
|
14
14
|
it "accesses correct directory environment settings after initializing a setting with an on_write hook" do
|
15
15
|
expect(Puppet.settings.setting(:certname).call_hook).to eq(:on_write_only)
|
16
16
|
|
17
|
-
File.open(File.join(confdir, "puppet.conf"), "w") do |f|
|
17
|
+
File.open(File.join(confdir, "puppet.conf"), "w:UTF-8") do |f|
|
18
18
|
f.puts("environmentpath=#{environmentpath}")
|
19
19
|
f.puts("certname=something")
|
20
20
|
end
|
@@ -7,12 +7,16 @@ describe "Windows UTF8 environment variables", :if => Puppet.features.microsoft_
|
|
7
7
|
# Do not use before and after hooks in these tests as it may have unintended consequences
|
8
8
|
|
9
9
|
before(:all) {
|
10
|
-
@varname = '
|
10
|
+
@varname = 'test_helper_spec-test_variable'
|
11
11
|
@rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
|
12
12
|
|
13
13
|
Puppet::Util::Windows::Process.set_environment_variable(@varname, @rune_utf8)
|
14
14
|
}
|
15
|
-
|
15
|
+
after(:all) {
|
16
|
+
# Need to cleanup this environment variable otherwise it contaminates any subsequent tests
|
17
|
+
Puppet::Util::Windows::Process.set_environment_variable(@varname, nil)
|
18
|
+
}
|
19
|
+
|
16
20
|
it "#after_each_test should preserve UTF8 environment variables" do
|
17
21
|
envhash = Puppet::Util::Windows::Process.get_environment_strings
|
18
22
|
expect(envhash[@varname]).to eq(@rune_utf8)
|
@@ -266,6 +266,80 @@ describe Puppet::Transaction do
|
|
266
266
|
expect(Puppet::FileSystem.exist?(newfile)).to be_truthy
|
267
267
|
end
|
268
268
|
|
269
|
+
# Ensure when resources have been generated with eval_generate that event
|
270
|
+
# propagation still works when filtering with tags
|
271
|
+
context "when filtering with tags" do
|
272
|
+
context "when resources are dependent on dynamically generated resources" do
|
273
|
+
it "should trigger (only) appropriately tagged dependent resources" do
|
274
|
+
source = dir_containing('sourcedir', {'foo' => 'bar'})
|
275
|
+
target = tmpdir('targetdir')
|
276
|
+
file1 = tmpfile("file1")
|
277
|
+
file2 = tmpfile("file2")
|
278
|
+
|
279
|
+
file = Puppet::Type.type(:file).new(
|
280
|
+
:path => target,
|
281
|
+
:source => source,
|
282
|
+
:ensure => :present,
|
283
|
+
:recurse => true,
|
284
|
+
:tag => "foo_tag",
|
285
|
+
)
|
286
|
+
|
287
|
+
exec1 = Puppet::Type.type(:exec).new(
|
288
|
+
:path => ENV["PATH"],
|
289
|
+
:command => touch(file1),
|
290
|
+
:refreshonly => true,
|
291
|
+
:subscribe => file,
|
292
|
+
:tag => "foo_tag",
|
293
|
+
)
|
294
|
+
|
295
|
+
exec2 = Puppet::Type.type(:exec).new(
|
296
|
+
:path => ENV["PATH"],
|
297
|
+
:command => touch(file2),
|
298
|
+
:refreshonly => true,
|
299
|
+
:subscribe => file,
|
300
|
+
)
|
301
|
+
|
302
|
+
Puppet[:tags] = "foo_tag"
|
303
|
+
catalog = mk_catalog(file, exec1, exec2)
|
304
|
+
catalog.apply
|
305
|
+
expect(Puppet::FileSystem.exist?(file1)).to be_truthy
|
306
|
+
expect(Puppet::FileSystem.exist?(file2)).to be_falsey
|
307
|
+
end
|
308
|
+
|
309
|
+
it "should trigger implicitly tagged dependent resources, ie via type name" do
|
310
|
+
file1 = tmpfile("file1")
|
311
|
+
file2 = tmpfile("file2")
|
312
|
+
|
313
|
+
exec1 = Puppet::Type.type(:exec).new(
|
314
|
+
:name => "exec1",
|
315
|
+
:path => ENV["PATH"],
|
316
|
+
:command => touch(file1),
|
317
|
+
)
|
318
|
+
|
319
|
+
exec1.stubs(:eval_generate).returns(
|
320
|
+
[ (Puppet::Type.type(:notify).new :name => "eval1_notify")]
|
321
|
+
)
|
322
|
+
|
323
|
+
exec2 = Puppet::Type.type(:exec).new(
|
324
|
+
:name => "exec2",
|
325
|
+
:path => ENV["PATH"],
|
326
|
+
:command => touch(file2),
|
327
|
+
:refreshonly => true,
|
328
|
+
:subscribe => exec1,
|
329
|
+
)
|
330
|
+
exec2.stubs(:eval_generate).returns(
|
331
|
+
[ (Puppet::Type.type(:notify).new :name => "eval2_notify")]
|
332
|
+
)
|
333
|
+
|
334
|
+
Puppet[:tags] = "exec"
|
335
|
+
catalog = mk_catalog(exec1, exec2)
|
336
|
+
catalog.apply
|
337
|
+
expect(Puppet::FileSystem.exist?(file1)).to be_truthy
|
338
|
+
expect(Puppet::FileSystem.exist?(file2)).to be_truthy
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
269
343
|
describe "skipping resources" do
|
270
344
|
let(:fname) { tmpfile("exec") }
|
271
345
|
|
@@ -17,6 +17,14 @@ describe Puppet::Util::Execution do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
+
describe "#execute (non-Windows)", :if => !Puppet.features.microsoft_windows? do
|
21
|
+
it "should execute basic shell command" do
|
22
|
+
result = Puppet::Util::Execution.execute("ls /tmp", :failonfail => true)
|
23
|
+
expect(result.exitstatus).to eq(0)
|
24
|
+
expect(result.to_s).to_not be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
20
28
|
describe "#execute (Windows)", :if => Puppet.features.microsoft_windows? do
|
21
29
|
let(:utf8text) do
|
22
30
|
# Japanese Lorem Ipsum snippet
|
@@ -31,7 +31,7 @@ module PuppetSpec
|
|
31
31
|
if options.nil?
|
32
32
|
expect(release).to be_nil
|
33
33
|
else
|
34
|
-
from = options.keys.find { |k| k.nil? || k.is_a?(
|
34
|
+
from = options.keys.find { |k| k.nil? || k.is_a?(SemanticPuppet::Version) }
|
35
35
|
to = options.delete(from)
|
36
36
|
|
37
37
|
if to or from
|
@@ -49,7 +49,7 @@ module PuppetSpec
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def v(str)
|
52
|
-
|
52
|
+
SemanticPuppet::Version.parse(str)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -267,6 +267,22 @@ describe Puppet::Application::FaceBase do
|
|
267
267
|
app.expects(:render).with(app.arguments.length + 1, ["myname", "myarg"])
|
268
268
|
expect { app.main }.to exit_with(0)
|
269
269
|
end
|
270
|
+
|
271
|
+
it "should issue a deprecation warning if the face is deprecated" do
|
272
|
+
# since app is shared across examples, stub to avoid affecting shared context
|
273
|
+
app.face.stubs(:deprecated?).returns(true)
|
274
|
+
app.face.expects(:foo).with(*app.arguments)
|
275
|
+
Puppet.expects(:deprecation_warning).with(regexp_matches(/'puppet basetest' is deprecated/))
|
276
|
+
expect { app.main }.to exit_with(0)
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should not issue a deprecation warning if the face is not deprecated" do
|
280
|
+
Puppet.expects(:deprecation_warning).never
|
281
|
+
# since app is shared across examples, stub to avoid affecting shared context
|
282
|
+
app.face.stubs(:deprecated?).returns(false)
|
283
|
+
app.face.expects(:foo).with(*app.arguments)
|
284
|
+
expect { app.main }.to exit_with(0)
|
285
|
+
end
|
270
286
|
end
|
271
287
|
|
272
288
|
describe "error reporting" do
|