puppet 4.8.2 → 4.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2593
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -533,7 +533,7 @@ describe 'the new function' do
|
|
533
533
|
{ [] => 'Notify[Array[Unit], []]',
|
534
534
|
[true] => 'Notify[Array[Boolean], [true]]',
|
535
535
|
{'a'=>true, 'b' => false} => 'Notify[Array[Array[Scalar]], [[a, true], [b, false]]]',
|
536
|
-
'abc' => 'Notify[Array[String], [a, b, c]]',
|
536
|
+
'abc' => 'Notify[Array[String[1, 1]], [a, b, c]]',
|
537
537
|
3 => 'Notify[Array[Integer], [0, 1, 2]]',
|
538
538
|
}.each do |input, result|
|
539
539
|
it "produces #{result} when given the value #{input.inspect} and wrap is not given" do
|
@@ -591,7 +591,7 @@ describe 'the new function' do
|
|
591
591
|
end
|
592
592
|
|
593
593
|
context 'when invoked on Tuple' do
|
594
|
-
{ 'abc' => 'Notify[Array[String], [a, b, c]]',
|
594
|
+
{ 'abc' => 'Notify[Array[String[1, 1]], [a, b, c]]',
|
595
595
|
3 => 'Notify[Array[Integer], [0, 1, 2]]',
|
596
596
|
}.each do |input, result|
|
597
597
|
it "produces #{result} when given the value #{input.inspect} and wrap is not given" do
|
@@ -617,7 +617,7 @@ describe 'the new function' do
|
|
617
617
|
{'a'=>true} => 'Notify[Hash[String, Boolean], {a => true}]',
|
618
618
|
[1,2,3,4] => 'Notify[Hash[Integer, Integer], {1 => 2, 3 => 4}]',
|
619
619
|
[[1,2],[3,4]] => 'Notify[Hash[Integer, Integer], {1 => 2, 3 => 4}]',
|
620
|
-
'abcd' => 'Notify[Hash[String, String], {a => b, c => d}]',
|
620
|
+
'abcd' => 'Notify[Hash[String[1, 1], String[1, 1]], {a => b, c => d}]',
|
621
621
|
4 => 'Notify[Hash[Integer, Integer], {0 => 1, 2 => 3}]',
|
622
622
|
|
623
623
|
}.each do |input, result|
|
@@ -376,7 +376,7 @@ describe Puppet::Graph::RbTreeMap do
|
|
376
376
|
describe "#each" do
|
377
377
|
it "should yield each pair in the tree in order if a block is provided" do
|
378
378
|
# Insert in reverse to demonstrate they aren't being yielded in insertion order
|
379
|
-
(1..5).to_a.
|
379
|
+
(1..5).to_a.reverse_each {|i| subject[i] = i.to_s}
|
380
380
|
|
381
381
|
nodes = []
|
382
382
|
subject.each do |key,value|
|
@@ -430,7 +430,7 @@ describe Puppet::Graph::SimpleGraph do
|
|
430
430
|
end
|
431
431
|
|
432
432
|
it "should write a dot file based on the passed name" do
|
433
|
-
File.expects(:open).with(@file, "w").yields(stub("file", :puts => nil))
|
433
|
+
File.expects(:open).with(@file, "w:UTF-8").yields(stub("file", :puts => nil))
|
434
434
|
@graph.expects(:to_dot).with("name" => @name.to_s.capitalize)
|
435
435
|
Puppet[:graph] = true
|
436
436
|
@graph.write_graph(@name)
|
@@ -74,14 +74,14 @@ describe Hiera::Scope do
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
describe "#
|
77
|
+
describe "#exist?" do
|
78
78
|
it "should correctly report missing data" do
|
79
79
|
real["nil_value"] = nil
|
80
80
|
real["blank_value"] = ""
|
81
81
|
|
82
|
-
expect(scope.
|
83
|
-
expect(scope.
|
84
|
-
expect(scope.
|
82
|
+
expect(scope.exist?("nil_value")).to eq(true)
|
83
|
+
expect(scope.exist?("blank_value")).to eq(true)
|
84
|
+
expect(scope.exist?("missing_value")).to eq(false)
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should always return true for calling_class and calling_module" do
|
@@ -140,6 +140,15 @@ describe Puppet::Indirector::Request do
|
|
140
140
|
expect(Puppet::Indirector::Request.new(:ind, :method, "http://host/stuff with spaces", nil).key).to eq("stuff with spaces")
|
141
141
|
end
|
142
142
|
|
143
|
+
it "should set the request key to the unescaped path from the URI, in UTF-8 encoding" do
|
144
|
+
path = "\u4e07"
|
145
|
+
uri = "http://host/#{path}"
|
146
|
+
request = Puppet::Indirector::Request.new(:ind, :method, uri, nil)
|
147
|
+
|
148
|
+
expect(request.key).to eq(path)
|
149
|
+
expect(request.key.encoding).to eq(Encoding::UTF_8)
|
150
|
+
end
|
151
|
+
|
143
152
|
it "should set the :uri attribute to the full URI" do
|
144
153
|
expect(Puppet::Indirector::Request.new(:ind, :method, "http:///a/path/stu ff", nil).uri).to eq('http:///a/path/stu ff')
|
145
154
|
end
|
data/spec/unit/interface_spec.rb
CHANGED
@@ -132,6 +132,33 @@ describe Puppet::Interface do
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
|
135
|
+
context "when deprecating a face" do
|
136
|
+
let(:face) { subject.new(:foo, '0.0.1') }
|
137
|
+
describe "#deprecate" do
|
138
|
+
it "should respond to #deprecate" do
|
139
|
+
expect(subject.new(:foo, '0.0.1')).to respond_to(:deprecate)
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should set the deprecated value to true" do
|
143
|
+
expect(face.deprecated?).to be_falsey
|
144
|
+
face.deprecate
|
145
|
+
expect(face.deprecated?).to be_truthy
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "#deprecated?" do
|
150
|
+
it "should return a nil (falsey) value by default" do
|
151
|
+
expect(face.deprecated?).to be_falsey
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should return true if the face has been deprecated" do
|
155
|
+
expect(face.deprecated?).to be_falsey
|
156
|
+
face.deprecate
|
157
|
+
expect(face.deprecated?).to be_truthy
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
135
162
|
describe "with face-level display_global_options" do
|
136
163
|
it "should not return any action level display_global_options" do
|
137
164
|
face = subject.new(:with_display_global_options, '0.0.1') do
|
data/spec/unit/man_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe Puppet::Face[:man, :current] do
|
|
23
23
|
app = klass.new(Puppet::Util::CommandLine.new('puppet', ['man', name]))
|
24
24
|
|
25
25
|
expect do
|
26
|
-
IO.stubs(:popen).with(pager,
|
26
|
+
IO.stubs(:popen).with(pager, 'w:UTF-8').yields($stdout)
|
27
27
|
|
28
28
|
expect { app.run }.to exit_with(0)
|
29
29
|
end.to_not have_printed(/undefined method `gsub'/)
|
data/spec/unit/module_spec.rb
CHANGED
@@ -730,7 +730,7 @@ describe Puppet::Module do
|
|
730
730
|
it "should properly parse utf-8 contents" do
|
731
731
|
rune_utf8 = "\u16A0\u16C7\u16BB" # ᚠᛇᚻ
|
732
732
|
metadata_json = tmpfile('metadata.json')
|
733
|
-
File.open(metadata_json, 'w') do |file|
|
733
|
+
File.open(metadata_json, 'w:UTF-8') do |file|
|
734
734
|
file.puts <<-EOF
|
735
735
|
{
|
736
736
|
"license" : "GPL2",
|
@@ -358,6 +358,13 @@ symlinkfile
|
|
358
358
|
end
|
359
359
|
|
360
360
|
context 'with metadata.json' do
|
361
|
+
# different UTF-8 widths
|
362
|
+
# 1-byte A
|
363
|
+
# 2-byte ۿ - http://www.fileformat.info/info/unicode/char/06ff/index.htm - 0xDB 0xBF / 219 191
|
364
|
+
# 3-byte ᚠ - http://www.fileformat.info/info/unicode/char/16A0/index.htm - 0xE1 0x9A 0xA0 / 225 154 160
|
365
|
+
# 4-byte 𠜎 - http://www.fileformat.info/info/unicode/char/2070E/index.htm - 0xF0 0xA0 0x9C 0x8E / 240 160 156 142
|
366
|
+
MIXED_UTF8 = "A\u06FF\u16A0\u{2070E}" # Aۿᚠ𠜎
|
367
|
+
|
361
368
|
before :each do
|
362
369
|
File.open(File.join(path, 'metadata.json'), 'w') do |f|
|
363
370
|
f.puts({
|
@@ -366,7 +373,7 @@ symlinkfile
|
|
366
373
|
"source" => "https://github.com/testing/#{module_name}",
|
367
374
|
"author" => "testing",
|
368
375
|
"license" => "Apache License Version 2.0",
|
369
|
-
"summary" => "
|
376
|
+
"summary" => "#{MIXED_UTF8}",
|
370
377
|
"description" => "This module can be used for basic testing",
|
371
378
|
"project_page" => "https://github.com/testing/#{module_name}"
|
372
379
|
}.to_json)
|
@@ -393,6 +400,14 @@ symlinkfile
|
|
393
400
|
builder.run
|
394
401
|
}.to raise_error Puppet::ModuleTool::Errors::ModuleToolError, /symlinks/i
|
395
402
|
end
|
403
|
+
|
404
|
+
it "writes UTF-8 metdata correctly" do
|
405
|
+
# file is written initially in before block, then by builders write_json method
|
406
|
+
builder.run
|
407
|
+
metadata_path = File.join(path, 'metadata.json')
|
408
|
+
summary = JSON.parse(Puppet::FileSystem.read(metadata_path, :encoding => Encoding::UTF_8))["summary"]
|
409
|
+
expect(summary).to eq(MIXED_UTF8)
|
410
|
+
end
|
396
411
|
end
|
397
412
|
|
398
413
|
context 'with metadata.json containing checksums' do
|
@@ -29,7 +29,7 @@ describe Puppet::ModuleTool::Applications::Installer do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
before do
|
32
|
-
|
32
|
+
SemanticPuppet::Dependency.clear_sources
|
33
33
|
installer = Puppet::ModuleTool::Applications::Installer.any_instance
|
34
34
|
installer.stubs(:module_repository).returns(remote_source)
|
35
35
|
end
|
@@ -27,7 +27,7 @@ describe Puppet::ModuleTool::Applications::Upgrader do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
before do
|
30
|
-
|
30
|
+
SemanticPuppet::Dependency.clear_sources
|
31
31
|
installer = Puppet::ModuleTool::Applications::Upgrader.any_instance
|
32
32
|
installer.stubs(:module_repository).returns(remote_source)
|
33
33
|
end
|
@@ -19,21 +19,21 @@ describe Puppet::ModuleTool::InstalledModules do
|
|
19
19
|
it 'works when given a semantic version' do
|
20
20
|
mod = PuppetSpec::Modules.create('goodsemver', @modpath, :metadata => {:version => '1.2.3'})
|
21
21
|
installed = described_class.new(@env)
|
22
|
-
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(
|
22
|
+
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('1.2.3'))
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'defaults when not given a semantic version' do
|
26
26
|
mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => 'banana'})
|
27
27
|
Puppet.expects(:warning).with(regexp_matches(/Semantic Version/))
|
28
28
|
installed = described_class.new(@env)
|
29
|
-
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(
|
29
|
+
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'defaults when not given a full semantic version' do
|
33
33
|
mod = PuppetSpec::Modules.create('badsemver', @modpath, :metadata => {:version => '1.2'})
|
34
34
|
Puppet.expects(:warning).with(regexp_matches(/Semantic Version/))
|
35
35
|
installed = described_class.new(@env)
|
36
|
-
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(
|
36
|
+
expect(installed.modules["puppetlabs-#{mod.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'still works if there is an invalid version in one of the modules' do
|
@@ -42,8 +42,8 @@ describe Puppet::ModuleTool::InstalledModules do
|
|
42
42
|
mod3 = PuppetSpec::Modules.create('notquitesemver', @modpath, :metadata => {:version => '1.2'})
|
43
43
|
Puppet.expects(:warning).with(regexp_matches(/Semantic Version/)).twice
|
44
44
|
installed = described_class.new(@env)
|
45
|
-
expect(installed.modules["puppetlabs-#{mod1.name}"].version).to eq(
|
46
|
-
expect(installed.modules["puppetlabs-#{mod2.name}"].version).to eq(
|
47
|
-
expect(installed.modules["puppetlabs-#{mod3.name}"].version).to eq(
|
45
|
+
expect(installed.modules["puppetlabs-#{mod1.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
|
46
|
+
expect(installed.modules["puppetlabs-#{mod2.name}"].version).to eq(SemanticPuppet::Version.parse('1.2.3'))
|
47
|
+
expect(installed.modules["puppetlabs-#{mod3.name}"].version).to eq(SemanticPuppet::Version.parse('0.0.0'))
|
48
48
|
end
|
49
49
|
end
|
@@ -288,21 +288,21 @@ TREE
|
|
288
288
|
it 'parses a dependency without a version range expression' do
|
289
289
|
name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar')
|
290
290
|
expect(name).to eql('foo-bar')
|
291
|
-
expect(range).to eql(
|
291
|
+
expect(range).to eql(SemanticPuppet::VersionRange.parse('>= 0.0.0'))
|
292
292
|
expect(expr).to eql('>= 0.0.0')
|
293
293
|
end
|
294
294
|
|
295
295
|
it 'parses a dependency with a version range expression' do
|
296
296
|
name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar', 'version_requirement' => '1.2.x')
|
297
297
|
expect(name).to eql('foo-bar')
|
298
|
-
expect(range).to eql(
|
298
|
+
expect(range).to eql(SemanticPuppet::VersionRange.parse('1.2.x'))
|
299
299
|
expect(expr).to eql('1.2.x')
|
300
300
|
end
|
301
301
|
|
302
302
|
it 'does not raise an error on invalid version range expressions' do
|
303
303
|
name, range, expr = subject.parse_module_dependency('source', 'name' => 'foo-bar', 'version_requirement' => 'nope')
|
304
304
|
expect(name).to eql('foo-bar')
|
305
|
-
expect(range).to eql(
|
305
|
+
expect(range).to eql(SemanticPuppet::VersionRange::EMPTY_RANGE)
|
306
306
|
expect(expr).to eql('nope')
|
307
307
|
end
|
308
308
|
end
|
@@ -296,4 +296,14 @@ describe Puppet::Network::HTTP::Connection do
|
|
296
296
|
expect(request['authorization']).to match(/^Basic/)
|
297
297
|
end.returns(httpok)
|
298
298
|
end
|
299
|
+
|
300
|
+
it "sets HTTP User-Agent header" do
|
301
|
+
puppet_ua = "Puppet/#{Puppet.version} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})"
|
302
|
+
|
303
|
+
Net::HTTP.any_instance.expects(:request).with do |request|
|
304
|
+
expect(request['User-Agent']).to eq(puppet_ua)
|
305
|
+
end.returns(httpok)
|
306
|
+
|
307
|
+
subject.get('/path')
|
308
|
+
end
|
299
309
|
end
|
@@ -136,7 +136,7 @@ describe Puppet::Network::HTTP::WEBrick do
|
|
136
136
|
log = make_absolute("/master/log")
|
137
137
|
Puppet[:masterhttplog] = log
|
138
138
|
|
139
|
-
File.expects(:open).with(log, "a
|
139
|
+
File.expects(:open).with(log, "a+:UTF-8").returns @filehandle
|
140
140
|
|
141
141
|
server.setup_logger
|
142
142
|
end
|
@@ -492,13 +492,13 @@ describe 'Puppet::Pops::Evaluator::EvaluatorImpl/AccessOperator' do
|
|
492
492
|
it 'produces a NotUndef instance with String type when given a literal String' do
|
493
493
|
type_expr = fqr('NotUndef')[literal('hey')]
|
494
494
|
tf = Puppet::Pops::Types::TypeFactory
|
495
|
-
expect(evaluate(type_expr)).to be_the_type(tf.not_undef(tf.string(
|
495
|
+
expect(evaluate(type_expr)).to be_the_type(tf.not_undef(tf.string('hey')))
|
496
496
|
end
|
497
497
|
|
498
498
|
it 'Produces Optional instance with String type when using a String argument' do
|
499
499
|
type_expr = fqr('Optional')[literal('hey')]
|
500
500
|
tf = Puppet::Pops::Types::TypeFactory
|
501
|
-
expect(evaluate(type_expr)).to be_the_type(tf.optional(tf.string(
|
501
|
+
expect(evaluate(type_expr)).to be_the_type(tf.optional(tf.string('hey')))
|
502
502
|
end
|
503
503
|
|
504
504
|
# Type Type
|
@@ -26,27 +26,27 @@ describe 'when converting to 3.x' do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'does not convert a SemVer instance to string' do
|
29
|
-
v =
|
29
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
30
30
|
expect(converter.convert(v, {}, nil)).to equal(v)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'converts the symbol :undef to the undef value' do
|
34
|
-
v =
|
34
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
35
35
|
expect(converter.convert(:undef, {}, 'undef value')).to eql('undef value')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'converts the nil to the undef value' do
|
39
|
-
v =
|
39
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
40
40
|
expect(converter.convert(nil, {}, 'undef value')).to eql('undef value')
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'does not convert a symbol nested in an array' do
|
44
|
-
v =
|
44
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
45
45
|
expect(converter.convert({'foo' => :undef}, {}, 'undef value')).to eql({'foo' => :undef})
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'converts nil to :undef when nested in an array' do
|
49
|
-
v =
|
49
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
50
50
|
expect(converter.convert({'foo' => nil}, {}, 'undef value')).to eql({'foo' => :undef})
|
51
51
|
end
|
52
52
|
|
@@ -56,12 +56,12 @@ describe 'when converting to 3.x' do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'does not convert a Version instance to string' do
|
59
|
-
v =
|
59
|
+
v = SemanticPuppet::Version.parse('1.0.0')
|
60
60
|
expect(converter.convert(v, {}, nil)).to equal(v)
|
61
61
|
end
|
62
62
|
|
63
63
|
it 'does not convert a VersionRange instance to string' do
|
64
|
-
v =
|
64
|
+
v = SemanticPuppet::VersionRange.parse('>=1.0.0')
|
65
65
|
expect(converter.convert(v, {}, nil)).to equal(v)
|
66
66
|
end
|
67
67
|
|
@@ -95,13 +95,13 @@ describe 'when converting to 3.x' do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'converts a Version instance to string' do
|
98
|
-
c = converter.convert(
|
98
|
+
c = converter.convert(SemanticPuppet::Version.parse('1.0.0'), {}, nil)
|
99
99
|
expect(c).to be_a(String)
|
100
100
|
expect(c).to eql('1.0.0')
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'converts a VersionRange instance to string' do
|
104
|
-
c = converter.convert(
|
104
|
+
c = converter.convert(SemanticPuppet::VersionRange.parse('>=1.0.0'), {}, nil)
|
105
105
|
expect(c).to be_a(String)
|
106
106
|
expect(c).to eql('>=1.0.0')
|
107
107
|
end
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet_spec/files'
|
3
|
+
require 'puppet/pops'
|
4
|
+
require 'puppet/loaders'
|
5
|
+
|
6
|
+
describe 'Environment loader' do
|
7
|
+
include PuppetSpec::Files
|
8
|
+
|
9
|
+
let(:env_name) { 'spec' }
|
10
|
+
let(:code_dir) { Puppet[:environmentpath] }
|
11
|
+
let(:env_dir) { File.join(code_dir, env_name) }
|
12
|
+
let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_code_dir, env_name, 'modules')]) }
|
13
|
+
let(:populated_code_dir) do
|
14
|
+
dir_contained_in(code_dir, env_name => env_content)
|
15
|
+
PuppetSpec::Files.record_tmp(env_dir)
|
16
|
+
code_dir
|
17
|
+
end
|
18
|
+
|
19
|
+
let(:env_content) {
|
20
|
+
{
|
21
|
+
'lib' => {
|
22
|
+
'puppet' => {
|
23
|
+
'functions' => {
|
24
|
+
'ruby_foo.rb' => <<-RUBY.unindent,
|
25
|
+
Puppet::Functions.create_function(:ruby_foo) do
|
26
|
+
def ruby_foo()
|
27
|
+
'ruby_foo'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
RUBY
|
31
|
+
'environment' => {
|
32
|
+
'ruby_foo.rb' => <<-RUBY.unindent
|
33
|
+
Puppet::Functions.create_function(:'environment::ruby_foo') do
|
34
|
+
def ruby_foo()
|
35
|
+
'environment::ruby_foo'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
RUBY
|
39
|
+
},
|
40
|
+
'someother' => {
|
41
|
+
'ruby_foo.rb' => <<-RUBY.unindent
|
42
|
+
Puppet::Functions.create_function(:'someother::ruby_foo') do
|
43
|
+
def ruby_foo()
|
44
|
+
'someother::ruby_foo'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
RUBY
|
48
|
+
},
|
49
|
+
}
|
50
|
+
}
|
51
|
+
},
|
52
|
+
'functions' => {
|
53
|
+
'puppet_foo.pp' => <<-PUPPET.unindent,
|
54
|
+
function puppet_foo() {
|
55
|
+
'puppet_foo'
|
56
|
+
}
|
57
|
+
PUPPET
|
58
|
+
'environment' => {
|
59
|
+
'puppet_foo.pp' => <<-PUPPET.unindent,
|
60
|
+
function environment::puppet_foo() {
|
61
|
+
'environment::puppet_foo'
|
62
|
+
}
|
63
|
+
PUPPET
|
64
|
+
},
|
65
|
+
'someother' => {
|
66
|
+
'puppet_foo.pp' => <<-PUPPET.unindent,
|
67
|
+
function somether::puppet_foo() {
|
68
|
+
'someother::puppet_foo'
|
69
|
+
}
|
70
|
+
PUPPET
|
71
|
+
}
|
72
|
+
},
|
73
|
+
'types' => {
|
74
|
+
'footype.pp' => <<-PUPPET.unindent,
|
75
|
+
type FooType = Enum['foo', 'bar', 'baz']
|
76
|
+
PUPPET
|
77
|
+
'environment' => {
|
78
|
+
'footype.pp' => <<-PUPPET.unindent,
|
79
|
+
type Environment::FooType = Integer[0,9]
|
80
|
+
PUPPET
|
81
|
+
},
|
82
|
+
'someother' => {
|
83
|
+
'footype.pp' => <<-PUPPET.unindent,
|
84
|
+
type SomeOther::FooType = Float[0.0,9.0]
|
85
|
+
PUPPET
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
before(:each) do
|
92
|
+
Puppet.push_context(:loaders => Puppet::Pops::Loaders.new(env))
|
93
|
+
end
|
94
|
+
|
95
|
+
after(:each) do
|
96
|
+
Puppet.pop_context
|
97
|
+
end
|
98
|
+
|
99
|
+
def load_or_nil(type, name)
|
100
|
+
found = Puppet::Pops::Loaders.find_loader(nil).load_typed(Puppet::Pops::Loader::TypedName.new(type, name))
|
101
|
+
found.nil? ? nil : found.value
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'loading a Ruby function' do
|
105
|
+
it 'loads from global name space' do
|
106
|
+
function = load_or_nil(:function, 'ruby_foo')
|
107
|
+
expect(function).not_to be_nil
|
108
|
+
|
109
|
+
expect(function.class.name).to eq('ruby_foo')
|
110
|
+
expect(function).to be_a(Puppet::Functions::Function)
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'loads from environment name space' do
|
114
|
+
function = load_or_nil(:function, 'environment::ruby_foo')
|
115
|
+
expect(function).not_to be_nil
|
116
|
+
|
117
|
+
expect(function.class.name).to eq('environment::ruby_foo')
|
118
|
+
expect(function).to be_a(Puppet::Functions::Function)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'fails to load from namespaces other than global or environment' do
|
122
|
+
function = load_or_nil(:function, 'someother::ruby_foo')
|
123
|
+
expect(function).to be_nil
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context 'loading a Puppet function' do
|
128
|
+
it 'loads from global name space' do
|
129
|
+
function = load_or_nil(:function, 'puppet_foo')
|
130
|
+
expect(function).not_to be_nil
|
131
|
+
|
132
|
+
expect(function.class.name).to eq('puppet_foo')
|
133
|
+
expect(function).to be_a(Puppet::Functions::PuppetFunction)
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'loads from environment name space' do
|
137
|
+
function = load_or_nil(:function, 'environment::puppet_foo')
|
138
|
+
expect(function).not_to be_nil
|
139
|
+
|
140
|
+
expect(function.class.name).to eq('environment::puppet_foo')
|
141
|
+
expect(function).to be_a(Puppet::Functions::PuppetFunction)
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'fails to load from namespaces other than global or environment' do
|
145
|
+
function = load_or_nil(:function, 'someother::puppet_foo')
|
146
|
+
expect(function).to be_nil
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'loading a Puppet type' do
|
151
|
+
it 'loads from global name space' do
|
152
|
+
type = load_or_nil(:type, 'footype')
|
153
|
+
expect(type).not_to be_nil
|
154
|
+
|
155
|
+
expect(type).to be_a(Puppet::Pops::Types::PTypeAliasType)
|
156
|
+
expect(type.name).to eq('FooType')
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'loads from environment name space' do
|
160
|
+
type = load_or_nil(:type, 'environment::footype')
|
161
|
+
expect(type).not_to be_nil
|
162
|
+
|
163
|
+
expect(type).to be_a(Puppet::Pops::Types::PTypeAliasType)
|
164
|
+
expect(type.name).to eq('Environment::FooType')
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'fails to load from namespaces other than global or environment' do
|
168
|
+
type = load_or_nil(:type, 'someother::footype')
|
169
|
+
expect(type).to be_nil
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|