puppet 3.6.2 → 3.7.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 +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 +296 -68
- 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
@@ -18,8 +18,9 @@ module Puppet::Pops::Types::TypeFactory
|
|
18
18
|
#
|
19
19
|
def self.range(from, to)
|
20
20
|
t = Types::PIntegerType.new()
|
21
|
-
|
22
|
-
t.
|
21
|
+
# optimize eq with symbol (faster when it is left)
|
22
|
+
t.from = from unless (:default == from || from == 'default')
|
23
|
+
t.to = to unless (:default == to || to == 'default')
|
23
24
|
t
|
24
25
|
end
|
25
26
|
|
@@ -28,8 +29,9 @@ module Puppet::Pops::Types::TypeFactory
|
|
28
29
|
#
|
29
30
|
def self.float_range(from, to)
|
30
31
|
t = Types::PFloatType.new()
|
31
|
-
|
32
|
-
t.
|
32
|
+
# optimize eq with symbol (faster when it is left)
|
33
|
+
t.from = Float(from) unless :default == from || from.nil?
|
34
|
+
t.to = Float(to) unless :default == to || to.nil?
|
33
35
|
t
|
34
36
|
end
|
35
37
|
|
@@ -70,11 +72,6 @@ module Puppet::Pops::Types::TypeFactory
|
|
70
72
|
t
|
71
73
|
end
|
72
74
|
|
73
|
-
# Convenience method to produce an Optional[Object] type
|
74
|
-
def self.optional_object()
|
75
|
-
optional(object())
|
76
|
-
end
|
77
|
-
|
78
75
|
# Produces the Enum type, optionally with specific string values
|
79
76
|
# @api public
|
80
77
|
#
|
@@ -93,9 +90,10 @@ module Puppet::Pops::Types::TypeFactory
|
|
93
90
|
t
|
94
91
|
end
|
95
92
|
|
96
|
-
# Produces the Struct type, either a non parameterized instance representing
|
97
|
-
# or a hash with a given set of keys of String
|
98
|
-
#
|
93
|
+
# Produces the Struct type, either a non parameterized instance representing
|
94
|
+
# all structs (i.e. all hashes) or a hash with a given set of keys of String
|
95
|
+
# type (names), bound to a value of a given type. Type may be a Ruby Class, a
|
96
|
+
# Puppet Type, or an instance from which the type is inferred.
|
99
97
|
#
|
100
98
|
def self.struct(name_type_hash = {})
|
101
99
|
t = Types::PStructType.new
|
@@ -124,15 +122,16 @@ module Puppet::Pops::Types::TypeFactory
|
|
124
122
|
Types::PBooleanType.new()
|
125
123
|
end
|
126
124
|
|
127
|
-
# Produces the
|
125
|
+
# Produces the Any type
|
128
126
|
# @api public
|
129
127
|
#
|
130
|
-
def self.
|
131
|
-
Types::
|
128
|
+
def self.any()
|
129
|
+
Types::PAnyType.new()
|
132
130
|
end
|
133
131
|
|
134
132
|
# Produces the Regexp type
|
135
|
-
# @param pattern [Regexp, String, nil] (nil) The regular expression object or
|
133
|
+
# @param pattern [Regexp, String, nil] (nil) The regular expression object or
|
134
|
+
# a regexp source string, or nil for bare type
|
136
135
|
# @api public
|
137
136
|
#
|
138
137
|
def self.regexp(pattern = nil)
|
@@ -198,20 +197,18 @@ module Puppet::Pops::Types::TypeFactory
|
|
198
197
|
# use {#all_callables}.
|
199
198
|
#
|
200
199
|
# The params is a list of types, where the three last entries may be
|
201
|
-
# optionally followed by min, max count, and a Callable which is taken as the
|
200
|
+
# optionally followed by min, max count, and a Callable which is taken as the
|
201
|
+
# block_type.
|
202
202
|
# If neither min or max are specified the parameters must match exactly.
|
203
203
|
# A min < params.size means that the difference are optional.
|
204
204
|
# If max > params.size means that the last type repeats.
|
205
205
|
# if max is :default, the max value is unbound (infinity).
|
206
|
-
#
|
206
|
+
#
|
207
207
|
# Params are given as a sequence of arguments to {#type_of}.
|
208
208
|
#
|
209
209
|
def self.callable(*params)
|
210
|
-
|
211
|
-
when Types::PCallableType
|
210
|
+
if Puppet::Pops::Types::TypeCalculator.is_kind_of_callable?(params.last)
|
212
211
|
last_callable = true
|
213
|
-
when Types::POptionalType
|
214
|
-
last_callable = true if params.last.optional_type.is_a?(Types::PCallableType)
|
215
212
|
end
|
216
213
|
block_t = last_callable ? params.pop : nil
|
217
214
|
|
@@ -226,6 +223,10 @@ module Puppet::Pops::Types::TypeFactory
|
|
226
223
|
|
227
224
|
types = params.map {|p| type_of(p) }
|
228
225
|
|
226
|
+
# If the specification requires types, and none were given, a Unit type is used
|
227
|
+
if types.empty? && !size_type.nil? && size_type.range[1] > 0
|
228
|
+
types << Types::PUnitType.new
|
229
|
+
end
|
229
230
|
# create a signature
|
230
231
|
callable_t = Types::PCallableType.new()
|
231
232
|
tuple_t = tuple(*types)
|
@@ -266,27 +267,41 @@ module Puppet::Pops::Types::TypeFactory
|
|
266
267
|
Types::PNilType.new()
|
267
268
|
end
|
268
269
|
|
270
|
+
# Creates an instance of the Default type
|
271
|
+
# @api public
|
272
|
+
def self.default()
|
273
|
+
Types::PDefaultType.new()
|
274
|
+
end
|
275
|
+
|
269
276
|
# Produces an instance of the abstract type PCatalogEntryType
|
270
277
|
def self.catalog_entry()
|
271
278
|
Types::PCatalogEntryType.new()
|
272
279
|
end
|
273
280
|
|
274
|
-
# Produces a PResourceType with a String type_name
|
275
|
-
#
|
276
|
-
#
|
277
|
-
# (There is no resource-type subtyping in Puppet (yet)).
|
281
|
+
# Produces a PResourceType with a String type_name A PResourceType with a nil
|
282
|
+
# or empty name is compatible with any other PResourceType. A PResourceType
|
283
|
+
# with a given name is only compatible with a PResourceType with the same
|
284
|
+
# name. (There is no resource-type subtyping in Puppet (yet)).
|
278
285
|
#
|
279
286
|
def self.resource(type_name = nil, title = nil)
|
280
287
|
type = Types::PResourceType.new()
|
281
288
|
type_name = type_name.type_name if type_name.is_a?(Types::PResourceType)
|
282
|
-
|
289
|
+
type_name = type_name.downcase unless type_name.nil?
|
290
|
+
type.type_name = type_name
|
291
|
+
unless type_name.nil? || type_name =~ Puppet::Pops::Patterns::CLASSREF
|
292
|
+
raise ArgumentError, "Illegal type name '#{type.type_name}'"
|
293
|
+
end
|
294
|
+
if type_name.nil? && !title.nil?
|
295
|
+
raise ArgumentError, "The type name cannot be nil, if title is given"
|
296
|
+
end
|
283
297
|
type.title = title
|
284
298
|
type
|
285
299
|
end
|
286
300
|
|
287
|
-
# Produces PHostClassType with a string class_name.
|
288
|
-
#
|
289
|
-
#
|
301
|
+
# Produces PHostClassType with a string class_name. A PHostClassType with
|
302
|
+
# nil or empty name is compatible with any other PHostClassType. A
|
303
|
+
# PHostClassType with a given name is only compatible with a PHostClassType
|
304
|
+
# with the same name.
|
290
305
|
#
|
291
306
|
def self.host_class(class_name = nil)
|
292
307
|
type = Types::PHostClassType.new()
|
@@ -296,7 +311,8 @@ module Puppet::Pops::Types::TypeFactory
|
|
296
311
|
type
|
297
312
|
end
|
298
313
|
|
299
|
-
# Produces a type for Array[o] where o is either a type, or an instance for
|
314
|
+
# Produces a type for Array[o] where o is either a type, or an instance for
|
315
|
+
# which a type is inferred.
|
300
316
|
# @api public
|
301
317
|
#
|
302
318
|
def self.array_of(o)
|
@@ -305,7 +321,8 @@ module Puppet::Pops::Types::TypeFactory
|
|
305
321
|
type
|
306
322
|
end
|
307
323
|
|
308
|
-
# Produces a type for Hash[Scalar, o] where o is either a type, or an
|
324
|
+
# Produces a type for Hash[Scalar, o] where o is either a type, or an
|
325
|
+
# instance for which a type is inferred.
|
309
326
|
# @api public
|
310
327
|
#
|
311
328
|
def self.hash_of(value, key = scalar())
|
@@ -343,31 +360,33 @@ module Puppet::Pops::Types::TypeFactory
|
|
343
360
|
type
|
344
361
|
end
|
345
362
|
|
346
|
-
# Produce a type corresponding to the class of given unless given is a
|
347
|
-
# When a String is given this is taken as
|
363
|
+
# Produce a type corresponding to the class of given unless given is a
|
364
|
+
# String, Class or a PAnyType. When a String is given this is taken as
|
365
|
+
# a classname.
|
348
366
|
#
|
349
367
|
def self.type_of(o)
|
350
368
|
if o.is_a?(Class)
|
351
369
|
@type_calculator.type(o)
|
352
|
-
elsif o.is_a?(Types::
|
370
|
+
elsif o.is_a?(Types::PAnyType)
|
353
371
|
o
|
354
372
|
elsif o.is_a?(String)
|
355
|
-
|
356
|
-
type.ruby_class = o
|
357
|
-
type
|
373
|
+
Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => o)
|
358
374
|
else
|
359
375
|
@type_calculator.infer_generic(o)
|
360
376
|
end
|
361
377
|
end
|
362
378
|
|
363
|
-
# Produces a type for a class or infers a type for something that is not a
|
379
|
+
# Produces a type for a class or infers a type for something that is not a
|
380
|
+
# class
|
364
381
|
# @note
|
365
382
|
# To get the type for the class' class use `TypeCalculator.infer(c)`
|
366
383
|
#
|
367
384
|
# @overload ruby(o)
|
368
|
-
# @param o [Class] produces the type corresponding to the class (e.g.
|
385
|
+
# @param o [Class] produces the type corresponding to the class (e.g.
|
386
|
+
# Integer becomes PIntegerType)
|
369
387
|
# @overload ruby(o)
|
370
|
-
# @param o [Object] produces the type corresponding to the instance class
|
388
|
+
# @param o [Object] produces the type corresponding to the instance class
|
389
|
+
# (e.g. 3 becomes PIntegerType)
|
371
390
|
#
|
372
391
|
# @api public
|
373
392
|
#
|
@@ -375,32 +394,39 @@ module Puppet::Pops::Types::TypeFactory
|
|
375
394
|
if o.is_a?(Class)
|
376
395
|
@type_calculator.type(o)
|
377
396
|
else
|
378
|
-
|
379
|
-
type.ruby_class = o.class.name
|
380
|
-
type
|
397
|
+
Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => o.class.name)
|
381
398
|
end
|
382
399
|
end
|
383
400
|
|
384
|
-
# Generic creator of a
|
385
|
-
# Also see ruby(o) which performs inference,
|
401
|
+
# Generic creator of a RuntimeType["ruby"] - allows creating the Ruby type
|
402
|
+
# with nil name, or String name. Also see ruby(o) which performs inference,
|
403
|
+
# or mapps a Ruby Class to its name.
|
386
404
|
#
|
387
405
|
def self.ruby_type(class_name = nil)
|
388
|
-
|
389
|
-
|
390
|
-
|
406
|
+
Types::PRuntimeType.new(:runtime => :ruby, :runtime_type_name => class_name)
|
407
|
+
end
|
408
|
+
|
409
|
+
# Generic creator of a RuntimeType - allows creating the type with nil or
|
410
|
+
# String runtime_type_name. Also see ruby_type(o) and ruby(o).
|
411
|
+
#
|
412
|
+
def self.runtime(runtime=nil, runtime_type_name = nil)
|
413
|
+
runtime = runtime.to_sym if runtime.is_a?(String)
|
414
|
+
Types::PRuntimeType.new(:runtime => runtime, :runtime_type_name => runtime_type_name)
|
391
415
|
end
|
392
416
|
|
393
|
-
# Sets the accepted size range of a collection if something other than the
|
394
|
-
# is wanted. The semantics for from/to are the same as
|
417
|
+
# Sets the accepted size range of a collection if something other than the
|
418
|
+
# default 0 to Infinity is wanted. The semantics for from/to are the same as
|
419
|
+
# for #range
|
395
420
|
#
|
396
421
|
def self.constrain_size(collection_t, from, to)
|
397
422
|
collection_t.size_type = range(from, to)
|
398
423
|
collection_t
|
399
424
|
end
|
400
425
|
|
401
|
-
# Returns true if the given type t is of valid range parameter type (integer
|
426
|
+
# Returns true if the given type t is of valid range parameter type (integer
|
427
|
+
# or literal default).
|
402
428
|
def self.is_range_parameter?(t)
|
403
|
-
t.is_a?(Integer) || t == 'default' ||
|
429
|
+
t.is_a?(Integer) || t == 'default' || :default == t
|
404
430
|
end
|
405
431
|
|
406
432
|
end
|
@@ -24,7 +24,7 @@ class Puppet::Pops::Types::TypeParser
|
|
24
24
|
#
|
25
25
|
# @param string [String] a string with the type expressed in stringified form as produced by the
|
26
26
|
# {Puppet::Pops::Types::TypeCalculator#string TypeCalculator#string} method.
|
27
|
-
# @return [Puppet::Pops::Types::
|
27
|
+
# @return [Puppet::Pops::Types::PAnyType] a specialization of the PAnyType representing the type.
|
28
28
|
#
|
29
29
|
# @api public
|
30
30
|
#
|
@@ -47,7 +47,7 @@ class Puppet::Pops::Types::TypeParser
|
|
47
47
|
def interpret(ast)
|
48
48
|
result = @type_transformer.visit_this_0(self, ast)
|
49
49
|
result = result.body if result.is_a?(Puppet::Pops::Model::Program)
|
50
|
-
raise_invalid_type_specification_error unless result.is_a?(Puppet::Pops::Types::
|
50
|
+
raise_invalid_type_specification_error unless result.is_a?(Puppet::Pops::Types::PAnyType)
|
51
51
|
result
|
52
52
|
end
|
53
53
|
|
@@ -76,6 +76,10 @@ class Puppet::Pops::Types::TypeParser
|
|
76
76
|
o.value
|
77
77
|
end
|
78
78
|
|
79
|
+
def interpret_LiteralRegularExpression(o)
|
80
|
+
o.value
|
81
|
+
end
|
82
|
+
|
79
83
|
# @api private
|
80
84
|
def interpret_String(o)
|
81
85
|
o
|
@@ -157,11 +161,13 @@ class Puppet::Pops::Types::TypeParser
|
|
157
161
|
TYPES.catalog_entry()
|
158
162
|
|
159
163
|
when "undef"
|
160
|
-
# Should not be interpreted as Resource type
|
161
164
|
TYPES.undef()
|
162
165
|
|
163
|
-
when "
|
164
|
-
TYPES.
|
166
|
+
when "default"
|
167
|
+
TYPES.default()
|
168
|
+
|
169
|
+
when "any"
|
170
|
+
TYPES.any()
|
165
171
|
|
166
172
|
when "variant"
|
167
173
|
TYPES.variant()
|
@@ -169,8 +175,8 @@ class Puppet::Pops::Types::TypeParser
|
|
169
175
|
when "optional"
|
170
176
|
TYPES.optional()
|
171
177
|
|
172
|
-
when "
|
173
|
-
TYPES.
|
178
|
+
when "runtime"
|
179
|
+
TYPES.runtime()
|
174
180
|
|
175
181
|
when "type"
|
176
182
|
TYPES.type_type()
|
@@ -297,22 +303,22 @@ class Puppet::Pops::Types::TypeParser
|
|
297
303
|
|
298
304
|
when "enum"
|
299
305
|
# 1..m parameters being strings
|
300
|
-
raise_invalid_parameters_error("Enum", "1 or more", parameters.size) unless parameters.size
|
306
|
+
raise_invalid_parameters_error("Enum", "1 or more", parameters.size) unless parameters.size >= 1
|
301
307
|
TYPES.enum(*parameters)
|
302
308
|
|
303
309
|
when "pattern"
|
304
310
|
# 1..m parameters being strings or regular expressions
|
305
|
-
raise_invalid_parameters_error("Pattern", "1 or more", parameters.size) unless parameters.size
|
311
|
+
raise_invalid_parameters_error("Pattern", "1 or more", parameters.size) unless parameters.size >= 1
|
306
312
|
TYPES.pattern(*parameters)
|
307
313
|
|
308
314
|
when "variant"
|
309
315
|
# 1..m parameters being strings or regular expressions
|
310
|
-
raise_invalid_parameters_error("Variant", "1 or more", parameters.size) unless parameters.size
|
316
|
+
raise_invalid_parameters_error("Variant", "1 or more", parameters.size) unless parameters.size >= 1
|
311
317
|
TYPES.variant(*parameters)
|
312
318
|
|
313
319
|
when "tuple"
|
314
320
|
# 1..m parameters being types (last two optionally integer or literal default
|
315
|
-
raise_invalid_parameters_error("Tuple", "1 or more", parameters.size) unless parameters.size
|
321
|
+
raise_invalid_parameters_error("Tuple", "1 or more", parameters.size) unless parameters.size >= 1
|
316
322
|
length = parameters.size
|
317
323
|
if TYPES.is_range_parameter?(parameters[-2])
|
318
324
|
# min, max specification
|
@@ -400,7 +406,7 @@ class Puppet::Pops::Types::TypeParser
|
|
400
406
|
assert_type(parameters[0])
|
401
407
|
TYPES.optional(parameters[0])
|
402
408
|
|
403
|
-
when "
|
409
|
+
when "any", "data", "catalogentry", "boolean", "scalar", "undef", "numeric", "default"
|
404
410
|
raise_unparameterized_type_error(parameterized_ast.left_expr)
|
405
411
|
|
406
412
|
when "type"
|
@@ -410,9 +416,9 @@ class Puppet::Pops::Types::TypeParser
|
|
410
416
|
assert_type(parameters[0])
|
411
417
|
TYPES.type_type(parameters[0])
|
412
418
|
|
413
|
-
when "
|
414
|
-
raise_invalid_parameters_error("
|
415
|
-
TYPES.
|
419
|
+
when "runtime"
|
420
|
+
raise_invalid_parameters_error("Runtime", "2", parameters.size) unless parameters.size == 2
|
421
|
+
TYPES.runtime(*parameters)
|
416
422
|
|
417
423
|
else
|
418
424
|
# It is a resource such a File['/tmp/foo']
|
@@ -427,7 +433,7 @@ class Puppet::Pops::Types::TypeParser
|
|
427
433
|
private
|
428
434
|
|
429
435
|
def assert_type(t)
|
430
|
-
raise_invalid_type_specification_error unless t.is_a?(Puppet::Pops::Types::
|
436
|
+
raise_invalid_type_specification_error unless t.is_a?(Puppet::Pops::Types::PAnyType)
|
431
437
|
true
|
432
438
|
end
|
433
439
|
|
@@ -1,506 +1,397 @@
|
|
1
1
|
require 'rgen/metamodel_builder'
|
2
2
|
|
3
3
|
# The Types model is a model of Puppet Language types.
|
4
|
-
#
|
5
|
-
#
|
6
|
-
# of Scalar, Array[Data], and Hash[Scalar, Data] nested to any depth. This means it is not possible to
|
7
|
-
# infer the type by simply looking at the inheritance hierarchy. The {Puppet::Pops::Types::TypeCalculator} should
|
8
|
-
# be used to answer questions about types. The {Puppet::Pops::Types::TypeFactory} should be used to create an instance
|
9
|
-
# of a type whenever one is needed.
|
10
|
-
#
|
11
|
-
# The implementation of the Types model contains methods that are required for the type objects to behave as
|
12
|
-
# expected when comparing them and using them as keys in hashes. (No other logic is, or should be included directly in
|
13
|
-
# the model's classes).
|
4
|
+
# It consists of two parts; the meta-model expressed using RGen (in types_meta.rb) and this file which
|
5
|
+
# mixes in the implementation.
|
14
6
|
#
|
15
7
|
# @api public
|
16
8
|
#
|
17
|
-
module Puppet::Pops
|
18
|
-
|
19
|
-
INFINITY = 1.0 / 0.0
|
20
|
-
NEGATIVE_INFINITY = -INFINITY
|
21
|
-
|
22
|
-
class PAbstractType < Puppet::Pops::Model::PopsObject
|
23
|
-
abstract
|
24
|
-
module ClassModule
|
25
|
-
# Produce a deep copy of the type
|
26
|
-
def copy
|
27
|
-
Marshal.load(Marshal.dump(self))
|
28
|
-
end
|
9
|
+
module Puppet::Pops
|
10
|
+
require 'puppet/pops/types/types_meta'
|
29
11
|
|
30
|
-
|
31
|
-
self.class.hash
|
32
|
-
end
|
12
|
+
# TODO: See PUP-2978 for possible performance optimization
|
33
13
|
|
34
|
-
|
35
|
-
|
36
|
-
|
14
|
+
# Mix in implementation part of the Bindings Module
|
15
|
+
module Types
|
16
|
+
# Used as end in a range
|
17
|
+
INFINITY = 1.0 / 0.0
|
18
|
+
NEGATIVE_INFINITY = -INFINITY
|
37
19
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
end
|
20
|
+
class TypeModelObject < RGen::MetamodelBuilder::MMBase
|
21
|
+
include Puppet::Pops::Visitable
|
22
|
+
include Puppet::Pops::Adaptable
|
23
|
+
include Puppet::Pops::Containment
|
43
24
|
end
|
44
|
-
end
|
45
25
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
[self.class, type].hash
|
53
|
-
end
|
54
|
-
|
55
|
-
def ==(o)
|
56
|
-
self.class == o.class && type == o.type
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Base type for all types except {Puppet::Pops::Types::PType PType}, the type of types.
|
62
|
-
# @api public
|
63
|
-
class PObjectType < PAbstractType
|
26
|
+
class PAnyType < TypeModelObject
|
27
|
+
module ClassModule
|
28
|
+
# Produce a deep copy of the type
|
29
|
+
def copy
|
30
|
+
Marshal.load(Marshal.dump(self))
|
31
|
+
end
|
64
32
|
|
65
|
-
|
66
|
-
|
33
|
+
def hash
|
34
|
+
self.class.hash
|
35
|
+
end
|
67
36
|
|
68
|
-
|
37
|
+
def ==(o)
|
38
|
+
self.class == o.class
|
39
|
+
end
|
69
40
|
|
70
|
-
|
71
|
-
class PNilType < PObjectType
|
72
|
-
end
|
41
|
+
alias eql? ==
|
73
42
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
class PDataType < PObjectType
|
78
|
-
module ClassModule
|
79
|
-
def ==(o)
|
80
|
-
self.class == o.class ||
|
81
|
-
o.class == PVariantType && o == Puppet::Pops::Types::TypeCalculator.data_variant()
|
43
|
+
def to_s
|
44
|
+
Puppet::Pops::Types::TypeCalculator.string(self)
|
45
|
+
end
|
82
46
|
end
|
83
47
|
end
|
84
|
-
end
|
85
48
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
module ClassModule
|
49
|
+
class PType < PAnyType
|
50
|
+
module ClassModule
|
51
|
+
def hash
|
52
|
+
[self.class, type].hash
|
53
|
+
end
|
92
54
|
|
93
|
-
|
94
|
-
|
55
|
+
def ==(o)
|
56
|
+
self.class == o.class && type == o.type
|
57
|
+
end
|
95
58
|
end
|
59
|
+
end
|
96
60
|
|
97
|
-
|
98
|
-
|
99
|
-
|
61
|
+
class PDataType < PAnyType
|
62
|
+
module ClassModule
|
63
|
+
def ==(o)
|
64
|
+
self.class == o.class ||
|
65
|
+
o.class == PVariantType && o == Puppet::Pops::Types::TypeCalculator.data_variant()
|
66
|
+
end
|
100
67
|
end
|
101
68
|
end
|
102
|
-
end
|
103
|
-
|
104
|
-
# Type that is PDataType compatible, but is not a PCollectionType.
|
105
|
-
# @api public
|
106
|
-
class PScalarType < PObjectType
|
107
|
-
end
|
108
69
|
|
109
|
-
|
110
|
-
|
111
|
-
class PEnumType < PScalarType
|
112
|
-
has_many_attr 'values', String, :lowerBound => 1
|
70
|
+
class PVariantType < PAnyType
|
71
|
+
module ClassModule
|
113
72
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
end
|
73
|
+
def hash
|
74
|
+
[self.class, Set.new(self.types)].hash
|
75
|
+
end
|
118
76
|
|
119
|
-
|
120
|
-
|
77
|
+
def ==(o)
|
78
|
+
(self.class == o.class && Set.new(types) == Set.new(o.types)) ||
|
79
|
+
(o.class == PDataType && self == Puppet::Pops::Types::TypeCalculator.data_variant())
|
80
|
+
end
|
121
81
|
end
|
122
82
|
end
|
123
|
-
end
|
124
83
|
|
125
|
-
|
126
|
-
|
127
|
-
|
84
|
+
class PEnumType < PScalarType
|
85
|
+
module ClassModule
|
86
|
+
def hash
|
87
|
+
[self.class, Set.new(self.values)].hash
|
88
|
+
end
|
128
89
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
90
|
+
def ==(o)
|
91
|
+
self.class == o.class && Set.new(values) == Set.new(o.values)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
133
95
|
|
134
|
-
|
135
|
-
|
136
|
-
|
96
|
+
class PIntegerType < PNumericType
|
97
|
+
module ClassModule
|
98
|
+
# The integer type is enumerable when it defines a range
|
99
|
+
include Enumerable
|
137
100
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
101
|
+
# Returns Float.Infinity if one end of the range is unbound
|
102
|
+
def size
|
103
|
+
return INFINITY if from.nil? || to.nil?
|
104
|
+
1+(to-from).abs
|
105
|
+
end
|
143
106
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
107
|
+
# Returns the range as an array ordered so the smaller number is always first.
|
108
|
+
# The number may be Infinity or -Infinity.
|
109
|
+
def range
|
110
|
+
f = from || NEGATIVE_INFINITY
|
111
|
+
t = to || INFINITY
|
112
|
+
if f < t
|
113
|
+
[f, t]
|
114
|
+
else
|
115
|
+
[t,f]
|
116
|
+
end
|
153
117
|
end
|
154
|
-
end
|
155
118
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
119
|
+
# Returns Enumerator if no block is given
|
120
|
+
# Returns self if size is infinity (does not yield)
|
121
|
+
def each
|
122
|
+
return self.to_enum unless block_given?
|
123
|
+
return nil if from.nil? || to.nil?
|
124
|
+
if to < from
|
125
|
+
from.downto(to) {|x| yield x }
|
126
|
+
else
|
127
|
+
from.upto(to) {|x| yield x }
|
128
|
+
end
|
165
129
|
end
|
166
|
-
end
|
167
130
|
|
168
|
-
|
169
|
-
|
170
|
-
|
131
|
+
def hash
|
132
|
+
[self.class, from, to].hash
|
133
|
+
end
|
171
134
|
|
172
|
-
|
173
|
-
|
135
|
+
def ==(o)
|
136
|
+
self.class == o.class && from == o.from && to == o.to
|
137
|
+
end
|
174
138
|
end
|
175
139
|
end
|
176
|
-
end
|
177
140
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
module ClassModule
|
184
|
-
def hash
|
185
|
-
[self.class, from, to].hash
|
186
|
-
end
|
141
|
+
class PFloatType < PNumericType
|
142
|
+
module ClassModule
|
143
|
+
def hash
|
144
|
+
[self.class, from, to].hash
|
145
|
+
end
|
187
146
|
|
188
|
-
|
189
|
-
|
147
|
+
def ==(o)
|
148
|
+
self.class == o.class && from == o.from && to == o.to
|
149
|
+
end
|
190
150
|
end
|
191
151
|
end
|
192
|
-
end
|
193
|
-
|
194
|
-
# @api public
|
195
|
-
class PStringType < PScalarType
|
196
|
-
has_many_attr 'values', String, :lowerBound => 0, :upperBound => -1, :unique => true
|
197
|
-
contains_one_uni 'size_type', PIntegerType
|
198
152
|
|
199
|
-
|
153
|
+
class PStringType < PScalarType
|
154
|
+
module ClassModule
|
200
155
|
|
201
|
-
|
202
|
-
|
203
|
-
|
156
|
+
def hash
|
157
|
+
[self.class, self.size_type, Set.new(self.values)].hash
|
158
|
+
end
|
204
159
|
|
205
|
-
|
206
|
-
|
160
|
+
def ==(o)
|
161
|
+
self.class == o.class && self.size_type == o.size_type && Set.new(values) == Set.new(o.values)
|
162
|
+
end
|
207
163
|
end
|
208
164
|
end
|
209
|
-
end
|
210
|
-
|
211
|
-
# @api public
|
212
|
-
class PRegexpType < PScalarType
|
213
|
-
has_attr 'pattern', String, :lowerBound => 1
|
214
|
-
has_attr 'regexp', Object, :derived => true
|
215
165
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
166
|
+
class PRegexpType < PScalarType
|
167
|
+
module ClassModule
|
168
|
+
def regexp_derived
|
169
|
+
@_regexp = Regexp.new(pattern) unless @_regexp && @_regexp.source == pattern
|
170
|
+
@_regexp
|
171
|
+
end
|
221
172
|
|
222
|
-
|
223
|
-
|
224
|
-
|
173
|
+
def hash
|
174
|
+
[self.class, pattern].hash
|
175
|
+
end
|
225
176
|
|
226
|
-
|
227
|
-
|
177
|
+
def ==(o)
|
178
|
+
self.class == o.class && pattern == o.pattern
|
179
|
+
end
|
228
180
|
end
|
229
181
|
end
|
230
|
-
end
|
231
182
|
|
232
|
-
|
233
|
-
|
234
|
-
#
|
235
|
-
# @api public
|
236
|
-
class PPatternType < PScalarType
|
237
|
-
contains_many_uni 'patterns', PRegexpType
|
183
|
+
class PPatternType < PScalarType
|
184
|
+
module ClassModule
|
238
185
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
[self.class, Set.new(patterns)].hash
|
243
|
-
end
|
186
|
+
def hash
|
187
|
+
[self.class, Set.new(patterns)].hash
|
188
|
+
end
|
244
189
|
|
245
|
-
|
246
|
-
|
190
|
+
def ==(o)
|
191
|
+
self.class == o.class && Set.new(patterns) == Set.new(o.patterns)
|
192
|
+
end
|
247
193
|
end
|
248
194
|
end
|
249
|
-
end
|
250
|
-
|
251
|
-
# @api public
|
252
|
-
class PBooleanType < PScalarType
|
253
|
-
end
|
254
195
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
if f < t
|
268
|
-
[f, t]
|
269
|
-
else
|
270
|
-
[t,f]
|
196
|
+
class PCollectionType < PAnyType
|
197
|
+
module ClassModule
|
198
|
+
# Returns an array with from (min) size to (max) size
|
199
|
+
def size_range
|
200
|
+
return [0, INFINITY] if size_type.nil?
|
201
|
+
f = size_type.from || 0
|
202
|
+
t = size_type.to || INFINITY
|
203
|
+
if f < t
|
204
|
+
[f, t]
|
205
|
+
else
|
206
|
+
[t,f]
|
207
|
+
end
|
271
208
|
end
|
272
|
-
end
|
273
209
|
|
274
|
-
|
275
|
-
|
276
|
-
|
210
|
+
def hash
|
211
|
+
[self.class, element_type, size_type].hash
|
212
|
+
end
|
277
213
|
|
278
|
-
|
279
|
-
|
214
|
+
def ==(o)
|
215
|
+
self.class == o.class && element_type == o.element_type && size_type == o.size_type
|
216
|
+
end
|
280
217
|
end
|
281
218
|
end
|
282
|
-
end
|
283
|
-
|
284
|
-
class PStructElement < Puppet::Pops::Model::PopsObject
|
285
|
-
has_attr 'name', String, :lowerBound => 1
|
286
|
-
contains_one_uni 'type', PAbstractType
|
287
219
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
220
|
+
class PStructElement < TypeModelObject
|
221
|
+
module ClassModule
|
222
|
+
def hash
|
223
|
+
[self.class, type, name].hash
|
224
|
+
end
|
292
225
|
|
293
|
-
|
294
|
-
|
226
|
+
def ==(o)
|
227
|
+
self.class == o.class && type == o.type && name == o.name
|
228
|
+
end
|
295
229
|
end
|
296
230
|
end
|
297
|
-
end
|
298
231
|
|
299
|
-
# @api public
|
300
|
-
class PStructType < PObjectType
|
301
|
-
contains_many_uni 'elements', PStructElement, :lowerBound => 1
|
302
|
-
has_attr 'hashed_elements', Object, :derived => true
|
303
232
|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
233
|
+
class PStructType < PAnyType
|
234
|
+
module ClassModule
|
235
|
+
def hashed_elements_derived
|
236
|
+
@_hashed ||= elements.reduce({}) {|memo, e| memo[e.name] = e.type; memo }
|
237
|
+
@_hashed
|
238
|
+
end
|
309
239
|
|
310
|
-
|
311
|
-
|
312
|
-
|
240
|
+
def clear_hashed_elements
|
241
|
+
@_hashed = nil
|
242
|
+
end
|
313
243
|
|
314
|
-
|
315
|
-
|
316
|
-
|
244
|
+
def hash
|
245
|
+
[self.class, Set.new(elements)].hash
|
246
|
+
end
|
317
247
|
|
318
|
-
|
319
|
-
|
248
|
+
def ==(o)
|
249
|
+
self.class == o.class && hashed_elements == o.hashed_elements
|
250
|
+
end
|
320
251
|
end
|
321
252
|
end
|
322
|
-
end
|
323
253
|
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
module ClassModule
|
333
|
-
# Returns the number of elements accepted [min, max] in the tuple
|
334
|
-
def size_range
|
335
|
-
types_size = types.size
|
336
|
-
size_type.nil? ? [types_size, types_size] : size_type.range
|
337
|
-
end
|
254
|
+
class PTupleType < PAnyType
|
255
|
+
module ClassModule
|
256
|
+
# Returns the number of elements accepted [min, max] in the tuple
|
257
|
+
def size_range
|
258
|
+
types_size = types.size
|
259
|
+
size_type.nil? ? [types_size, types_size] : size_type.range
|
260
|
+
end
|
338
261
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
262
|
+
# Returns the number of accepted occurrences [min, max] of the last type in the tuple
|
263
|
+
# The defaults is [1,1]
|
264
|
+
#
|
265
|
+
def repeat_last_range
|
266
|
+
types_size = types.size
|
267
|
+
if size_type.nil?
|
268
|
+
return [1, 1]
|
269
|
+
end
|
270
|
+
from, to = size_type.range()
|
271
|
+
min = from - (types_size-1)
|
272
|
+
min = min <= 0 ? 0 : min
|
273
|
+
max = to - (types_size-1)
|
274
|
+
[min, max]
|
275
|
+
end
|
353
276
|
|
354
|
-
|
355
|
-
|
356
|
-
|
277
|
+
def hash
|
278
|
+
[self.class, size_type, Set.new(types)].hash
|
279
|
+
end
|
357
280
|
|
358
|
-
|
359
|
-
|
281
|
+
def ==(o)
|
282
|
+
self.class == o.class && types == o.types && size_type == o.size_type
|
283
|
+
end
|
360
284
|
end
|
361
285
|
end
|
362
|
-
end
|
363
|
-
|
364
|
-
class PCallableType < PObjectType
|
365
|
-
# Types of parameters and required/optional count
|
366
|
-
contains_one_uni 'param_types', PTupleType, :lowerBound => 1
|
367
286
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
# Returns the number of accepted arguments [min, max]
|
375
|
-
def size_range
|
376
|
-
param_types.size_range
|
377
|
-
end
|
287
|
+
class PCallableType < PAnyType
|
288
|
+
module ClassModule
|
289
|
+
# Returns the number of accepted arguments [min, max]
|
290
|
+
def size_range
|
291
|
+
param_types.size_range
|
292
|
+
end
|
378
293
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
294
|
+
# Returns the number of accepted arguments for the last parameter type [min, max]
|
295
|
+
#
|
296
|
+
def last_range
|
297
|
+
param_types.repeat_last_range
|
298
|
+
end
|
384
299
|
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
300
|
+
# Range [0,0], [0,1], or [1,1] for the block
|
301
|
+
#
|
302
|
+
def block_range
|
303
|
+
case block_type
|
304
|
+
when Puppet::Pops::Types::POptionalType
|
305
|
+
[0,1]
|
306
|
+
when Puppet::Pops::Types::PVariantType, Puppet::Pops::Types::PCallableType
|
307
|
+
[1,1]
|
308
|
+
else
|
309
|
+
[0,0]
|
310
|
+
end
|
395
311
|
end
|
396
|
-
end
|
397
312
|
|
398
|
-
|
399
|
-
|
400
|
-
|
313
|
+
def hash
|
314
|
+
[self.class, Set.new(param_types), block_type].hash
|
315
|
+
end
|
401
316
|
|
402
|
-
|
403
|
-
|
317
|
+
def ==(o)
|
318
|
+
self.class == o.class && args_type == o.args_type && block_type == o.block_type
|
319
|
+
end
|
404
320
|
end
|
405
321
|
end
|
406
|
-
end
|
407
322
|
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
end
|
323
|
+
class PArrayType < PCollectionType
|
324
|
+
module ClassModule
|
325
|
+
def hash
|
326
|
+
[self.class, self.element_type, self.size_type].hash
|
327
|
+
end
|
414
328
|
|
415
|
-
|
416
|
-
|
329
|
+
def ==(o)
|
330
|
+
self.class == o.class && self.element_type == o.element_type && self.size_type == o.size_type
|
331
|
+
end
|
417
332
|
end
|
418
333
|
end
|
419
|
-
end
|
420
334
|
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
[self.class, key_type, self.element_type, self.size_type].hash
|
427
|
-
end
|
335
|
+
class PHashType < PCollectionType
|
336
|
+
module ClassModule
|
337
|
+
def hash
|
338
|
+
[self.class, key_type, self.element_type, self.size_type].hash
|
339
|
+
end
|
428
340
|
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
341
|
+
def ==(o)
|
342
|
+
self.class == o.class &&
|
343
|
+
key_type == o.key_type &&
|
344
|
+
self.element_type == o.element_type &&
|
345
|
+
self.size_type == o.size_type
|
346
|
+
end
|
434
347
|
end
|
435
348
|
end
|
436
|
-
end
|
437
349
|
|
438
|
-
# @api public
|
439
|
-
class PRubyType < PObjectType
|
440
|
-
has_attr 'ruby_class', String
|
441
|
-
module ClassModule
|
442
|
-
def hash
|
443
|
-
[self.class, ruby_class].hash
|
444
|
-
end
|
445
350
|
|
446
|
-
|
447
|
-
|
351
|
+
class PRuntimeType < PAnyType
|
352
|
+
module ClassModule
|
353
|
+
def hash
|
354
|
+
[self.class, runtime, runtime_type_name].hash
|
355
|
+
end
|
356
|
+
|
357
|
+
def ==(o)
|
358
|
+
self.class == o.class && runtime == o.runtime && runtime_type_name == o.runtime_type_name
|
359
|
+
end
|
448
360
|
end
|
449
361
|
end
|
450
|
-
end
|
451
|
-
|
452
|
-
# Abstract representation of a type that can be placed in a Catalog.
|
453
|
-
# @api public
|
454
|
-
#
|
455
|
-
class PCatalogEntryType < PObjectType
|
456
|
-
end
|
457
362
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
[self.class, class_name].hash
|
467
|
-
end
|
468
|
-
def ==(o)
|
469
|
-
self.class == o.class && class_name == o.class_name
|
363
|
+
class PHostClassType < PCatalogEntryType
|
364
|
+
module ClassModule
|
365
|
+
def hash
|
366
|
+
[self.class, class_name].hash
|
367
|
+
end
|
368
|
+
def ==(o)
|
369
|
+
self.class == o.class && class_name == o.class_name
|
370
|
+
end
|
470
371
|
end
|
471
372
|
end
|
472
|
-
end
|
473
373
|
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
[self.class, type_name, title].hash
|
483
|
-
end
|
484
|
-
def ==(o)
|
485
|
-
self.class == o.class && type_name == o.type_name && title == o.title
|
374
|
+
class PResourceType < PCatalogEntryType
|
375
|
+
module ClassModule
|
376
|
+
def hash
|
377
|
+
[self.class, type_name, title].hash
|
378
|
+
end
|
379
|
+
def ==(o)
|
380
|
+
self.class == o.class && type_name == o.type_name && title == o.title
|
381
|
+
end
|
486
382
|
end
|
487
383
|
end
|
488
|
-
end
|
489
384
|
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
module ClassModule
|
496
|
-
def hash
|
497
|
-
[self.class, optional_type].hash
|
498
|
-
end
|
385
|
+
class POptionalType < PAnyType
|
386
|
+
module ClassModule
|
387
|
+
def hash
|
388
|
+
[self.class, optional_type].hash
|
389
|
+
end
|
499
390
|
|
500
|
-
|
501
|
-
|
391
|
+
def ==(o)
|
392
|
+
self.class == o.class && optional_type == o.optional_type
|
393
|
+
end
|
502
394
|
end
|
503
395
|
end
|
504
396
|
end
|
505
|
-
|
506
397
|
end
|