puppet 3.6.2-x86-mingw32 → 3.7.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +2 -3
- data/Gemfile +14 -10
- data/README.md +1 -1
- data/ext/build_defaults.yaml +16 -1
- data/ext/debian/control +3 -2
- data/ext/debian/puppet-common.dirs +1 -0
- data/ext/debian/puppet-common.postinst +8 -8
- data/ext/debian/puppet-common.postrm +2 -1
- data/ext/project_data.yaml +16 -12
- data/ext/rack/example-passenger-vhost.conf +2 -2
- data/ext/redhat/puppet.spec.erb +6 -3
- data/ext/windows/service/daemon.rb +47 -41
- data/install.rb +1 -1
- data/lib/puppet.rb +34 -24
- data/lib/puppet/application.rb +34 -1
- data/lib/puppet/application/agent.rb +9 -8
- data/lib/puppet/application/apply.rb +14 -5
- data/lib/puppet/application/doc.rb +4 -11
- data/lib/puppet/application/master.rb +19 -17
- data/lib/puppet/application/queue.rb +1 -1
- data/lib/puppet/application/resource.rb +0 -1
- data/lib/puppet/configurer.rb +39 -2
- data/lib/puppet/configurer/downloader.rb +5 -10
- data/lib/puppet/configurer/downloader_factory.rb +34 -0
- data/lib/puppet/configurer/plugin_handler.rb +11 -17
- data/lib/puppet/defaults.rb +244 -119
- data/lib/puppet/environments.rb +8 -0
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/external/pson/pure/generator.rb +1 -8
- data/lib/puppet/face/ca.rb +7 -0
- data/lib/puppet/face/file/download.rb +5 -2
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/instrumentation_data.rb +2 -1
- data/lib/puppet/face/instrumentation_listener.rb +2 -1
- data/lib/puppet/face/instrumentation_probe.rb +2 -1
- data/lib/puppet/face/module/build.rb +2 -2
- data/lib/puppet/face/module/generate.rb +20 -12
- data/lib/puppet/face/module/install.rb +4 -3
- data/lib/puppet/face/module/uninstall.rb +7 -0
- data/lib/puppet/face/module/upgrade.rb +11 -3
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +99 -7
- data/lib/puppet/feature/base.rb +18 -12
- data/lib/puppet/feature/cfacter.rb +14 -0
- data/lib/puppet/feature/pe_license.rb +4 -0
- data/lib/puppet/file_bucket/dipper.rb +19 -12
- data/lib/puppet/file_bucket/file.rb +73 -10
- data/lib/puppet/file_serving/configuration/parser.rb +3 -3
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/file_system/file19.rb +41 -0
- data/lib/puppet/file_system/file19windows.rb +0 -1
- data/lib/puppet/file_system/uniquefile.rb +190 -0
- data/lib/puppet/forge.rb +34 -7
- data/lib/puppet/forge/errors.rb +5 -6
- data/lib/puppet/forge/repository.rb +14 -2
- data/lib/puppet/functions.rb +19 -12
- data/lib/puppet/functions/assert_type.rb +27 -10
- data/lib/puppet/functions/each.rb +111 -0
- data/lib/puppet/functions/epp.rb +54 -0
- data/lib/puppet/functions/filter.rb +113 -0
- data/lib/puppet/functions/inline_epp.rb +88 -0
- data/lib/puppet/functions/map.rb +97 -0
- data/lib/puppet/functions/match.rb +102 -0
- data/lib/puppet/functions/reduce.rb +94 -0
- data/lib/puppet/functions/slice.rb +126 -0
- data/lib/puppet/functions/with.rb +23 -0
- data/lib/puppet/indirector/catalog/compiler.rb +4 -4
- data/lib/puppet/indirector/data_binding/hiera.rb +2 -45
- data/lib/puppet/indirector/facts/couch.rb +3 -1
- data/lib/puppet/indirector/facts/facter.rb +52 -65
- data/lib/puppet/indirector/file_bucket_file/file.rb +6 -3
- data/lib/puppet/indirector/hiera.rb +48 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/request.rb +9 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/rest.rb +7 -3
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/module.rb +2 -1
- data/lib/puppet/module_tool.rb +2 -0
- data/lib/puppet/module_tool/applications/application.rb +4 -5
- data/lib/puppet/module_tool/applications/builder.rb +64 -5
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -2
- data/lib/puppet/module_tool/applications/unpacker.rb +14 -0
- data/lib/puppet/module_tool/applications/upgrader.rb +23 -13
- data/lib/puppet/module_tool/dependency.rb +12 -0
- data/lib/puppet/module_tool/errors/shared.rb +1 -1
- data/lib/puppet/module_tool/errors/upgrader.rb +20 -0
- data/lib/puppet/module_tool/installed_modules.rb +6 -1
- data/lib/puppet/module_tool/metadata.rb +53 -3
- data/lib/puppet/module_tool/modulefile.rb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +7 -0
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +1 -17
- data/lib/puppet/module_tool/tar/mini.rb +20 -2
- data/lib/puppet/network/http.rb +5 -0
- data/lib/puppet/network/http/api/v1.rb +2 -2
- data/lib/puppet/network/http/api/v2/environments.rb +15 -1
- data/lib/puppet/network/http/connection.rb +54 -68
- data/lib/puppet/network/http/factory.rb +44 -0
- data/lib/puppet/network/http/handler.rb +12 -6
- data/lib/puppet/network/http/nocache_pool.rb +21 -0
- data/lib/puppet/network/http/pool.rb +120 -0
- data/lib/puppet/network/http/rack/rest.rb +3 -1
- data/lib/puppet/network/http/session.rb +17 -0
- data/lib/puppet/network/http/site.rb +39 -0
- data/lib/puppet/network/http/webrick/rest.rb +3 -1
- data/lib/puppet/network/http_pool.rb +3 -4
- data/lib/puppet/node.rb +19 -6
- data/lib/puppet/node/environment.rb +34 -8
- data/lib/puppet/parser/ast/collection.rb +4 -0
- data/lib/puppet/parser/ast/collexpr.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +5 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +49 -6
- data/lib/puppet/parser/compiler.rb +66 -38
- data/lib/puppet/parser/e4_parser_adapter.rb +2 -2
- data/lib/puppet/parser/files.rb +76 -33
- data/lib/puppet/parser/functions.rb +1 -7
- data/lib/puppet/parser/functions/assert_type.rb +31 -0
- data/lib/puppet/parser/functions/contain.rb +15 -5
- data/lib/puppet/parser/functions/create_resources.rb +5 -1
- data/lib/puppet/parser/functions/digest.rb +5 -0
- data/lib/puppet/parser/functions/each.rb +46 -107
- data/lib/puppet/parser/functions/epp.rb +13 -9
- data/lib/puppet/parser/functions/file.rb +20 -12
- data/lib/puppet/parser/functions/filter.rb +32 -88
- data/lib/puppet/parser/functions/include.rb +12 -24
- data/lib/puppet/parser/functions/inline_epp.rb +9 -12
- data/lib/puppet/parser/functions/lookup.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +30 -83
- data/lib/puppet/parser/functions/match.rb +28 -0
- data/lib/puppet/parser/functions/reduce.rb +69 -98
- data/lib/puppet/parser/functions/require.rb +13 -5
- data/lib/puppet/parser/functions/search.rb +6 -1
- data/lib/puppet/parser/functions/slice.rb +35 -103
- data/lib/puppet/parser/functions/template.rb +12 -5
- data/lib/puppet/parser/functions/with.rb +21 -0
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +21 -33
- data/lib/puppet/parser/resource.rb +2 -3
- data/lib/puppet/parser/scope.rb +85 -15
- data/lib/puppet/pops.rb +9 -11
- data/lib/puppet/pops/adapters.rb +2 -1
- data/lib/puppet/pops/binder/bindings_checker.rb +4 -4
- data/lib/puppet/pops/binder/bindings_factory.rb +6 -6
- data/lib/puppet/pops/binder/bindings_label_provider.rb +1 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +2 -2
- data/lib/puppet/pops/binder/bindings_model.rb +58 -191
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +1 -1
- data/lib/puppet/pops/binder/bindings_model_meta.rb +215 -0
- data/lib/puppet/pops/binder/injector.rb +9 -9
- data/lib/puppet/pops/binder/key_factory.rb +2 -2
- data/lib/puppet/pops/binder/lookup.rb +14 -6
- data/lib/puppet/pops/binder/producers.rb +9 -12
- data/lib/puppet/pops/evaluator/access_operator.rb +35 -29
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +175 -0
- data/lib/puppet/pops/evaluator/callable_signature.rb +1 -2
- data/lib/puppet/pops/evaluator/closure.rb +151 -35
- data/lib/puppet/pops/evaluator/compare_operator.rb +26 -22
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +16 -15
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +277 -229
- data/lib/puppet/pops/evaluator/relationship_operator.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +86 -53
- data/lib/puppet/pops/functions/dispatch.rb +9 -4
- data/lib/puppet/pops/functions/dispatcher.rb +2 -169
- data/lib/puppet/pops/issue_reporter.rb +14 -6
- data/lib/puppet/pops/issues.rb +96 -21
- data/lib/puppet/pops/loader/base_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +2 -21
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +12 -2
- data/lib/puppet/pops/model/ast_transformer.rb +4 -24
- data/lib/puppet/pops/model/factory.rb +72 -10
- data/lib/puppet/pops/model/model.rb +82 -574
- data/lib/puppet/pops/model/model_label_provider.rb +4 -2
- data/lib/puppet/pops/model/model_meta.rb +576 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +27 -5
- data/lib/puppet/pops/parser/egrammar.ra +209 -221
- data/lib/puppet/pops/parser/eparser.rb +1459 -1431
- data/lib/puppet/pops/parser/evaluating_parser.rb +15 -75
- data/lib/puppet/pops/parser/lexer2.rb +14 -10
- data/lib/puppet/pops/parser/lexer_support.rb +6 -0
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +31 -49
- data/lib/puppet/pops/patterns.rb +10 -10
- data/lib/puppet/pops/semantic_error.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +24 -13
- data/lib/puppet/pops/types/type_calculator.rb +188 -87
- data/lib/puppet/pops/types/type_factory.rb +79 -53
- data/lib/puppet/pops/types/type_parser.rb +22 -16
- data/lib/puppet/pops/types/types.rb +283 -392
- data/lib/puppet/pops/types/types_meta.rb +223 -0
- data/lib/puppet/pops/utils.rb +16 -14
- data/lib/puppet/pops/validation/checker4_0.rb +264 -18
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +0 -103
- data/lib/puppet/provider/exec.rb +10 -1
- data/lib/puppet/provider/file/windows.rb +3 -4
- data/lib/puppet/provider/group/windows_adsi.rb +10 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -4
- data/lib/puppet/provider/package/apt.rb +5 -1
- data/lib/puppet/provider/package/gem.rb +7 -3
- data/lib/puppet/provider/package/openbsd.rb +84 -7
- data/lib/puppet/provider/package/pacman.rb +29 -4
- data/lib/puppet/provider/package/rpm.rb +5 -7
- data/lib/puppet/provider/package/sun.rb +5 -1
- data/lib/puppet/provider/package/windows.rb +6 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +13 -1
- data/lib/puppet/provider/package/yum.rb +7 -3
- data/lib/puppet/provider/package/zypper.rb +5 -1
- data/lib/puppet/provider/parsedfile.rb +17 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +6 -12
- data/lib/puppet/provider/service/freebsd.rb +12 -12
- data/lib/puppet/provider/service/init.rb +5 -0
- data/lib/puppet/provider/service/launchd.rb +0 -3
- data/lib/puppet/provider/service/openbsd.rb +8 -7
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +5 -0
- data/lib/puppet/provider/user/user_role_add.rb +5 -4
- data/lib/puppet/provider/user/windows_adsi.rb +8 -8
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +8 -6
- data/lib/puppet/reports/store.rb +4 -9
- data/lib/puppet/resource.rb +75 -11
- data/lib/puppet/resource/catalog.rb +9 -7
- data/lib/puppet/resource/type.rb +27 -0
- data/lib/puppet/settings.rb +61 -41
- data/lib/puppet/settings/base_setting.rb +9 -3
- data/lib/puppet/settings/environment_conf.rb +32 -4
- data/lib/puppet/settings/file_setting.rb +9 -1
- data/lib/puppet/settings/priority_setting.rb +5 -5
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate_authority.rb +15 -6
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +2 -1
- data/lib/puppet/ssl/host.rb +3 -2
- data/lib/puppet/ssl/inventory.rb +11 -6
- data/lib/puppet/ssl/validator/default_validator.rb +1 -0
- data/lib/puppet/ssl/validator/no_validator.rb +3 -0
- data/lib/puppet/transaction.rb +29 -0
- data/lib/puppet/transaction/resource_harness.rb +16 -3
- data/lib/puppet/type.rb +71 -49
- data/lib/puppet/type/exec.rb +36 -8
- data/lib/puppet/type/file.rb +56 -16
- data/lib/puppet/type/file/content.rb +3 -3
- data/lib/puppet/type/file/mode.rb +12 -3
- data/lib/puppet/type/file/source.rb +4 -1
- data/lib/puppet/type/group.rb +1 -1
- data/lib/puppet/type/mount.rb +1 -3
- data/lib/puppet/type/resources.rb +59 -35
- data/lib/puppet/type/ssh_authorized_key.rb +54 -16
- data/lib/puppet/type/sshkey.rb +1 -1
- data/lib/puppet/type/user.rb +17 -11
- data/lib/puppet/type/yumrepo.rb +59 -8
- data/lib/puppet/type/zone.rb +3 -6
- data/lib/puppet/util.rb +64 -55
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/colors.rb +61 -19
- data/lib/puppet/util/command_line.rb +21 -4
- data/lib/puppet/util/execution.rb +41 -29
- data/lib/puppet/util/feature.rb +15 -4
- data/lib/puppet/util/filetype.rb +6 -2
- data/lib/puppet/util/http_proxy.rb +29 -2
- data/lib/puppet/util/lockfile.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +7 -3
- data/lib/puppet/util/logging.rb +44 -14
- data/lib/puppet/util/pidlock.rb +11 -5
- data/lib/puppet/util/posix.rb +21 -31
- data/lib/puppet/util/profiler.rb +17 -9
- data/lib/puppet/util/profiler/aggregate.rb +85 -0
- data/lib/puppet/util/profiler/around_profiler.rb +67 -0
- data/lib/puppet/util/profiler/logging.rb +12 -11
- data/lib/puppet/util/profiler/wall_clock.rb +7 -6
- data/lib/puppet/util/rdoc.rb +8 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +1 -8
- data/lib/puppet/util/windows.rb +14 -3
- data/lib/puppet/util/windows/access_control_list.rb +4 -4
- data/lib/puppet/util/{adsi.rb → windows/adsi.rb} +99 -37
- data/lib/puppet/util/windows/api_types.rb +255 -0
- data/lib/puppet/util/windows/com.rb +224 -0
- data/lib/puppet/util/windows/error.rb +72 -5
- data/lib/puppet/util/windows/file.rb +254 -132
- data/lib/puppet/util/windows/process.rb +293 -177
- data/lib/puppet/util/windows/registry.rb +12 -2
- data/lib/puppet/util/windows/root_certs.rb +16 -9
- data/lib/puppet/util/windows/security.rb +501 -232
- data/lib/puppet/util/windows/sid.rb +80 -36
- data/lib/puppet/util/windows/string.rb +2 -0
- data/lib/puppet/util/windows/taskscheduler.rb +1241 -0
- data/lib/puppet/util/windows/user.rb +241 -57
- data/lib/puppet/vendor.rb +3 -1
- data/lib/puppet/vendor/load_pathspec.rb +1 -0
- data/lib/puppet/vendor/load_rgen.rb +1 -0
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +2 -0
- data/lib/puppet/vendor/pathspec/LICENSE +201 -0
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/pathspec/README.md +53 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +121 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +275 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +17 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +14 -0
- data/lib/puppet/vendor/require_vendored.rb +2 -0
- data/lib/puppet/vendor/rgen/CHANGELOG +197 -0
- data/lib/puppet/vendor/rgen/MIT-LICENSE +20 -0
- data/lib/puppet/vendor/rgen/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/rgen/README.rdoc +78 -0
- data/lib/puppet/vendor/rgen/Rakefile +41 -0
- data/lib/puppet/vendor/rgen/TODO +41 -0
- data/lib/puppet/vendor/rgen/anounce.txt +61 -0
- data/lib/puppet/vendor/rgen/design_rationale.txt +71 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +54 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +562 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +43 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +103 -0
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +559 -0
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +20 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +28 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +37 -0
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +172 -0
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +45 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +218 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +81 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +69 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +167 -0
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +91 -0
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +129 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +63 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +140 -0
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +289 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +66 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +117 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +169 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +126 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +331 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +94 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +137 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +97 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +128 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +224 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +556 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +174 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +89 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +77 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +30 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +168 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +23 -0
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +32 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +334 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +225 -0
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +156 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +121 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +18 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +47 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +116 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +71 -0
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +98 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +297 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +83 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +87 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +234 -0
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +26 -0
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +475 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +61 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +67 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +124 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +84 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +114 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +68 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +142 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +29 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +42 -0
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +329 -0
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +79 -0
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +127 -0
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +64 -0
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +35 -0
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +23 -0
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +54 -0
- data/lib/puppet/vendor/rgen/test/environment_test.rb +90 -0
- data/lib/puppet/vendor/rgen/test/json_test.rb +171 -0
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +1482 -0
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +57 -0
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +131 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +98 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +70 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +42 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +44 -0
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +9 -0
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +178 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +59 -0
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +242 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +163 -0
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +156 -0
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +94 -0
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +42 -0
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +23 -0
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +6 -0
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +30 -0
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +58 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +48 -0
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +102 -0
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +117 -0
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +26 -0
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +163 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +29 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +11 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +8 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +7 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +12 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +1 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +5 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +24 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +13 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +10 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +17 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +31 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +9 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +3 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +4 -0
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +29 -0
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +119 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +1029 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +317 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +101 -0
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +22 -0
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +67 -0
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +254 -0
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +99 -0
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +97 -0
- data/lib/puppet/vendor/rgen/test/util_test.rb +5 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +160 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +94 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +53 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +49 -0
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +75 -0
- data/lib/puppet/vendor/safe_yaml/PUPPET_README.md +6 -0
- data/lib/puppet/vendor/semantic/PUPPET_README.md +6 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +2 -0
- data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +6 -0
- data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +1 -0
- data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +2 -0
- data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +1 -1
- data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
- data/spec/fixtures/unit/indirector/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +3 -0
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +3 -0
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +14 -14
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +5 -5
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +1 -1
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +4 -4
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +3 -3
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +2 -2
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +1 -1
- data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +4 -0
- data/spec/fixtures/unit/type/user/authorized_keys +1 -1
- data/spec/integration/agent/logging_spec.rb +4 -0
- data/spec/integration/application/doc_spec.rb +4 -3
- data/spec/integration/configurer_spec.rb +0 -14
- data/spec/integration/defaults_spec.rb +26 -0
- data/spec/integration/environments/default_manifest_spec.rb +274 -0
- data/spec/integration/faces/documentation_spec.rb +0 -4
- data/spec/integration/file_bucket/file_spec.rb +21 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/integration/indirector/catalog/queue_spec.rb +0 -2
- data/spec/integration/indirector/facts/facter_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/environment_spec.rb +24 -8
- data/spec/integration/parser/catalog_spec.rb +10 -10
- data/spec/integration/parser/class_spec.rb +37 -0
- data/spec/integration/parser/collector_spec.rb +234 -75
- data/spec/integration/parser/compiler_spec.rb +385 -401
- data/spec/integration/parser/conditionals_spec.rb +117 -0
- data/spec/integration/parser/future_compiler_spec.rb +359 -8
- data/spec/integration/parser/node_spec.rb +185 -0
- data/spec/integration/parser/resource_expressions_spec.rb +286 -0
- data/spec/integration/parser/ruby_manifest_spec.rb +0 -4
- data/spec/integration/parser/scope_spec.rb +94 -151
- data/spec/integration/provider/cron/crontab_spec.rb +137 -148
- data/spec/integration/ssl/certificate_authority_spec.rb +26 -0
- data/spec/integration/ssl/certificate_request_spec.rb +0 -6
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -2
- data/spec/integration/ssl/host_spec.rb +0 -2
- data/spec/integration/transaction_spec.rb +16 -0
- data/spec/integration/type/file_spec.rb +14 -13
- data/spec/integration/type/nagios_spec.rb +6 -15
- data/spec/integration/type/sshkey_spec.rb +22 -0
- data/spec/integration/type/tidy_spec.rb +3 -0
- data/spec/integration/type/user_spec.rb +8 -3
- data/spec/integration/util/autoload_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +7 -0
- data/spec/integration/util/windows/process_spec.rb +12 -0
- data/spec/integration/util/windows/security_spec.rb +36 -35
- data/spec/integration/util/windows/user_spec.rb +75 -9
- data/spec/integration/util_spec.rb +2 -2
- data/spec/lib/matchers/resource.rb +1 -0
- data/spec/lib/puppet_spec/compiler.rb +15 -2
- data/spec/lib/puppet_spec/files.rb +10 -0
- data/spec/lib/puppet_spec/language.rb +74 -0
- data/spec/lib/puppet_spec/matchers.rb +59 -32
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +3 -0
- data/spec/shared_behaviours/hiera_indirections.rb +99 -0
- data/spec/shared_behaviours/iterative_functions.rb +69 -0
- data/spec/unit/application/apply_spec.rb +4 -2
- data/spec/unit/application/doc_spec.rb +17 -13
- data/spec/unit/application/master_spec.rb +35 -27
- data/spec/unit/application/resource_spec.rb +0 -5
- data/spec/unit/configurer/downloader_factory_spec.rb +96 -0
- data/spec/unit/configurer/downloader_spec.rb +3 -24
- data/spec/unit/configurer/plugin_handler_spec.rb +22 -22
- data/spec/unit/configurer_spec.rb +0 -4
- data/spec/unit/defaults_spec.rb +30 -0
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/module/build_spec.rb +2 -2
- data/spec/unit/face/module/install_spec.rb +8 -8
- data/spec/unit/face/parser_spec.rb +71 -33
- data/spec/unit/file_bucket/file_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +184 -0
- data/spec/unit/forge/errors_spec.rb +4 -6
- data/spec/unit/forge/module_release_spec.rb +178 -89
- data/spec/unit/forge/repository_spec.rb +110 -2
- data/spec/unit/forge_spec.rb +39 -3
- data/spec/unit/functions/assert_type_spec.rb +22 -3
- data/spec/unit/{parser/methods → functions}/each_spec.rb +21 -1
- data/spec/unit/{parser/functions → functions}/epp_spec.rb +61 -9
- data/spec/unit/{parser/methods → functions}/filter_spec.rb +34 -38
- data/spec/unit/{parser/functions → functions}/inline_epp_spec.rb +18 -3
- data/spec/unit/functions/map_spec.rb +169 -0
- data/spec/unit/functions/match_spec.rb +57 -0
- data/spec/unit/{parser/methods → functions}/reduce_spec.rb +23 -5
- data/spec/unit/{parser/methods → functions}/slice_spec.rb +34 -21
- data/spec/unit/functions/with_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +7 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -2
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +11 -0
- data/spec/unit/indirector/data_binding/hiera_spec.rb +1 -96
- data/spec/unit/indirector/facts/facter_spec.rb +69 -102
- data/spec/unit/indirector/hiera_spec.rb +17 -0
- data/spec/unit/indirector/request_spec.rb +2 -4
- data/spec/unit/indirector/resource/ral_spec.rb +5 -0
- data/spec/unit/indirector/resource_type/parser_spec.rb +17 -12
- data/spec/unit/indirector/rest_spec.rb +36 -6
- data/spec/unit/interface/face_collection_spec.rb +2 -2
- data/spec/unit/module_tool/applications/builder_spec.rb +364 -14
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +22 -0
- data/spec/unit/module_tool/applications/unpacker_spec.rb +40 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +22 -0
- data/spec/unit/module_tool/installed_modules_spec.rb +49 -0
- data/spec/unit/module_tool/metadata_spec.rb +72 -4
- data/spec/unit/module_tool/tar/mini_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +4 -0
- data/spec/unit/network/http/api/v2/environments_spec.rb +24 -3
- data/spec/unit/network/http/connection_spec.rb +127 -92
- data/spec/unit/network/http/factory_spec.rb +82 -0
- data/spec/unit/network/http/handler_spec.rb +23 -13
- data/spec/unit/network/http/nocache_pool_spec.rb +43 -0
- data/spec/unit/network/http/pool_spec.rb +269 -0
- data/spec/unit/network/http/rack/rest_spec.rb +1 -1
- data/spec/unit/network/http/session_spec.rb +43 -0
- data/spec/unit/network/http/site_spec.rb +90 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/network/http_pool_spec.rb +9 -6
- data/spec/unit/network/http_spec.rb +10 -0
- data/spec/unit/node/environment_spec.rb +54 -0
- data/spec/unit/node_spec.rb +3 -5
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/files_spec.rb +19 -0
- data/spec/unit/parser/functions/contain_spec.rb +51 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +8 -1
- data/spec/unit/parser/functions/digest_spec.rb +31 -0
- data/spec/unit/parser/functions/file_spec.rb +48 -5
- data/spec/unit/parser/functions/include_spec.rb +15 -1
- data/spec/unit/parser/functions/realize_spec.rb +43 -35
- data/spec/unit/parser/functions/require_spec.rb +19 -5
- data/spec/unit/parser/functions/search_spec.rb +5 -0
- data/spec/unit/parser/functions/shared.rb +82 -0
- data/spec/unit/parser/functions_spec.rb +1 -1
- data/spec/unit/parser/lexer_spec.rb +10 -1
- data/spec/unit/parser/type_loader_spec.rb +0 -1
- data/spec/unit/pops/benchmark_spec.rb +1 -1
- data/spec/unit/pops/binder/bindings_composer_spec.rb +24 -22
- data/spec/unit/pops/binder/injector_spec.rb +8 -6
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +7 -4
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +250 -30
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/variables_spec.rb +0 -105
- data/spec/unit/pops/issues_spec.rb +170 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +17 -0
- data/spec/unit/pops/loaders/loader_paths_spec.rb +4 -15
- data/spec/unit/pops/loaders/loaders_spec.rb +31 -11
- data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -29
- data/spec/unit/pops/loaders/static_loader_spec.rb +6 -0
- data/spec/unit/pops/parser/epp_parser_spec.rb +38 -9
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +21 -4
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +5 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +6 -3
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -5
- data/spec/unit/pops/parser/parse_containers_spec.rb +62 -7
- data/spec/unit/pops/parser/parse_resource_spec.rb +155 -73
- data/spec/unit/pops/parser/parser_spec.rb +16 -0
- data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +72 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +254 -57
- data/spec/unit/pops/types/type_factory_spec.rb +8 -3
- data/spec/unit/pops/types/type_parser_spec.rb +26 -5
- data/spec/unit/pops/validator/validator_spec.rb +143 -27
- data/spec/unit/provider/exec/posix_spec.rb +22 -14
- data/spec/unit/provider/exec/shell_spec.rb +2 -2
- data/spec/unit/provider/file/windows_spec.rb +7 -7
- data/spec/unit/provider/group/windows_adsi_spec.rb +17 -17
- data/spec/unit/provider/package/gem_spec.rb +10 -0
- data/spec/unit/provider/package/openbsd_spec.rb +66 -9
- data/spec/unit/provider/package/pacman_spec.rb +90 -71
- data/spec/unit/provider/package/windows/package_spec.rb +21 -6
- data/spec/unit/provider/package/yum_spec.rb +1 -0
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +9 -9
- data/spec/unit/provider/service/openbsd_spec.rb +26 -2
- data/spec/unit/provider/service/upstart_spec.rb +12 -1
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +6 -0
- data/spec/unit/provider/user/user_role_add_spec.rb +23 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +17 -17
- data/spec/unit/reports/store_spec.rb +0 -16
- data/spec/unit/resource/catalog_spec.rb +0 -5
- data/spec/unit/resource_spec.rb +2 -2
- data/spec/unit/settings/autosign_setting_spec.rb +2 -2
- data/spec/unit/settings/environment_conf_spec.rb +77 -10
- data/spec/unit/settings/file_setting_spec.rb +5 -4
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +41 -3
- data/spec/unit/ssl/certificate_authority_spec.rb +25 -2
- data/spec/unit/ssl/inventory_spec.rb +13 -0
- data/spec/unit/ssl/validator_spec.rb +0 -1
- data/spec/unit/transaction/resource_harness_spec.rb +64 -0
- data/spec/unit/transaction_spec.rb +98 -47
- data/spec/unit/type/cron_spec.rb +3 -3
- data/spec/unit/type/exec_spec.rb +9 -0
- data/spec/unit/type/file/content_spec.rb +54 -71
- data/spec/unit/type/file/mode_spec.rb +26 -1
- data/spec/unit/type/file/source_spec.rb +26 -4
- data/spec/unit/type/file_spec.rb +3 -3
- data/spec/unit/type/nagios_spec.rb +12 -3
- data/spec/unit/type/resources_spec.rb +64 -30
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +136 -0
- data/spec/unit/type/zone_spec.rb +44 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/colors_spec.rb +14 -8
- data/spec/unit/util/command_line_spec.rb +11 -7
- data/spec/unit/util/execution_spec.rb +35 -42
- data/spec/unit/util/feature_spec.rb +12 -0
- data/spec/unit/util/http_proxy_spec.rb +43 -1
- data/spec/unit/util/log/destinations_spec.rb +45 -1
- data/spec/unit/util/logging_spec.rb +38 -0
- data/spec/unit/util/pidlock_spec.rb +37 -1
- data/spec/unit/util/profiler/aggregate_spec.rb +59 -0
- data/spec/unit/util/profiler/around_profiler_spec.rb +61 -0
- data/spec/unit/util/profiler/logging_spec.rb +18 -29
- data/spec/unit/util/profiler/wall_clock_spec.rb +1 -1
- data/spec/unit/util/profiler_spec.rb +55 -0
- data/spec/unit/util/queue_spec.rb +0 -1
- data/spec/unit/util/rdoc/parser_spec.rb +14 -6
- data/spec/unit/util/tagging_spec.rb +1 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +1 -1
- data/spec/unit/util/{adsi_spec.rb → windows/adsi_spec.rb} +111 -108
- data/spec/unit/util/windows/api_types_spec.rb +28 -0
- data/spec/unit/util/windows/registry_spec.rb +7 -6
- data/spec/unit/util/windows/sid_spec.rb +3 -6
- data/spec/unit/util/windows/string_spec.rb +4 -0
- data/spec/unit/util/zaml_spec.rb +5 -1
- data/tasks/benchmark.rake +40 -5
- data/tasks/parser.rake +16 -2
- data/tasks/yard.rake +1 -1
- metadata +308 -150
- data/lib/puppet/file_system/tempfile.rb +0 -20
- data/lib/puppet/parser/e_parser_adapter.rb +0 -119
- data/lib/puppet/parser/functions/collect.rb +0 -15
- data/lib/puppet/parser/functions/select.rb +0 -15
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +0 -109
- data/lib/puppet/pops/parser/lexer.rb +0 -753
- data/lib/puppet/pops/parser/makefile +0 -6
- data/lib/puppet/pops/validation/checker3_1.rb +0 -558
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +0 -31
- data/lib/puppet/util/profiler/none.rb +0 -8
- data/spec/unit/face/certificate_request_spec.rb +0 -7
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -7
- data/spec/unit/face/key_spec.rb +0 -7
- data/spec/unit/face/report_spec.rb +0 -7
- data/spec/unit/face/resource_spec.rb +0 -7
- data/spec/unit/face/resource_type_spec.rb +0 -7
- data/spec/unit/file_system/tempfile_spec.rb +0 -48
- data/spec/unit/parser/eparser_adapter_spec.rb +0 -407
- data/spec/unit/parser/methods/map_spec.rb +0 -184
- data/spec/unit/parser/methods/shared.rb +0 -45
- data/spec/unit/pops/parser/lexer_spec.rb +0 -840
- data/spec/unit/pops/transformer/transform_resource_spec.rb +0 -185
- data/spec/unit/util/profiler/none_spec.rb +0 -12
@@ -205,7 +205,7 @@ class Puppet::Pops::Binder::Injector
|
|
205
205
|
# @overload lookup(scope, type, name = '')
|
206
206
|
# (see #lookup_type)
|
207
207
|
# @param scope [Puppet::Parser::Scope] the scope to use for evaluation
|
208
|
-
# @param type [Puppet::Pops::Types::
|
208
|
+
# @param type [Puppet::Pops::Types::PAnyType] the type of what to lookup
|
209
209
|
# @param name [String] the name to use, defaults to empty string (for unnamed)
|
210
210
|
#
|
211
211
|
# @overload lookup(scope, name)
|
@@ -231,7 +231,7 @@ class Puppet::Pops::Binder::Injector
|
|
231
231
|
# Creates a key for the type/name combination using a KeyFactory. Specialization of the Data type are transformed
|
232
232
|
# to a Data key, and the result is type checked to conform with the given key.
|
233
233
|
#
|
234
|
-
# @param type [Puppet::Pops::Types::
|
234
|
+
# @param type [Puppet::Pops::Types::PAnyType] the type to lookup as defined by Puppet::Pops::Types::TypeFactory
|
235
235
|
# @param name [String] the (optional for non `Data` types) name of the entry to lookup.
|
236
236
|
# The name may be an empty String (the default), but not nil. The name is required for lookup for subtypes of
|
237
237
|
# `Data`.
|
@@ -275,7 +275,7 @@ class Puppet::Pops::Binder::Injector
|
|
275
275
|
# @overload lookup_producer(scope, type, name = '')
|
276
276
|
# (see #lookup_type)
|
277
277
|
# @param scope [Puppet::Parser::Scope] the scope to use for evaluation
|
278
|
-
# @param type [Puppet::Pops::Types::
|
278
|
+
# @param type [Puppet::Pops::Types::PAnyType], the type of what to lookup
|
279
279
|
# @param name [String], the name to use, defaults to empty string (for unnamed)
|
280
280
|
#
|
281
281
|
# @overload lookup_producer(scope, name)
|
@@ -363,9 +363,9 @@ module Private
|
|
363
363
|
if block
|
364
364
|
case block.arity
|
365
365
|
when 1
|
366
|
-
block.call(
|
366
|
+
block.call(nil)
|
367
367
|
when 2
|
368
|
-
block.call(scope,
|
368
|
+
block.call(scope, nil)
|
369
369
|
else
|
370
370
|
raise ArgumentError, "The block should have arity 1 or 2"
|
371
371
|
end
|
@@ -441,7 +441,7 @@ module Private
|
|
441
441
|
|
442
442
|
val = case args[ 0 ]
|
443
443
|
|
444
|
-
when Puppet::Pops::Types::
|
444
|
+
when Puppet::Pops::Types::PAnyType
|
445
445
|
lookup_type(scope, *args)
|
446
446
|
|
447
447
|
when String
|
@@ -562,7 +562,7 @@ module Private
|
|
562
562
|
#
|
563
563
|
def assistable_injected_class(key)
|
564
564
|
kt = key_factory.get_type(key)
|
565
|
-
return nil unless kt.is_a?(Puppet::Pops::Types::
|
565
|
+
return nil unless kt.is_a?(Puppet::Pops::Types::PRuntimeType) && kt.runtime == :ruby && !key_factory.is_named?(key)
|
566
566
|
type_calculator.injectable_class(kt)
|
567
567
|
end
|
568
568
|
|
@@ -570,7 +570,7 @@ module Private
|
|
570
570
|
raise ArgumentError, "lookup_producer should be called with two or three arguments, got: #{args.size()+1}" unless args.size <= 2
|
571
571
|
|
572
572
|
p = case args[ 0 ]
|
573
|
-
when Puppet::Pops::Types::
|
573
|
+
when Puppet::Pops::Types::PAnyType
|
574
574
|
lookup_producer_type(scope, *args)
|
575
575
|
|
576
576
|
when String
|
@@ -634,7 +634,7 @@ module Private
|
|
634
634
|
|
635
635
|
# @api private
|
636
636
|
def transform(producer_descriptor, scope, entry)
|
637
|
-
@@transform_visitor.
|
637
|
+
@@transform_visitor.visit_this_2(self, producer_descriptor, scope, entry)
|
638
638
|
end
|
639
639
|
|
640
640
|
# Returns the produced instance
|
@@ -48,13 +48,13 @@ class Puppet::Pops::Binder::KeyFactory
|
|
48
48
|
|
49
49
|
# @api public
|
50
50
|
def is_data?(key)
|
51
|
-
return false unless key.is_a?(Array) && key[0].is_a?(Puppet::Pops::Types::
|
51
|
+
return false unless key.is_a?(Array) && key[0].is_a?(Puppet::Pops::Types::PAnyType)
|
52
52
|
type_calculator.assignable?(type_calculator.data(), key[0])
|
53
53
|
end
|
54
54
|
|
55
55
|
# @api public
|
56
56
|
def is_ruby?(key)
|
57
|
-
|
57
|
+
key.is_a?(Array) && key[0].is_a?(Puppet::Pops::Types::PRuntimeType) && key[0].runtime == :ruby
|
58
58
|
end
|
59
59
|
|
60
60
|
# Returns the type of the key
|
@@ -78,7 +78,7 @@ class Puppet::Pops::Binder::Lookup
|
|
78
78
|
end
|
79
79
|
|
80
80
|
# unless a type is already given (future case), parse the type (or default 'Data'), fails if invalid type is given
|
81
|
-
unless options[:type].is_a?(Puppet::Pops::Types::
|
81
|
+
unless options[:type].is_a?(Puppet::Pops::Types::PAnyType)
|
82
82
|
options[:type] = type_parser.parse(options[:type] || 'Data')
|
83
83
|
end
|
84
84
|
|
@@ -159,17 +159,21 @@ class Puppet::Pops::Binder::Lookup
|
|
159
159
|
result_with_name[1]
|
160
160
|
end
|
161
161
|
|
162
|
+
# If a block is given it is called with :undef passed as 'nil' since the lookup function
|
163
|
+
# is available from 3x with --binder turned on, and the evaluation is always 4x.
|
164
|
+
# TODO PUPPET4: Simply pass the value
|
165
|
+
#
|
162
166
|
result = if pblock = options[:pblock]
|
163
167
|
result2 = case pblock.parameter_count
|
164
168
|
when 1
|
165
|
-
pblock.call(scope,
|
169
|
+
pblock.call(scope, undef_as_nil(result))
|
166
170
|
when 2
|
167
|
-
pblock.call(scope, result_with_name[ 0 ],
|
171
|
+
pblock.call(scope, result_with_name[ 0 ], undef_as_nil(result))
|
168
172
|
else
|
169
|
-
pblock.call(scope, result_with_name[ 0 ],
|
173
|
+
pblock.call(scope, result_with_name[ 0 ], undef_as_nil(result), undef_as_nil(options[ :default ]))
|
170
174
|
end
|
171
175
|
|
172
|
-
# if the given result was returned, there is
|
176
|
+
# if the given result was returned, there is no need to type-check it again
|
173
177
|
if !result2.equal?(result)
|
174
178
|
t = type_calculator.infer(undef_as_nil(result2))
|
175
179
|
if !type_calculator.assignable?(type, t)
|
@@ -185,7 +189,11 @@ class Puppet::Pops::Binder::Lookup
|
|
185
189
|
if is_nil_or_undef?(result) && !options[:accept_undef]
|
186
190
|
fail_lookup(names)
|
187
191
|
else
|
188
|
-
|
192
|
+
# Since the function may be used without future parser being in effect, nil is not handled in a good
|
193
|
+
# way, and should instead be turned into :undef.
|
194
|
+
# TODO PUPPET4: Simply return the result
|
195
|
+
#
|
196
|
+
Puppet[:parser] == 'future' ? result : nil_as_undef(result)
|
189
197
|
end
|
190
198
|
end
|
191
199
|
end
|
@@ -62,8 +62,7 @@ module Puppet::Pops::Binder::Producers
|
|
62
62
|
else
|
63
63
|
raise ArgumentError, "Transformer must be a LambdaExpression" unless transformer_lambda.is_a?(Puppet::Pops::Model::LambdaExpression)
|
64
64
|
raise ArgumentError, "Transformer lambda must take one argument; value." unless transformer_lambda.parameters.size() == 1
|
65
|
-
|
66
|
-
@transformer = Puppet::Pops::Model::AstTransformer.new().transform(transformer_lambda)
|
65
|
+
@transformer = Puppet::Pops::Parser::EvaluatingParser.new.closure(transformer_lambda, scope)
|
67
66
|
end
|
68
67
|
end
|
69
68
|
end
|
@@ -111,7 +110,6 @@ module Puppet::Pops::Binder::Producers
|
|
111
110
|
#
|
112
111
|
def do_transformation(scope, produced_value)
|
113
112
|
return produced_value unless transformer
|
114
|
-
produced_value = :undef if produced_value.nil?
|
115
113
|
transformer.call(scope, produced_value)
|
116
114
|
end
|
117
115
|
end
|
@@ -299,14 +297,13 @@ module Puppet::Pops::Binder::Producers
|
|
299
297
|
#
|
300
298
|
def initialize(injector, binding, scope, options)
|
301
299
|
super
|
302
|
-
|
303
|
-
raise ArgumentError, "Option 'expression' must be given to an EvaluatingProducer." unless
|
304
|
-
@expression = Puppet::Pops::Model::AstTransformer.new().transform(expr)
|
300
|
+
@expression = options[:expression]
|
301
|
+
raise ArgumentError, "Option 'expression' must be given to an EvaluatingProducer." unless @expression
|
305
302
|
end
|
306
303
|
|
307
304
|
# @api private
|
308
305
|
def internal_produce(scope)
|
309
|
-
|
306
|
+
Puppet::Pops::Parser::EvaluatingParser.new.evaluate(scope, expression)
|
310
307
|
end
|
311
308
|
end
|
312
309
|
|
@@ -323,7 +320,7 @@ module Puppet::Pops::Binder::Producers
|
|
323
320
|
# @param binder [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
|
324
321
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
325
322
|
# @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
326
|
-
# @option options [Puppet::Pops::Types::
|
323
|
+
# @option options [Puppet::Pops::Types::PAnyType] :type The type to lookup
|
327
324
|
# @option options [String] :name ('') The name to lookup
|
328
325
|
# @api public
|
329
326
|
#
|
@@ -352,9 +349,9 @@ module Puppet::Pops::Binder::Producers
|
|
352
349
|
# @param binder [Puppet::Pops::Binder::Bindings::Binding, nil] The binding using this producer
|
353
350
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
354
351
|
# @option options [Puppet::Pops::Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
355
|
-
# @option options [Puppet::Pops::Types::
|
352
|
+
# @option options [Puppet::Pops::Types::PAnyType] :type The type to lookup
|
356
353
|
# @option options [String] :name ('') The name to lookup
|
357
|
-
# @option options [Puppet::Pops::Types::
|
354
|
+
# @option options [Puppet::Pops::Types::PAnyType] :key The key to lookup in the hash
|
358
355
|
# @api public
|
359
356
|
#
|
360
357
|
def initialize(injector, binder, scope, options)
|
@@ -527,8 +524,8 @@ module Puppet::Pops::Binder::Producers
|
|
527
524
|
@contributions_key = injector.key_factory.multibind_contributions(binding.id)
|
528
525
|
end
|
529
526
|
|
530
|
-
# @param expected [Array<Puppet::Pops::Types::
|
531
|
-
# @param actual [Object, Puppet::Pops::Types::
|
527
|
+
# @param expected [Array<Puppet::Pops::Types::PAnyType>, Puppet::Pops::Types::PAnyType] expected type or types
|
528
|
+
# @param actual [Object, Puppet::Pops::Types::PAnyType> the actual value (or its type)
|
532
529
|
# @return [String] a formatted string for inclusion as detail in an error message
|
533
530
|
# @api private
|
534
531
|
#
|
@@ -9,6 +9,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
9
9
|
|
10
10
|
Issues = Puppet::Pops::Issues
|
11
11
|
TYPEFACTORY = Puppet::Pops::Types::TypeFactory
|
12
|
+
EMPTY_STRING = ''.freeze
|
12
13
|
|
13
14
|
attr_reader :semantic
|
14
15
|
|
@@ -44,7 +45,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
44
45
|
k1 = k1 < 0 ? o.length + k1 : k1 # abs pos
|
45
46
|
# if k1 is outside, a length of 1 always produces an empty string
|
46
47
|
if k1 < 0
|
47
|
-
|
48
|
+
EMPTY_STRING
|
48
49
|
else
|
49
50
|
o[ k1, k2 ]
|
50
51
|
end
|
@@ -65,7 +66,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
65
66
|
fail(Puppet::Pops::Issues::BAD_STRING_SLICE_ARITY, @semantic.left_expr, {:actual => keys.size})
|
66
67
|
end
|
67
68
|
# Specified as: an index outside of range, or empty result == empty string
|
68
|
-
(result.nil? || result.empty?) ?
|
69
|
+
(result.nil? || result.empty?) ? EMPTY_STRING : result
|
69
70
|
end
|
70
71
|
|
71
72
|
# Parameterizes a PRegexp Type with a pattern string or r ruby egexp
|
@@ -124,21 +125,10 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
124
125
|
# Does not flatten its keys to enable looking up with a structure
|
125
126
|
#
|
126
127
|
def access_Hash(o, scope, keys)
|
127
|
-
# Look up key in hash, if key is nil
|
128
|
-
# This
|
129
|
-
# in all hashes - that is much harder to guarantee since the Hash is a regular Ruby hash.
|
130
|
-
#
|
128
|
+
# Look up key in hash, if key is nil, try alternate form (:undef) before giving up.
|
129
|
+
# This is done because the hash may have been produced by 3x logic and may thus contain :undef.
|
131
130
|
result = keys.collect do |k|
|
132
|
-
o.fetch(k)
|
133
|
-
case key
|
134
|
-
when nil
|
135
|
-
o[:undef]
|
136
|
-
when :undef
|
137
|
-
o[:nil]
|
138
|
-
else
|
139
|
-
nil
|
140
|
-
end
|
141
|
-
end
|
131
|
+
o.fetch(k) { |key| key.nil? ? o[:undef] : nil }
|
142
132
|
end
|
143
133
|
case result.size
|
144
134
|
when 0
|
@@ -163,7 +153,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
163
153
|
|
164
154
|
def access_PVariantType(o, scope, keys)
|
165
155
|
keys.flatten!
|
166
|
-
assert_keys(keys, o, 1, INFINITY, Puppet::Pops::Types::
|
156
|
+
assert_keys(keys, o, 1, INFINITY, Puppet::Pops::Types::PAnyType)
|
167
157
|
Puppet::Pops::Types::TypeFactory.variant(*keys)
|
168
158
|
end
|
169
159
|
|
@@ -176,7 +166,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
176
166
|
size_type = TYPEFACTORY.range(keys[-1], :default)
|
177
167
|
keys = keys[0, keys.size - 1]
|
178
168
|
end
|
179
|
-
assert_keys(keys, o, 1, INFINITY, Puppet::Pops::Types::
|
169
|
+
assert_keys(keys, o, 1, INFINITY, Puppet::Pops::Types::PAnyType)
|
180
170
|
t = Puppet::Pops::Types::TypeFactory.tuple(*keys)
|
181
171
|
# set size type, or nil for default (exactly 1)
|
182
172
|
t.size_type = size_type
|
@@ -237,7 +227,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
237
227
|
|
238
228
|
def bad_key_type_name(actual)
|
239
229
|
case actual
|
240
|
-
when nil
|
230
|
+
when nil
|
241
231
|
'Undef'
|
242
232
|
when :default
|
243
233
|
'Default'
|
@@ -264,7 +254,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
264
254
|
def access_POptionalType(o, scope, keys)
|
265
255
|
keys.flatten!
|
266
256
|
if keys.size == 1
|
267
|
-
unless keys[0].is_a?(Puppet::Pops::Types::
|
257
|
+
unless keys[0].is_a?(Puppet::Pops::Types::PAnyType)
|
268
258
|
fail(Puppet::Pops::Issues::BAD_TYPE_SLICE_TYPE, @semantic.keys[0], {:base_type => 'Optional-Type', :actual => keys[0].class})
|
269
259
|
end
|
270
260
|
result = Puppet::Pops::Types::POptionalType.new()
|
@@ -278,7 +268,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
278
268
|
def access_PType(o, scope, keys)
|
279
269
|
keys.flatten!
|
280
270
|
if keys.size == 1
|
281
|
-
unless keys[0].is_a?(Puppet::Pops::Types::
|
271
|
+
unless keys[0].is_a?(Puppet::Pops::Types::PAnyType)
|
282
272
|
fail(Puppet::Pops::Issues::BAD_TYPE_SLICE_TYPE, @semantic.keys[0], {:base_type => 'Type-Type', :actual => keys[0].class})
|
283
273
|
end
|
284
274
|
result = Puppet::Pops::Types::PType.new()
|
@@ -289,11 +279,11 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
289
279
|
end
|
290
280
|
end
|
291
281
|
|
292
|
-
def
|
282
|
+
def access_PRuntimeType(o, scope, keys)
|
293
283
|
keys.flatten!
|
294
|
-
assert_keys(keys, o,
|
295
|
-
# create
|
296
|
-
Puppet::Pops::Types::TypeFactory.
|
284
|
+
assert_keys(keys, o, 2, 2, String, String)
|
285
|
+
# create runtime type based on runtime and name of class, (not inference of key's type)
|
286
|
+
Puppet::Pops::Types::TypeFactory.runtime(*keys)
|
297
287
|
end
|
298
288
|
|
299
289
|
def access_PIntegerType(o, scope, keys)
|
@@ -335,7 +325,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
335
325
|
def access_PHashType(o, scope, keys)
|
336
326
|
keys.flatten!
|
337
327
|
keys[0,2].each_with_index do |k, index|
|
338
|
-
unless k.is_a?(Puppet::Pops::Types::
|
328
|
+
unless k.is_a?(Puppet::Pops::Types::PAnyType)
|
339
329
|
fail(Puppet::Pops::Issues::BAD_TYPE_SLICE_TYPE, @semantic.keys[index], {:base_type => 'Hash-Type', :actual => k.class})
|
340
330
|
end
|
341
331
|
end
|
@@ -403,7 +393,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
403
393
|
fail(Puppet::Pops::Issues::BAD_TYPE_SLICE_ARITY, @semantic,
|
404
394
|
{:base_type => 'Array-Type', :min => 1, :max => 3, :actual => keys.size})
|
405
395
|
end
|
406
|
-
unless keys[0].is_a?(Puppet::Pops::Types::
|
396
|
+
unless keys[0].is_a?(Puppet::Pops::Types::PAnyType)
|
407
397
|
fail(Puppet::Pops::Issues::BAD_TYPE_SLICE_TYPE, @semantic.keys[0], {:base_type => 'Array-Type', :actual => keys[0].class})
|
408
398
|
end
|
409
399
|
result = Puppet::Pops::Types::PArrayType.new()
|
@@ -429,6 +419,17 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
429
419
|
end
|
430
420
|
end
|
431
421
|
|
422
|
+
# A Puppet::Resource represents either just a type (no title), or is a fully qualified type/title.
|
423
|
+
#
|
424
|
+
def access_Resource(o, scope, keys)
|
425
|
+
# To access a Puppet::Resource as if it was a PResourceType, simply infer it, and take the type of
|
426
|
+
# the parameterized meta type (i.e. Type[Resource[the_resource_type, the_resource_title]])
|
427
|
+
t = Puppet::Pops::Types::TypeCalculator.infer(o).type
|
428
|
+
# must map "undefined title" from resource to nil
|
429
|
+
t.title = nil if t.title == EMPTY_STRING
|
430
|
+
access(t, scope, *keys)
|
431
|
+
end
|
432
|
+
|
432
433
|
# A Resource can create a new more specific Resource type, and/or an array of resource types
|
433
434
|
# If the given type has title set, it can not be specified further.
|
434
435
|
# @example
|
@@ -464,6 +465,11 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
464
465
|
fail(Puppet::Pops::Issues::ILLEGAL_RESOURCE_SPECIALIZATION, blame, {:actual => type_name.class})
|
465
466
|
end
|
466
467
|
|
468
|
+
# type name must conform
|
469
|
+
if type_name !~ Puppet::Pops::Patterns::CLASSREF
|
470
|
+
fail(Puppet::Pops::Issues::ILLEGAL_CLASSREF, blamed, {:name=>type_name})
|
471
|
+
end
|
472
|
+
|
467
473
|
# The result is an array if multiple titles are given, or if titles are specified with an array
|
468
474
|
# (possibly multiple arrays, and nested arrays).
|
469
475
|
result_type_array = keys.size > 1 || keys[0].is_a?(Array)
|
@@ -503,7 +509,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
503
509
|
result = keys.each_with_index.map do |t, i|
|
504
510
|
unless t.is_a?(String) || t == :no_title
|
505
511
|
type_to_report = case t
|
506
|
-
when nil
|
512
|
+
when nil
|
507
513
|
'Undef'
|
508
514
|
when :default
|
509
515
|
'Default'
|
@@ -569,7 +575,7 @@ class Puppet::Pops::Evaluator::AccessOperator
|
|
569
575
|
if name =~ Puppet::Pops::Patterns::NAME
|
570
576
|
ctype = Puppet::Pops::Types::PHostClassType.new()
|
571
577
|
# Remove leading '::' since all references are global, and 3x runtime does the wrong thing
|
572
|
-
ctype.class_name = name.sub(/^::/,
|
578
|
+
ctype.class_name = name.sub(/^::/, EMPTY_STRING)
|
573
579
|
ctype
|
574
580
|
else
|
575
581
|
fail(Issues::ILLEGAL_NAME, @semantic.keys[i], {:name=>c})
|
@@ -0,0 +1,175 @@
|
|
1
|
+
# @api private
|
2
|
+
module Puppet::Pops::Evaluator::CallableMismatchDescriber
|
3
|
+
# Produces a string with the difference between the given arguments and support signature(s).
|
4
|
+
#
|
5
|
+
# @param name [String] The name of the callable to describe
|
6
|
+
# @param args_type [Puppet::Pops::Types::Tuple] The tuple of argument types.
|
7
|
+
# @param supported_signatures [Array<Puppet::Pops::Types::Callable>] The available signatures that were available for calling.
|
8
|
+
#
|
9
|
+
# @api private
|
10
|
+
def self.diff_string(name, args_type, supported_signatures)
|
11
|
+
result = [ ]
|
12
|
+
if supported_signatures.size == 1
|
13
|
+
signature = supported_signatures[0]
|
14
|
+
params_type = signature.type.param_types
|
15
|
+
block_type = signature.type.block_type
|
16
|
+
params_names = signature.parameter_names
|
17
|
+
result << "expected:\n #{name}(#{signature_string(signature)}) - #{arg_count_string(signature.type)}"
|
18
|
+
else
|
19
|
+
result << "expected one of:\n"
|
20
|
+
result << supported_signatures.map do |signature|
|
21
|
+
params_type = signature.type.param_types
|
22
|
+
" #{name}(#{signature_string(signature)}) - #{arg_count_string(signature.type)}"
|
23
|
+
end.join("\n")
|
24
|
+
end
|
25
|
+
|
26
|
+
result << "\nactual:\n #{name}(#{arg_types_string(args_type)}) - #{arg_count_string(args_type)}"
|
27
|
+
|
28
|
+
result.join('')
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
# Produces a string for the signature(s)
|
34
|
+
#
|
35
|
+
# @api private
|
36
|
+
def self.signature_string(signature)
|
37
|
+
param_types = signature.type.param_types
|
38
|
+
block_type = signature.type.block_type
|
39
|
+
param_names = signature.parameter_names
|
40
|
+
|
41
|
+
from, to = param_types.size_range
|
42
|
+
if from == 0 && to == 0
|
43
|
+
# No parameters function
|
44
|
+
return ''
|
45
|
+
end
|
46
|
+
|
47
|
+
required_count = from
|
48
|
+
# there may be more names than there are types, and count needs to be subtracted from the count
|
49
|
+
# to make it correct for the last named element
|
50
|
+
adjust = max(0, param_names.size() -1)
|
51
|
+
last_range = [max(0, (from - adjust)), (to - adjust)]
|
52
|
+
|
53
|
+
types =
|
54
|
+
case param_types
|
55
|
+
when Puppet::Pops::Types::PTupleType
|
56
|
+
param_types.types
|
57
|
+
when Puppet::Pops::Types::PArrayType
|
58
|
+
[ param_types.element_type ]
|
59
|
+
end
|
60
|
+
tc = Puppet::Pops::Types::TypeCalculator
|
61
|
+
|
62
|
+
# join type with names (types are always present, names are optional)
|
63
|
+
# separate entries with comma
|
64
|
+
#
|
65
|
+
result =
|
66
|
+
if param_names.empty?
|
67
|
+
types.each_with_index.map {|t, index| tc.string(t) + opt_value_indicator(index, required_count, 0) }
|
68
|
+
else
|
69
|
+
limit = param_names.size
|
70
|
+
result = param_names.each_with_index.map do |name, index|
|
71
|
+
[tc.string(types[index] || types[-1]), name].join(' ') + opt_value_indicator(index, required_count, limit)
|
72
|
+
end
|
73
|
+
end.join(', ')
|
74
|
+
|
75
|
+
# Add {from, to} for the last type
|
76
|
+
# This works for both Array and Tuple since it describes the allowed count of the "last" type element
|
77
|
+
# for both. It does not show anything when the range is {1,1}.
|
78
|
+
#
|
79
|
+
result += range_string(last_range)
|
80
|
+
|
81
|
+
# If there is a block, include it with its own optional count {0,1}
|
82
|
+
case signature.type.block_type
|
83
|
+
when Puppet::Pops::Types::POptionalType
|
84
|
+
result << ', ' unless result == ''
|
85
|
+
result << "#{tc.string(signature.type.block_type.optional_type)} #{signature.block_name} {0,1}"
|
86
|
+
when Puppet::Pops::Types::PCallableType
|
87
|
+
result << ', ' unless result == ''
|
88
|
+
result << "#{tc.string(signature.type.block_type)} #{signature.block_name}"
|
89
|
+
when NilClass
|
90
|
+
# nothing
|
91
|
+
end
|
92
|
+
result
|
93
|
+
end
|
94
|
+
|
95
|
+
# Why oh why Ruby do you not have a standard Math.max ?
|
96
|
+
# @api private
|
97
|
+
def self.max(a, b)
|
98
|
+
a >= b ? a : b
|
99
|
+
end
|
100
|
+
|
101
|
+
# @api private
|
102
|
+
def self.opt_value_indicator(index, required_count, limit)
|
103
|
+
count = index + 1
|
104
|
+
(count > required_count && count < limit) ? '?' : ''
|
105
|
+
end
|
106
|
+
|
107
|
+
# @api private
|
108
|
+
def self.arg_count_string(args_type)
|
109
|
+
if args_type.is_a?(Puppet::Pops::Types::PCallableType)
|
110
|
+
size_range = args_type.param_types.size_range # regular parameters
|
111
|
+
adjust_range=
|
112
|
+
case args_type.block_type
|
113
|
+
when Puppet::Pops::Types::POptionalType
|
114
|
+
size_range[1] += 1
|
115
|
+
when Puppet::Pops::Types::PCallableType
|
116
|
+
size_range[0] += 1
|
117
|
+
size_range[1] += 1
|
118
|
+
when NilClass
|
119
|
+
# nothing
|
120
|
+
else
|
121
|
+
raise ArgumentError, "Internal Error, only nil, Callable, and Optional[Callable] supported by Callable block type"
|
122
|
+
end
|
123
|
+
else
|
124
|
+
size_range = args_type.size_range
|
125
|
+
end
|
126
|
+
"arg count #{range_string(size_range, false)}"
|
127
|
+
end
|
128
|
+
|
129
|
+
# @api private
|
130
|
+
def self.arg_types_string(args_type)
|
131
|
+
types =
|
132
|
+
case args_type
|
133
|
+
when Puppet::Pops::Types::PTupleType
|
134
|
+
last_range = args_type.repeat_last_range
|
135
|
+
args_type.types
|
136
|
+
when Puppet::Pops::Types::PArrayType
|
137
|
+
last_range = args_type.size_range
|
138
|
+
[ args_type.element_type ]
|
139
|
+
end
|
140
|
+
# stringify generalized versions or it will display Integer[10,10] for "10", String['the content'] etc.
|
141
|
+
# note that type must be copied since generalize is a mutating operation
|
142
|
+
tc = Puppet::Pops::Types::TypeCalculator
|
143
|
+
result = types.map { |t| tc.string(tc.generalize!(t.copy)) }.join(', ')
|
144
|
+
|
145
|
+
# Add {from, to} for the last type
|
146
|
+
# This works for both Array and Tuple since it describes the allowed count of the "last" type element
|
147
|
+
# for both. It does not show anything when the range is {1,1}.
|
148
|
+
#
|
149
|
+
result += range_string(last_range)
|
150
|
+
result
|
151
|
+
end
|
152
|
+
|
153
|
+
# Formats a range into a string of the form: `{from, to}`
|
154
|
+
#
|
155
|
+
# The following cases are optimized:
|
156
|
+
#
|
157
|
+
# * from and to are equal => `{from}`
|
158
|
+
# * from and to are both and 1 and squelch_one == true => `''`
|
159
|
+
# * from is 0 and to is 1 => `'?'`
|
160
|
+
# * to is INFINITY => `{from, }`
|
161
|
+
#
|
162
|
+
# @api private
|
163
|
+
def self.range_string(size_range, squelch_one = true)
|
164
|
+
from, to = size_range
|
165
|
+
if from == to
|
166
|
+
(squelch_one && from == 1) ? '' : "{#{from}}"
|
167
|
+
elsif to == Puppet::Pops::Types::INFINITY
|
168
|
+
"{#{from},}"
|
169
|
+
elsif from == 0 && to == 1
|
170
|
+
'?'
|
171
|
+
else
|
172
|
+
"{#{from},#{to}}"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|